diff --git a/package.json b/package.json index ea15004..446bfbf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "opex", - "version": "v1.0.0-beta.1", + "version": "v1.0.0-beta.2", "homepage": "", "private": true, "dependencies": { diff --git a/public/assets/locales/en/translation.json b/public/assets/locales/en/translation.json index 721a0dd..f56ebd6 100644 --- a/public/assets/locales/en/translation.json +++ b/public/assets/locales/en/translation.json @@ -234,6 +234,7 @@ "title": "Deposit / Withdraw", "success": "The Address is copied.", "copy": "Copied!", + "paste": "Pasted!", "IRTAllowable": "The minimum amount must be {{min}} IRT and the maximum {{max}} IRT.", "emptyInput": "Enter the required value.", "IRTText": "The invoice with the amount of {{amount}} IRT is created on {{date}}, {{time}. you will be directed to the payment portal through the green button below. To create a new invoice, pay or cancel the previous invoice.", @@ -272,7 +273,8 @@ "13007": "Unknown Error" }, "DepositWithdrawTx": { - "title": "Transactions", + "title": "Deposit / Withdraw Transactions", + "transactions": "Transactions", "depositWithdrawal": "Deposit / Withdrawal", "withdrawalSend": "Withdrawal / Send", "transactionType": "Transaction Type", @@ -359,8 +361,8 @@ "birthdayJ": "Date of birth (Hijri)", "birthday": "Date of birth", "nationalId": "National ID", - "idNumber": "National ID / Passport Number", - "idNumberPlaceHolder": "Enter National ID or Passport Number", + "idNumber": "ID / Passport", + "idNumberPlaceHolder": "National ID or Passport Number", "passportNumber": "Passport Number", "mobile": "Phone Number", "telephone": "Telephone", @@ -368,7 +370,10 @@ "postalCode": "Postal Code", "address": "Address", "selectNationality": "Select your nationality", - "selectResidence": "Select your country of residence" + "selectResidence": "Select your country of residence", + "select": "Select", + "noKYC": "Authentication is not done, after authentication and confirmation by an expert, your personal information will be displayed.", + "doKYC": "Authentication" }, "LoginReports": { "title": "Login Reports" @@ -612,7 +617,7 @@ }, "ImageInput": { "title": "", - "dropText": "Upload by drag and drop / browsing.", + "dropText": "Browsing.", "iconErrorText": "The uploaded photo is not valid, please try again!", "fileTooLarge": "The uploaded file size is larger than the maximum allowed!", "fileInvalidType": "Uploaded file format is not acceptable!", diff --git a/public/assets/locales/fa/translation.json b/public/assets/locales/fa/translation.json index 7f64442..9a36380 100644 --- a/public/assets/locales/fa/translation.json +++ b/public/assets/locales/fa/translation.json @@ -48,7 +48,7 @@ "improperMobileView ": "فعلاً برای موبایل بهینه نشده است.", "home": "صفحه‌اصلی", "country": { - "iran" : "جمهوری اسلامی ایران", + "iran" : "ایران", "germany" : "آلمان", "uk": "انگلستان", "turkey" : "ترکیه" @@ -234,6 +234,7 @@ "title": "واریز/برداشت", "success": "آدرس کپی شد", "copy": "کپی شد", + "paste": "paste شد", "IRTAllowable": "مقدار حداقل باید {{min}} تومان و حداکثر {{max}} تومان باشد.", "emptyInput": "وارد کردن مقدار الزامی است.", "IRTText": "صورتحساب با مبلغ {{amount}} تومان در تاریخ {{date}} ، ساعت {{time}} ایجاد شده است. از طریق دکمه سبز رنگ زیر به درگاه پرداخت هدایت می شوید. برای ایجاد صورتحساب جدید، صورتحساب قبلی را پرداخت و یا لغو کنید.", @@ -272,7 +273,8 @@ "13007": "خطای ناشناخته" }, "DepositWithdrawTx": { - "title": "تراکنش‌ها", + "title": "تراکنش‌های واریز / برداشت", + "transactions": "تراکنش‌ها", "depositWithdrawal": "واریز / دریافت", "withdrawalSend": "برداشت / ارسال", "transactionType": "نوع تراکنش", @@ -359,8 +361,8 @@ "birthdayJ": "تاریخ تولد (شمسی)", "birthday": "تاریخ تولد", "nationalId": "شناسه ملی", - "idNumber": "شتاسه ملی / شماره پاسپورت", - "idNumberPlaceHolder": "شناسه ملی یا شماره پاسپورت را وارد کنید.", + "idNumber": "ش ‌ملی / ش ‌پاسپورت", + "idNumberPlaceHolder": "شناسه ملی یا شماره پاسپورت", "passportNumber": "شماره پاسپورت", "mobile": "تلفن همراه", "telephone": "تلفن ثابت", @@ -368,7 +370,10 @@ "postalCode": "کد پستی", "address": "آدرس", "selectNationality": "ملیت خود را انتخاب کنید", - "selectResidence": "کشور محل اقامت خود را انتخاب کنید" + "selectResidence": "کشور محل اقامت خود را انتخاب کنید", + "select": "انتخاب کنید", + "noKYC": "احراز هویت انجام نشده، بعد از انجام مراحل احراز هویت و تائید توسط کارشناس، مشخصات فردی شما نمایش داده می‌شود.", + "doKYC": "احراز هویت" }, "LoginReports": { "title": "گزارش ورودها" @@ -415,7 +420,7 @@ "initialCodeError": "کد وارد شده صحیح نیست.", "serverError": "خطا در سرور، لطفاً دوباره تلاش کنید.", "description": "در صورت فعال‌سازی ورود دو مرحله‌ای، برای هر بار ورود به پنل کاربری، رمز دو مرحله‌ای درخواست می‌شود.", - "QRdescription": "پس از اسکن کد QR رو به رو با نرم افزار Google Authenticator (یا نرم افزار مشابه) عدد 6 رقمی درج شده را وارد و ثبت کنید ." + "QRdescription": "پس از اسکن کد QR با نرم افزار Google Authenticator (یا نرم افزار مشابه) عدد 6 رقمی درج شده را وارد و ثبت کنید ." }, "HelpStep": { "title": "گام 1 از 4: راهنمای کاربر", @@ -612,7 +617,7 @@ }, "ImageInput": { "title": "", - "dropText": "را با کشیدن روی کادر یا کلیک کردن و انتخاب فایل آپلود کنید!", + "dropText": "را با کلیک کردن و انتخاب فایل آپلود کنید!", "iconErrorText": "عکس آپلود شده معتبر نیست، لطفاً دوباره تلاش کنید!", "fileTooLarge": "حجم فایل آپلود شده بیشتر از حد مجاز است!", "fileInvalidType": "فرمت فایل آپلود شده قابل قبول نیست!", diff --git a/src/assets/fontIcon/opex-icon/config.json b/src/assets/fontIcon/opex-icon/config.json index 6a22ec0..61b290f 100644 --- a/src/assets/fontIcon/opex-icon/config.json +++ b/src/assets/fontIcon/opex-icon/config.json @@ -93,7 +93,7 @@ { "uid": "2024cb58e2a35b1bb549467fb4618438", "css": "market", - "code": 276, + "code": 59392, "src": "custom_icons", "selected": true, "svg": { @@ -107,7 +107,7 @@ { "uid": "3e2cd4960f72717f28a8adfef6364788", "css": "settings", - "code": 277, + "code": 59394, "src": "custom_icons", "selected": true, "svg": { @@ -121,7 +121,7 @@ { "uid": "57c35c594cab578b05232e7326818893", "css": "wallet", - "code": 278, + "code": 59395, "src": "custom_icons", "selected": true, "svg": { @@ -135,7 +135,7 @@ { "uid": "5f473048f9dccfdeeb0a8c2cce255ed0", "css": "account", - "code": 279, + "code": 59396, "src": "custom_icons", "selected": true, "svg": { @@ -149,7 +149,7 @@ { "uid": "af84a042558ed5b4dffd064d17ccc8d4", "css": "counting", - "code": 280, + "code": 59397, "src": "custom_icons", "selected": true, "svg": { @@ -163,7 +163,7 @@ { "uid": "7158cc9d7caec04c93b1d2dcd398a09e", "css": "messages", - "code": 281, + "code": 59398, "src": "custom_icons", "selected": true, "svg": { @@ -207,7 +207,7 @@ { "uid": "e58bd0331afbe67823bcc370f1345030", "css": "messages-dotted", - "code": 293, + "code": 59399, "src": "custom_icons", "selected": true, "svg": { @@ -221,7 +221,7 @@ { "uid": "7015ef829a0e4c45836de3481a27ba88", "css": "safe", - "code": 294, + "code": 59400, "src": "custom_icons", "selected": true, "svg": { @@ -367,7 +367,7 @@ { "uid": "affac98d4404b941ea0b52920490eaf9", "css": "filter", - "code": 329, + "code": 59401, "src": "custom_icons", "selected": true, "svg": { @@ -381,7 +381,7 @@ { "uid": "78e5981609da095794b5eaefa6ff5a17", "css": "filternfilled", - "code": 336, + "code": 59402, "src": "custom_icons", "selected": true, "svg": { @@ -395,7 +395,7 @@ { "uid": "7cd08a0191c80f4f7281fabefcd3f38a", "css": "microsoft_excel", - "code": 337, + "code": 59403, "src": "custom_icons", "selected": true, "svg": { @@ -409,7 +409,7 @@ { "uid": "2ce7c643a54b992300e0c9db2070a451", "css": "clear-filters", - "code": 338, + "code": 59404, "src": "custom_icons", "selected": true, "svg": { @@ -423,7 +423,7 @@ { "uid": "b10ee7faf62200708dad45464be5275b", "css": "clock", - "code": 339, + "code": 59405, "src": "custom_icons", "selected": true, "svg": { @@ -443,7 +443,7 @@ { "uid": "f25d2aa5890176ddcf4bdbfaa75fee59", "css": "copy", - "code": 341, + "code": 59406, "src": "custom_icons", "selected": true, "svg": { @@ -481,7 +481,7 @@ { "uid": "dc4e0d236b28459de8c40249ed26506b", "css": "menu_vertical", - "code": 352, + "code": 59407, "src": "custom_icons", "selected": true, "svg": { @@ -494,7 +494,7 @@ }, { "uid": "c759418c008e9562944080fee617fc76", - "css": "cancel-circled", + "css": "cancel-circled-1", "code": 353, "src": "entypo" }, @@ -518,7 +518,7 @@ }, { "uid": "fd32deda7b2f5b8cad46d13897c19ae8", - "css": "cancel-circled-1", + "css": "cancel-circled-2", "code": 357, "src": "elusive" }, @@ -531,7 +531,7 @@ { "uid": "2440ec2e44bbfa7c3d696c53543d865f", "css": "profilesetting", - "code": 359, + "code": 59408, "src": "custom_icons", "selected": true, "svg": { @@ -545,7 +545,7 @@ { "uid": "f17e55a89d8e6c7804732b435cd8f69a", "css": "protectsetting", - "code": 360, + "code": 59409, "src": "custom_icons", "selected": true, "svg": { @@ -559,7 +559,7 @@ { "uid": "49ff8e798bc41a38766f09c4c8ba58bc", "css": "verifiedsetting", - "code": 361, + "code": 59410, "src": "custom_icons", "selected": true, "svg": { @@ -573,7 +573,7 @@ { "uid": "8ab825bbe33acb11323ede56e5a17622", "css": "fileSubsetting", - "code": 368, + "code": 59411, "src": "custom_icons", "selected": true, "svg": { @@ -587,7 +587,7 @@ { "uid": "f2689acbd9acb87e456ad6f686a1776d", "css": "closed_eye", - "code": 369, + "code": 59412, "src": "custom_icons", "selected": true, "svg": { @@ -601,7 +601,7 @@ { "uid": "b3be87ef091a22dbb2d340daa3b7bdfd", "css": "eye-1", - "code": 370, + "code": 59413, "src": "custom_icons", "selected": true, "svg": { @@ -621,7 +621,7 @@ { "uid": "5fb75886bd5e3493ae829cc13e2aec30", "css": "lasttrades", - "code": 372, + "code": 59414, "src": "custom_icons", "selected": true, "svg": { @@ -635,7 +635,7 @@ { "uid": "273cb2e99ec75fe0d9e07cf8e1d59a80", "css": "myorder", - "code": 373, + "code": 59415, "src": "custom_icons", "selected": true, "svg": { @@ -649,7 +649,7 @@ { "uid": "f3a25c15b824c9c013d83d93eb386903", "css": "order", - "code": 374, + "code": 59416, "src": "custom_icons", "selected": true, "svg": { @@ -663,7 +663,7 @@ { "uid": "8ffd20eda0db130db78ce8db12f196d2", "css": "orderbook", - "code": 375, + "code": 59417, "src": "custom_icons", "selected": true, "svg": { @@ -677,7 +677,7 @@ { "uid": "9c085ed0b85e051760293684d409abc9", "css": "overview", - "code": 376, + "code": 59418, "src": "custom_icons", "selected": true, "svg": { @@ -799,7 +799,7 @@ { "uid": "fd4ae29065ce7784e2eeda47a44a1586", "css": "op-06", - "code": 407, + "code": 59419, "src": "custom_icons", "selected": true, "svg": { @@ -813,7 +813,7 @@ { "uid": "30ed06dbd39cdff4f2ec99203bba6c11", "css": "op-05", - "code": 408, + "code": 59420, "src": "custom_icons", "selected": true, "svg": { @@ -827,7 +827,7 @@ { "uid": "271610d96cdc90b4a4d6188fdae3f72c", "css": "op-04", - "code": 409, + "code": 59421, "src": "custom_icons", "selected": true, "svg": { @@ -841,7 +841,7 @@ { "uid": "311e4b432d7d1fd49b029a83e6996598", "css": "op-02", - "code": 512, + "code": 59422, "src": "custom_icons", "selected": true, "svg": { @@ -855,7 +855,7 @@ { "uid": "c3e63f06b3288063f40219b747a6ebf9", "css": "op-03", - "code": 513, + "code": 59423, "src": "custom_icons", "selected": true, "svg": { @@ -881,7 +881,7 @@ { "uid": "834d008d1a1cdaea839af107ee1a9f33", "css": "row", - "code": 516, + "code": 59424, "src": "custom_icons", "selected": true, "svg": { @@ -895,7 +895,7 @@ { "uid": "66a84072782d7cd42d7e9d064e5becab", "css": "grid", - "code": 517, + "code": 59425, "src": "custom_icons", "selected": true, "svg": { @@ -935,6 +935,250 @@ "css": "play", "code": 528, "src": "typicons" + }, + { + "uid": "b429436ec5a518c78479d44ef18dbd60", + "css": "paste", + "code": 529, + "src": "fontawesome" + }, + { + "uid": "fd06f2012b096dcd763a27a72b8040ba", + "css": "shield-lock-black-icon", + "code": 530, + "src": "custom_icons", + "selected": true, + "svg": { + "path": "M454.8 1000C161.1 892.6-12.2 629.8 0.8 139.1 155.4 147.3 306.8 113.9 453.2 0 622.5 107.4 776.2 158.7 907.2 146.5 930.8 611.1 759.2 885.3 454.8 1000ZM592.4 414.2H578.5V382.4C578.5 347.4 564.7 315.7 542.7 292.1 519.9 268.5 489.8 254.7 455.7 254.7 421.5 254.7 390.6 269.3 368.6 292.1 346.6 315.7 332.8 347.4 332.8 382.4V414.2H319C307.6 414.2 298.6 423.1 298.6 434.5V646.9C298.6 658.3 307.6 667.2 319 667.2H593.2C604.6 667.2 613.5 658.3 613.5 646.9V434.5C611.9 423.9 602.9 414.2 592.4 414.2ZM493.1 611.9H416.6L438.6 554.9C424.7 548.4 415.8 534.6 415.8 519.1 415.8 497.2 433.7 479.3 455.7 479.3 477.6 479.3 495.5 497.2 495.5 519.1 495.5 534.6 486.6 547.6 474.4 554.1L493.1 611.9ZM540.3 414.2H369.4V382.4C369.4 357.2 379.2 335.2 394.6 319 410.1 302.7 431.2 292.9 454.8 292.9 478.4 292.9 499.6 302.7 515.1 319 530.5 335.2 540.3 358 540.3 382.4V414.2Z", + "width": 910 + }, + "search": [ + "shield-lock-black-icon" + ] + }, + { + "uid": "6e6377e106c89f4bd0b5c23160b3dc3a", + "css": "shield-lock-black-icon-1", + "code": 531, + "src": "custom_icons", + "selected": true, + "svg": { + "path": "M453.4 0C623.1 107.5 776.3 158.4 907.9 146.4 930.8 611.1 759.2 885.5 455.2 1000 161.5 892.8-12.2 630.2 0.7 139.3 155.1 147.4 306.6 114 453.4 0L453.4 0ZM337.4 459.9H349.1V432.8C349.1 402.7 360.9 375.4 380 355.5 399.2 335.5 425.7 323 455 323S510.8 335.5 530 355.5C549 375.4 560.9 402.7 560.9 432.8V459.9H572.6C582.1 459.9 589.8 467.6 589.8 477.1V659.7C589.8 669.2 582.1 677 572.6 677H337.4C327.9 677 320.1 669.2 320.1 659.7V477.1C320.1 467.6 327.9 459.9 337.4 459.9L337.4 459.9ZM440.8 580.1L422.1 629H487.8L470.5 579.5C481.5 573.8 489 562.4 489 549.2 489 530.4 473.7 515.2 455 515.2S421 530.4 421 549.2C421 562.9 429.1 574.7 440.8 580.1L440.8 580.1ZM381.8 459.9H528.1V432.8C528.1 411.4 519.8 392.1 506.4 378.1 493.2 364.3 475 355.7 455 355.7 435 355.7 416.7 364.3 403.5 378.1 390.1 392.1 381.8 411.4 381.8 432.8V459.9L381.8 459.9Z", + "width": 910 + }, + "search": [ + "shield-lock-black-icon" + ] + }, + { + "uid": "484b9143995ad1d65f05c48e1508a23b", + "css": "user-clipboard-icon", + "code": 532, + "src": "custom_icons", + "selected": true, + "svg": { + "path": "M55.1 104.3H187.3V189.8H130.3C104.9 189.8 83.8 210.9 83.8 236.3V874.6C83.8 900.1 104.7 921.1 130.3 921.1H698.4C724 921.1 744.9 900.1 744.9 874.6V236.3C744.9 210.7 723.8 189.8 698.4 189.8H641.4V104.3H773.6C803.9 104.3 828.7 129.3 828.7 159.4V944.9C828.7 975.1 803.8 1000 773.6 1000H55.1C24.9 1000 0 975.2 0 944.9V159.4C0 129.1 24.8 104.3 55.1 104.3ZM414.3 741.6H217.4C214.2 741.6 211.6 739 211.6 735.8 211.6 734.1 211.8 732.5 212.3 730.9 221.6 657 259.8 655.6 300.9 644.9 313.2 641.7 335.6 634.9 348.7 623.4 355.8 617.1 360.2 609.4 358.5 600.1 348.5 590.9 340.9 581 339.2 562L338 562C335.2 562 332.6 561.3 330.1 559.9 324.6 556.8 321.6 550.8 320.1 544 318.3 535.4 318.9 525.2 319.8 518.7L320.1 517.4C322.1 512.1 324.4 509.2 327.4 508L327.5 507.9C326.1 482.3 330.5 441.6 304.1 433.6 356.1 369.3 416.1 334.4 461.2 391.6 511.4 394.2 533.7 468.2 502.6 508H501.3C504.3 509.2 506.6 512.1 508.6 517.4L508.9 518.7C509.8 525.2 510.4 535.4 508.6 544 507.1 550.8 504.1 556.8 498.6 559.9 496.1 561.3 493.5 562 490.7 562L489.5 562C487.8 581 480.2 590.9 470.2 600.1 468.5 609.4 472.9 617.1 480 623.4 493.1 634.9 515.5 641.7 527.8 644.9 568.9 655.6 607.1 657 616.4 730.9 616.8 732.5 617.1 734.1 617.1 735.8 617.1 739 614.5 741.6 611.3 741.6H414.3ZM263.7 77H326.2C331.5 33.6 366.5 0 409 0 451.2 0 486.1 33.1 491.8 76.1L564.9 77C570 77 574.1 81.1 574.1 86.2V211C574.1 216 570 220.2 564.9 220.2H263.8C258.8 220.2 254.6 216 254.6 211V86.2C254.5 81.1 258.6 77 263.7 77ZM374.8 114.8C380.5 122.5 388.5 130.1 397.1 134.1 404.1 136.2 411.7 136.4 418.9 134.4 430 129.3 440.2 117.1 444.9 106.8 445.4 103.9 445.8 100.9 445.8 97.6 445.8 75.8 429.1 58.2 408.6 58.2 388 58.2 371.3 75.8 371.3 97.6 371.4 104.1 372.6 110 374.8 114.8Z", + "width": 829 + }, + "search": [ + "user-clipboard-icon" + ] + }, + { + "uid": "46b1ec984aac914c267721fe654a4d12", + "css": "privacy-icon", + "code": 533, + "src": "custom_icons", + "selected": true, + "svg": { + "path": "M453.4 0C623.1 107.5 776.3 158.4 907.9 146.4 915 291.3 903.3 417.7 874.5 526.5 854.9 518.6 834.1 513.8 812.6 512.9 835.2 422.9 844.3 319.1 838.4 200.6 727 210.8 597.3 167.8 453.6 76.7 329.3 173.2 201.1 201.5 70.4 194.7 64.6 415.5 103.4 581.7 178.3 702.7 233.7 656.3 328.1 663.3 372.8 601.9 376 597.1 377.5 594.6 377.5 592.5 377.4 591.4 329 532 324.6 525 313.2 506.9 291.8 482.2 291.8 460.9 291.8 448.9 301.3 433.3 314.9 429.8 313.8 411.8 313.1 393.5 313.1 375.4 313.1 364.7 313.3 353.9 313.7 343.3 314.3 336.6 315.5 333.7 317.3 327.2A114.3 114.3 0 0 1 368.3 262.4C376.9 256.9 386.4 252.7 396 249.2 413.5 242.8 405 215.2 424.2 214.7 469.1 213.6 543 252.8 571.7 284 590.1 304.3 600.5 326.8 601.1 354.1L599.3 432.8C607.3 434.7 616.2 440.9 618.2 448.9 624.3 473.7 598.6 504.6 586.6 524.4 575.6 542.6 533.4 592.3 533.3 592.7 533.1 594.8 534.2 597.5 537.1 601.9 557.7 630.1 588.7 643.9 621.7 655.1 618 668.2 615.7 681.7 614.8 695.6 611.3 698 608.1 700.6 605.2 703.6L605 703.8C591.9 717 583.7 735.1 583.7 755.1V937C544 961.7 501.1 982.7 455.2 1000 161.5 892.8-12.2 630.2 0.7 139.3 155.1 147.4 306.6 114 453.4 0ZM659.7 733.2H667.3V709.9C667.3 670.9 682.6 635.4 707.4 609.6 732.4 583.5 766.8 567.4 804.8 567.4S877.2 583.5 902.2 609.6C927 635.4 942.3 670.9 942.3 709.9V733.2H949.9C962.2 733.2 972.3 743.3 972.3 755.7V977.5C972.3 989.9 962.2 1000 949.9 1000H659.7C647.3 1000 637.3 989.9 637.3 977.5V755.7C637.2 743.3 647.3 733.2 659.7 733.2ZM787 876.7L763.7 937.9H845.9L824.3 875.9C838 868.8 847.4 854.5 847.4 838 847.4 814.4 828.3 795.4 804.8 795.4 781.2 795.4 762.2 814.4 762.2 838 762.2 855.1 772.3 869.9 787 876.7ZM709.7 733.2H899.8V709.9C899.8 682.2 889 657.1 871.6 638.9 854.4 621 830.8 609.9 804.8 609.9 778.8 609.9 755.1 621 737.9 638.9 720.5 657.1 709.7 682.2 709.7 709.9V733.2Z", + "width": 972 + }, + "search": [ + "privacy-icon" + ] + }, + { + "uid": "1ae294767213e5b165e75f217594a9da", + "css": "file-user-icon", + "code": 534, + "src": "custom_icons", + "selected": true, + "svg": { + "path": "M634.5 546.4C697 546.4 753.6 571.8 794.7 612.8 835.9 653.9 861.3 710.6 861.3 773.2 861.3 835.8 835.9 892.5 794.9 933.6L792.3 935.9C751.4 975.6 695.8 1000 634.5 1000 571.9 1000 515.2 974.6 474.1 933.6 433.1 892.5 407.7 835.8 407.7 773.2S433.1 653.9 474.1 612.8C515.2 571.8 571.9 546.4 634.5 546.4ZM474.8 74.4V180.2C476.7 205.4 485.5 225.3 501 238.5 517 252.2 541 259.9 572.7 260.4L646.7 260.3 474.8 74.4ZM652.9 309.7L572.3 309.6C528.4 308.9 493.8 297.1 469 275.9 443.1 253.9 428.6 222.5 425.6 183.7L425.4 180.3V49.4H122.8C102.6 49.4 84.2 57.7 70.9 70.9 57.7 84.2 49.4 102.6 49.4 122.8V780C49.4 800.1 57.7 818.5 71 831.8 84.3 845 102.7 853.3 122.8 853.3H356C361 870.5 367.5 887 375.4 902.7H122.8C89 902.7 58.3 888.9 36.1 866.7 13.8 844.4 0 813.7 0 780V122.8C0 89.1 13.8 58.4 36 36.2 58.4 13.8 89.1 0 122.8 0H462.4C470.4 0 477.5 3.8 482.1 9.8L695.7 240.9C700.1 245.6 702.2 251.6 702.2 257.6L702.3 491.4C686.3 487.6 669.8 485.1 652.9 484V309.7ZM204.2 416.1C190.6 416.1 179.5 405.1 179.5 391.4 179.5 377.8 190.6 366.7 204.2 366.7H498.1C511.8 366.7 522.8 377.8 522.8 391.4 522.8 405.1 511.8 416.1 498.1 416.1H204.2ZM204.2 557.3C190.6 557.3 179.5 546.3 179.5 532.6 179.5 519 190.6 507.9 204.2 507.9H482.6C489.8 507.9 496.3 511.1 500.9 516A291.1 291.1 0 0 0 441.2 557.3H204.2ZM204.2 698.5C190.6 698.5 179.5 687.5 179.5 673.8 179.5 660.2 190.6 649.1 204.2 649.1H372.6C365.1 664.9 359 681.4 354.4 698.5H204.2ZM578.8 725.5C579 720.7 582.1 716.5 586.7 714.9 586.1 705.7 585 691.8 587.5 682.9 590.4 673.7 596.6 665.8 605 660.8 607.9 659 611.1 657.5 614.4 656.3 620.4 654.2 617.4 644.1 624 643.9 639.3 643.5 664.6 657.6 674.4 668.2 680.6 675.1 684.2 684.1 684.4 693.4L683.8 715.9C686.7 716.5 689.2 718.6 690.2 721.4 693.5 734.6 661.3 765.9 661.3 769.2 661.3 770.4 661.8 771.5 662.6 772.4 684.9 803.1 745.2 789.4 745.2 850.5H523.8C523.8 789.4 584.1 803.1 606.4 772.4 607.5 770.8 608 769.9 608 769.2 608 766.2 578.8 736.3 578.8 725.5Z", + "width": 861 + }, + "search": [ + "file-user-icon" + ] + }, + { + "uid": "eece75fd4ec68d0fd092e7bff2f93077", + "css": "task-user-icon", + "code": 535, + "src": "custom_icons", + "selected": true, + "svg": { + "path": "M181.8 77H271.9C277.2 33.6 312.3 0 354.8 0 397 0 431.9 33.1 437.5 76.1L528.9 77C534 77 538.1 81.1 538.1 86.2V187.5C538.1 192.6 534 196.7 528.9 196.7H181.9C176.9 196.7 172.7 192.6 172.7 187.5V86.2A9.1 9.1 0 0 1 181.8 77ZM615.6 593.4C727.9 593.4 818.9 684.4 818.9 796.7 818.9 909 727.8 1000 615.6 1000 503.3 1000 412.3 908.9 412.3 796.7 412.3 684.4 503.3 593.4 615.6 593.4ZM566.8 754.9A10.3 10.3 0 0 1 573.7 745.5C573.2 737.5 572.2 725.4 574.5 717.6A34.2 34.2 0 0 1 589.7 698.2C592.3 696.6 595.1 695.3 598 694.3 603.2 692.3 600.6 683.5 606.4 683.4 619.8 683.1 641.9 695.4 650.5 704.7 656 710.8 659.1 718.6 659.3 726.8L658.7 746.5C661.3 747 663.5 748.8 664.4 751.3 667.3 762.9 639 790.2 639 793.2 639.1 794.2 639.5 795.1 640.2 795.9 659.7 822.8 712.5 810.8 712.5 864.3L518.6 864.4C518.6 810.8 571.4 822.8 591 795.9 592 794.5 592.4 793.7 592.4 793.1 592.4 790.5 566.8 764.3 566.8 754.9ZM81.6 115.9H128.3V163.5H81.6C72.2 163.5 63.7 167.3 57.6 173.5 51.5 179.6 47.6 188.1 47.6 197.4V814C47.6 823.3 51.5 831.8 57.6 837.9 63.8 844.1 72.3 847.9 81.6 847.9H360.3C363.6 864.4 368.4 880.4 374.7 895.6H81.6C59.2 895.6 38.8 886.4 24 871.6 9.2 856.9 0 836.4 0 814V197.4C0 174.9 9.2 154.6 23.9 139.8 38.7 125 59.1 115.9 81.6 115.9ZM663.1 540.6V197.4C663.1 188.1 659.2 179.6 653.1 173.4A33.9 33.9 0 0 0 629.2 163.5H582.4V115.9H629.2C651.5 115.9 671.9 125.1 686.6 139.8 701.5 154.7 710.7 175.1 710.7 197.4V554.3C695.5 548.3 679.5 543.7 663.1 540.6ZM259 524.9C245.1 524.9 233.8 513.6 233.8 499.6S245.1 474.4 259 474.4H538.1C552.1 474.4 563.4 485.7 563.4 499.6S552.1 524.9 538.1 524.9H259ZM174.9 471.4C190.5 471.4 203.1 484.1 203.1 499.6 203.1 515.2 190.5 527.9 174.9 527.9 159.3 527.9 146.7 515.2 146.7 499.6 146.7 484.1 159.3 471.4 174.9 471.4ZM174.9 625.1C190.5 625.1 203.1 637.7 203.1 653.3 203.1 668.9 190.5 681.5 174.9 681.5 159.3 681.5 146.7 668.9 146.7 653.3 146.7 637.7 159.3 625.1 174.9 625.1ZM259 678.5C245.1 678.5 233.8 667.2 233.8 653.3S245.1 628 259 628H417.3A261.7 261.7 0 0 0 383.5 678.5H259ZM174.9 317.8C190.5 317.8 203.1 330.4 203.1 346 203.1 361.6 190.5 374.2 174.9 374.2 159.3 374.2 146.7 361.6 146.7 346 146.7 330.4 159.3 317.8 174.9 317.8ZM259 371.3C245.1 371.3 233.8 359.9 233.8 346 233.8 332 245.1 320.7 259 320.7H538.1C552.1 320.7 563.4 332 563.4 346 563.4 359.9 552.1 371.3 538.1 371.3H259ZM353.8 39.4C377.8 39.4 397.3 58.9 397.3 82.9 397.3 106.9 377.8 126.4 353.8 126.4S310.3 106.9 310.3 82.9C310.3 58.9 329.8 39.4 353.8 39.4Z", + "width": 819 + }, + "search": [ + "task-user-icon" + ] + }, + { + "uid": "b7d7a2eaf4f80991226e55feff7cc0a0", + "css": "privacy-icon-1", + "code": 536, + "src": "custom_icons", + "selected": true, + "svg": { + "path": "M453.4 0C623.1 107.5 776.3 158.4 907.9 146.4 915 291.3 903.3 417.7 874.5 526.5 854.9 518.6 834.1 513.8 812.6 512.9 835.2 422.9 844.3 319.1 838.4 200.6 727 210.8 597.3 167.8 453.6 76.7 329.3 173.2 201.1 201.5 70.4 194.7 64.6 415.5 103.4 581.7 178.3 702.7 233.7 656.3 328.1 663.3 372.8 601.9 376 597.1 377.5 594.6 377.5 592.5 377.4 591.4 329 532 324.6 525 313.2 506.9 291.8 482.2 291.8 460.9 291.8 448.9 301.3 433.3 314.9 429.8 313.8 411.8 313.1 393.5 313.1 375.4 313.1 364.7 313.3 353.9 313.7 343.3 314.3 336.6 315.5 333.7 317.3 327.2A114.3 114.3 0 0 1 368.3 262.4C376.9 256.9 386.4 252.7 396 249.2 413.5 242.8 405 215.2 424.2 214.7 469.1 213.6 543 252.8 571.7 284 590.1 304.3 600.5 326.8 601.1 354.1L599.3 432.8C607.3 434.7 616.2 440.9 618.2 448.9 624.3 473.7 598.6 504.6 586.6 524.4 575.6 542.6 533.4 592.3 533.3 592.7 533.1 594.8 534.2 597.5 537.1 601.9 557.7 630.1 588.7 643.9 621.7 655.1 618 668.2 615.7 681.7 614.8 695.6 611.3 698 608.1 700.6 605.2 703.6L605 703.8C591.9 717 583.7 735.1 583.7 755.1V937C544 961.7 501.1 982.7 455.2 1000 161.5 892.8-12.2 630.2 0.7 139.3 155.1 147.4 306.6 114 453.4 0ZM659.7 733.2H667.3V709.9C667.3 670.9 682.6 635.4 707.4 609.6 732.4 583.5 766.8 567.4 804.8 567.4S877.2 583.5 902.2 609.6C927 635.4 942.3 670.9 942.3 709.9V733.2H949.9C962.2 733.2 972.3 743.3 972.3 755.7V977.5C972.3 989.9 962.2 1000 949.9 1000H659.7C647.3 1000 637.3 989.9 637.3 977.5V755.7C637.2 743.3 647.3 733.2 659.7 733.2ZM787 876.7L763.7 937.9H845.9L824.3 875.9C838 868.8 847.4 854.5 847.4 838 847.4 814.4 828.3 795.4 804.8 795.4 781.2 795.4 762.2 814.4 762.2 838 762.2 855.1 772.3 869.9 787 876.7ZM709.7 733.2H899.8V709.9C899.8 682.2 889 657.1 871.6 638.9 854.4 621 830.8 609.9 804.8 609.9 778.8 609.9 755.1 621 737.9 638.9 720.5 657.1 709.7 682.2 709.7 709.9V733.2Z", + "width": 972 + }, + "search": [ + "privacy-icon" + ] + }, + { + "uid": "8ef3ea7c144e709897ffcc0b85e3ec22", + "css": "username-icon", + "code": 537, + "src": "custom_icons", + "selected": true, + "svg": { + "path": "M341.7 513.9C323.1 484.7 288.5 444.6 288.5 409.8A55.9 55.9 0 0 1 326 359.1C324.3 329.9 323.1 300.1 323.1 270.6 323.1 253.2 323.1 235.7 324.1 218.4A170.5 170.5 0 0 1 330 186.1 186.1 186.1 0 0 1 413 80.6 243.4 243.4 0 0 1 458.1 59.1C486.8 48.7 472.6 0.6 503.9 0 577-1.9 697.2 65 744 115.8A185.5 185.5 0 0 1 791.9 236L788.9 364A42 42 0 0 1 819.7 390.3C829.7 430.8 787.8 481 768.3 513.2 750.3 542.8 681.6 638.7 681.6 639.4A25.3 25.3 0 0 0 687.7 654.3C794.4 800.8 1107.8 708.3 1107.8 999.9H0C0 708.3 313.6 800.9 420.1 654.3 425.4 646.7 427.8 642.4 427.7 639.1 427.7 637.2 348.7 525.5 341.7 514.2Z", + "width": 1108 + }, + "search": [ + "username-icon" + ] + }, + { + "uid": "8cce35b2d6e77ae90b652db11eef0a5c", + "css": "user-key-icon", + "code": 544, + "src": "custom_icons", + "selected": true, + "svg": { + "path": "M1008.1 739.1C1008.1 766.5 1003.7 792.9 996.1 817.7L952.4 773.4C954.1 762.2 955.1 750.7 955.1 739.1 955.1 624.3 862.2 531.2 747.2 531.2 694.2 531.2 646 550.9 609.4 583.4 521.8 660.8 517.6 792.3 590.7 875.8L592.4 877.7C631.8 921.4 687.3 946.6 747 946.6 769.6 946.6 791.3 943.1 811.8 936.4 817.9 955.3 831.9 970.7 850 978.5 818.3 992.1 783.4 999.8 747 999.8 675.1 999.8 610 970.7 562.7 923.4L562.5 923.2C553.7 914.4 545.4 904.9 537.9 894.9H0C0 590.7 225.6 672.2 317 546.6 331 525.5 314.4 523.9 300.3 504.4 275.8 471 254 433.2 231.9 398.1 216 374.7 207.7 353.8 207.7 337.1 207.7 319.2 217.2 298.3 236.1 293.6 233.7 257.5 232.7 221.9 234.5 183.5 235.3 174.2 237.1 165 239.6 155.9 250.4 117.3 277.2 86.4 310.9 65.6 322.7 58.1 335.1 52.2 349.5 47.3 373.7 38 362.1 1.2 388.9 0.4 451.7-1.2 554.6 52.4 594.8 95.9 618.2 121.1 633.4 154.6 635.8 198.9L633.2 298.1C645 301.4 652.5 308.9 655.8 320.7 659.2 334.1 655.8 352.6 644 378.6 644 379.4 643.2 379.4 643.2 380.2 617.4 422.7 590.5 472.1 560.9 511.7 546 531.6 533.8 528.1 546.6 547.2 550.1 551.9 553.7 556.4 557.4 560.5 559.2 558.6 560.9 556.8 562.7 555 610 507.8 675.1 478.6 747.2 478.6 819.3 478.6 884.4 507.8 931.7 555 978.9 601.9 1008.1 667.1 1008.1 739.1ZM862 780.7C870.6 764.1 875.6 745.2 875.6 725.5 875.6 657.8 818.7 602.9 748.4 602.9 678.1 602.9 621.2 657.8 621.2 725.5 621.2 793.3 678.3 848.2 748.4 848.2 775.2 848.2 800.2 840.1 820.6 826.5L833.6 868.5H878.1V914.9H924.8V957.5H980.9V900.8L862 780.7ZM729.5 743.1C710 743.1 694.2 727.3 694.2 707.8S710 672.6 729.5 672.6 764.7 688.3 764.7 707.8 749 743.1 729.5 743.1Z", + "width": 1008 + }, + "search": [ + "user-key-icon" + ] + }, + { + "uid": "7e2d15c7214058b9c51c23ac2ae37f7e", + "css": "icons8_more_info", + "code": 59458, + "src": "custom_icons", + "selected": false, + "svg": { + "path": "M425.1 58.1C419.1 58.1 414.2 56.3 410.3 52.8 406.5 49.2 404.6 44.8 404.6 39.6 404.6 34.3 406.5 29.9 410.3 26.5 414.2 23.1 419.1 21.4 425.1 21.4 431.2 21.4 436.2 23.1 440 26.5 443.8 29.9 445.7 34.3 445.7 39.6 445.7 45 443.8 49.5 440 52.9 436.2 56.4 431.2 58.1 425.1 58.1ZM442.8 192.1H407.1V76.4H442.8V192.1ZM250 318.4C157.9 318.4 83.3 369.7 83.3 425.6V437.5C83.3 449 92.7 458.3 104.2 458.3H395.8C407.3 458.3 416.7 449 416.7 437.5V425.6C416.7 369.7 342.1 318.4 250 318.4ZM302.1 322.9C302.1 342.7 272.6 364.6 250 364.6S197.9 342.7 197.9 322.9C197.9 295.4 197.9 249.6 197.9 249.6H302.1C302.1 249.6 302.1 295.4 302.1 322.9ZM342.9 187.5H337.4V229.2H344.7C350.1 229.2 354.6 225.9 355.6 221.5L359.1 203.7C360.9 195.2 353.1 187.5 342.9 187.5ZM157.1 187.5H162.6V229.2H155.3C149.9 229.2 145.4 225.9 144.4 221.5L140.9 203.7C139.1 195.2 146.9 187.5 157.1 187.5ZM250 66.7C203.7 66.7 156.3 73.7 156.3 173.7 156.3 181.7 156.3 234.9 156.3 243.5 156.3 279.2 212.5 322.9 250 322.9S343.8 279.2 343.8 243.5C343.8 234.9 343.8 181.7 343.8 173.7 343.8 73.7 296.3 66.7 250 66.7ZM250 57.8C204.6 57.8 197.9 74.8 197.9 74.8 179.5 77.5 145.8 104.5 145.8 135.4 145.8 152.6 148.6 165.4 156.3 208.3 161.9 140.1 179.7 114.6 197.9 114.6 211.1 114.6 221.6 125 250 125 274 125 279.9 114.6 302.1 114.6 333.3 114.6 343.8 197.6 343.8 208.3 350 177 354.2 150.5 354.2 135.4 354.2 99.7 314.7 57.8 250 57.8ZM252.3 52.1C208.9 52.1 197.9 74.8 197.9 74.8 197.5 86.9 203.4 97.5 203.4 97.5S211.3 114.6 256.5 114.6C283.8 114.6 322.9 97.6 322.9 52.1 322.9 52.1 314.1 52.1 252.3 52.1Z", + "width": 1000 + }, + "search": [ + "icons8_more_info" + ] + }, + { + "uid": "869ff064363191dcc647d646e4d414e2", + "css": "protected-icon", + "code": 59459, + "src": "custom_icons", + "selected": false, + "svg": { + "path": "M453.4 0C623.1 107.5 776.3 158.4 907.9 146.4 930.8 611.1 759.2 885.5 455.1 1000 161.5 892.8-12.2 630.2 0.7 139.3 155.1 147.4 306.6 114.1 453.4 0ZM543.7 430V397.1C543.7 371.2 533.6 347.8 517.4 330.8 501.3 314.1 479.2 303.7 454.9 303.7 430.7 303.7 408.6 314.1 392.5 330.8 376.3 347.8 366.2 371.2 366.2 397.1V430H543.7ZM326.5 430V397.1C326.5 360.7 340.9 327.5 364 303.4 387.3 279.1 419.5 264 455 264 490.4 264 522.6 279.1 545.9 303.4 569 327.5 583.4 360.7 583.4 397.1V430H597.6C609.1 430 618.5 439.4 618.5 451V672.4C618.5 684 609.1 693.4 597.6 693.4H312.3C300.8 693.4 291.4 684 291.4 672.4V451C291.3 439.4 300.8 430 312.3 430H326.5ZM437.8 571.4L415.1 630.7H494.8L473.8 570.6C487.1 563.8 496.2 549.9 496.2 534 496.2 511.1 477.7 492.7 454.9 492.7 432.2 492.7 413.7 511.1 413.7 534 413.7 550.6 423.6 564.9 437.8 571.4ZM453.7 77.4C594.4 166.6 729.4 216.7 838.5 206.7 857.6 592.1 707.3 827.6 455.2 922.6 211.6 833.7 59.6 608 70.3 200.9 211.6 208.3 341.1 164.8 453.7 77.4Z", + "width": 910 + }, + "search": [ + "protected-icon" + ] + }, + { + "uid": "328868b8c0759c5ac2da5e3fc5d15bd5", + "css": "add-security-lock-icon", + "code": 59460, + "src": "custom_icons", + "selected": false, + "svg": { + "path": "M51.2 391.9H54.4V338.7C54.4 250 88.3 164.4 149.8 100.3 180 68.8 216.2 43.3 256.4 25.9 336.3-8.7 427.5-8.6 507.4 25.9 588.4 61 651.9 128.4 684.7 210.2A345.9 345.9 0 0 1 709.4 338.7V391.9H712.6C740.8 391.9 763.8 415 763.8 443.1V948.8C763.8 977 740.8 1000 712.6 1000H51.2C23 1000 0 977 0 948.8V443.1C0 414.9 23 391.9 51.2 391.9ZM543.3 667.8V724C543.3 735.5 533.8 744.9 522.4 744.9H430.8V836.5C430.8 848 421.3 857.4 409.9 857.4H353.7C342.3 857.3 332.9 848 332.9 836.5V744.9H241.3C229.8 744.8 220.5 735.5 220.5 724V667.8C220.5 656.3 229.8 647 241.3 647H332.9V555.3C333 543.9 342.3 534.6 353.7 534.5H409.9C421.4 534.6 430.7 543.9 430.8 555.3V647H522.4C533.9 647 543.2 656.3 543.3 667.8ZM179.2 391.9H584.5V338.7C584.5 309.5 578.9 281.7 568.9 256.4 548.6 205.3 509.1 162.7 458.5 140.7 409.8 119.5 353.9 119.5 305.2 140.7 226.8 174.7 179.2 254.5 179.2 338.7V391.9Z", + "width": 764 + }, + "search": [ + "add-security-lock-icon" + ] + }, + { + "uid": "b95250c966f4bc703e831a8fa9b6b639", + "css": "contacts-icon", + "code": 59435, + "src": "custom_icons", + "selected": false, + "svg": { + "path": "M861.6 653.2H925.7A27.7 27.7 0 0 1 935.3 654.8 26 26 0 0 1 945.3 661H945.3A25.8 25.8 0 0 1 951.6 670.9H951.6A30.5 30.5 0 0 1 953.2 680.5V809.9A24.4 24.4 0 0 1 952.3 816.7L951.8 818.5A25.3 25.3 0 0 1 945.8 828.2 26.6 26.6 0 0 1 939.2 833.1 23.8 23.8 0 0 1 928.3 835.7H861.6V846.4A154.6 154.6 0 0 1 707.5 1000.4H154.1A154.6 154.6 0 0 1 0 846.4V154.6A154.6 154.6 0 0 1 154.1 0H707.4A154.6 154.6 0 0 1 861.5 154.1V168.9H925.6A26.8 26.8 0 0 1 937.3 171.5 25.9 25.9 0 0 1 947.3 179.7H947.3A28.7 28.7 0 0 1 951.8 188.2H951.8A29.1 29.1 0 0 1 953.3 197.3V326.7A22.7 22.7 0 0 1 951.7 334.8 16.3 16.3 0 0 1 950.3 338.1 24.8 24.8 0 0 1 943.8 345.7 30.8 30.8 0 0 1 939.3 348.6H939.3A23.9 23.9 0 0 1 928.5 351.3H861.7V408.3H925.9A27.4 27.4 0 0 1 937.6 410.9H937.6A26.4 26.4 0 0 1 947.6 419H947.6A28.2 28.2 0 0 1 951.7 426.3 27.2 27.2 0 0 1 953.5 436V566.2A24.4 24.4 0 0 1 950.8 577 26.3 26.3 0 0 1 946 583.7H946A23.8 23.8 0 0 1 939.3 588.5H939.3A24.4 24.4 0 0 1 928.5 591.1H861.8V652.9ZM430.8 223.5A276.7 276.7 0 1 1 235.5 304.9 275.6 275.6 0 0 1 430.8 223.5ZM599 331.8A237.9 237.9 0 0 0 240.9 642.7C269.4 629.8 331.5 624.5 358.2 606A96.1 96.1 0 0 0 364.7 593.5C367.8 586.1 370.8 578 372.8 572.6A263.7 263.7 0 0 1 351.8 542.6L330.6 508.8A62.5 62.5 0 0 1 318.4 477.9 24.4 24.4 0 0 1 320.6 466.8 21.6 21.6 0 0 1 332.5 455.7 519.9 519.9 0 0 1 331.5 394.9 90.9 90.9 0 0 1 334.1 381.1 81.4 81.4 0 0 1 370 335.3 109.8 109.8 0 0 1 400.1 321.9C406.9 320 394.4 298.4 401.4 297.5 435.1 294.1 489.8 325 513.4 350.4A82.9 82.9 0 0 1 534.3 402.6L533 457.8H533A15.2 15.2 0 0 1 544.1 469.4 47.9 47.9 0 0 1 538.2 498.5H538.2L538.2 499.2 513.8 539.1A210.9 210.9 0 0 1 484 579.8L487.3 584.5A144.9 144.9 0 0 0 503.6 604.9 2.2 2.2 0 0 1 504.2 605.6C530.6 624.3 593 630 621.7 642.4A238 238 0 0 0 599 331.8ZM707.5 57.9H154.1A96.7 96.7 0 0 0 57.9 154.1V845.8A96.7 96.7 0 0 0 154.1 941.9H707.4A96.7 96.7 0 0 0 803.6 846.4V154.6A96.7 96.7 0 0 0 707.5 57.9Z", + "width": 953 + }, + "search": [ + "contacts-icon" + ] + }, + { + "uid": "f9e79fb469c87c84e65ed45a6ecf620c", + "css": "user-key-icon", + "code": 59437, + "src": "custom_icons", + "selected": false, + "svg": { + "path": "M862 780.7L980.8 901V957.6H924.7V915.1H878.1V868.5H833.5L820.6 826.5C800.1 840.2 775.2 848.2 748.4 848.2 678.1 848.2 621.1 793.3 621.1 725.5 621.1 657.8 678.1 602.8 748.4 602.8 818.6 602.8 875.6 657.8 875.6 725.5 875.6 745.3 870.7 764.1 862 780.7ZM729.5 672.6C749 672.6 764.7 688.4 764.7 707.8S749 743.1 729.5 743.1C710 743.1 694.2 727.3 694.2 707.8S710 672.6 729.5 672.6ZM300.3 504.7C275.8 471.2 253.9 433.5 231.9 398.2 216 374.8 207.7 353.9 207.7 337.1 207.7 319.2 217.2 298.3 236.1 293.6 233.6 257.6 232.8 222 234.5 183.5 235.3 174.3 237 165 239.5 155.8 250.4 117.3 277.2 86.3 310.7 65.4 322.4 57.8 335 52 349.2 47 373.5 37.7 361.8 0.9 388.6 0 451.4-1.6 554.4 52 594.6 95.5 618.1 120.6 633.2 154.1 635.7 198.6L633.2 297.7C644.9 301.1 652.4 308.6 655.7 320.4 659.1 333.8 655.7 352.2 644 378.2 644 379 643.2 379 643.2 379.8 617.4 422.5 590.5 471.7 560.8 511.3 545.9 531.2 533.6 527.6 546.3 546.7 549.8 551.5 553.4 555.9 557.2 560.2 559 558.3 560.8 556.4 562.6 554.6 609.9 507.4 675.1 478.2 747.1 478.2 819.2 478.2 884.4 507.4 931.6 554.6 978.9 601.8 1008.1 667 1008.1 739.1 1008.1 766.5 1003.8 792.8 996 817.7L952.2 773.3C954 762.1 955 750.7 955 739.1 955 624.3 861.9 531.2 747.1 531.2 694.3 531.2 646 551 609.3 583.5 521.8 660.9 517.5 792.3 590.7 875.9L592.5 877.9C631.9 921.7 687.5 946.9 747.1 946.9 769.7 946.9 791.5 943.3 811.9 936.6A69.6 69.6 0 0 0 850.1 978.8C818.5 992.4 783.7 1000 747.1 1000 675.2 1000 610.1 970.8 562.9 923.6L562.6 923.4C553.8 914.5 545.6 905.1 538.1 895H0C0 590.8 225.6 672.4 317 546.7 331 525.7 314.4 524 300.3 504.7Z", + "width": 1008 + }, + "search": [ + "user-key-icon" + ] + }, + { + "uid": "4861d8a68689e8b1b7202cc3dae3fd49", + "css": "task-user-icon", + "code": 59438, + "src": "custom_icons", + "selected": false, + "svg": { + "path": "M538.2 320.7H258.9C245.1 320.7 233.7 332 233.7 345.9 233.7 359.8 245.1 371.1 258.9 371.1H538C551.9 371.1 563.2 359.8 563.2 345.9 563.4 332 552.1 320.7 538.2 320.7ZM174.9 317.8C159.3 317.8 146.8 330.5 146.8 345.9 146.8 361.5 159.5 374 174.9 374 190.5 374 203 361.3 203 345.9 203 330.5 190.5 317.8 174.9 317.8ZM258.9 627.9C245.1 627.9 233.7 639.2 233.7 653.1S245.1 678.3 258.9 678.3H383.4C392.6 660.2 403.9 643.3 417.2 627.9H258.9ZM174.9 625C159.3 625 146.8 637.7 146.8 653.1 146.8 668.8 159.5 681.3 174.9 681.3 190.5 681.3 203 668.6 203 653.1 203 637.7 190.5 625 174.9 625ZM174.9 471.4C159.3 471.4 146.8 484.1 146.8 499.5 146.8 515.1 159.5 527.7 174.9 527.7 190.5 527.7 203 515 203 499.5 203 484.1 190.5 471.4 174.9 471.4ZM538.2 474.3H258.9C245.1 474.3 233.7 485.6 233.7 499.5 233.7 513.4 245.1 524.7 258.9 524.7H538C551.9 524.7 563.2 513.4 563.2 499.5 563.4 485.6 552.1 474.3 538.2 474.3ZM686.5 139.7C671.9 125.1 651.4 115.9 629.1 115.9H582.4V163.6H629.1C638.1 163.6 646.7 167.1 653.1 173.5 659.2 179.6 663.1 188.2 663.1 197.6V540.7C679.5 543.9 695.5 548.4 710.8 554.4V197.4C710.8 175.1 701.4 154.6 686.5 139.7ZM360.2 848H81.5C72.3 848 63.7 844 57.7 838 51.6 831.9 47.7 823.3 47.7 814.1V197.4C47.7 188 51.6 179.6 57.7 173.5 63.7 167.5 72.3 163.6 81.5 163.6H128.2V115.9H81.5C59 115.9 38.7 125.1 23.8 139.7S0 174.9 0 197.4V814C0 836.4 9.2 856.8 24 871.6 38.9 886.5 59.2 895.6 81.7 895.6H374.8C368.4 880.4 363.5 864.4 360.2 848ZM528.8 77L437.4 76C431.9 33 396.9 0 354.7 0 312.1 0 277.1 33.6 271.8 77H181.6C176.7 77 172.6 81.3 172.8 86.2V187.4C172.8 192.5 176.9 196.6 181.9 196.6H529C534.1 196.6 538.2 192.5 538.2 187.4V86.2C538 81.1 533.9 77 528.8 77ZM353.7 126.4C329.7 126.4 310.1 106.9 310.1 83.1 310.1 59 329.7 39.5 353.7 39.5S397.3 59 397.3 83.1C397.3 106.9 377.8 126.4 353.7 126.4ZM818.8 796.6C818.8 908.9 727.8 999.8 615.6 999.8 503.2 999.8 412.4 908.7 412.4 796.6 412.4 684.2 503.4 593.3 615.6 593.3 727.8 593.3 818.8 684.4 818.8 796.6ZM730.9 893.7L500.1 893.7C500.1 830 562.8 844.2 586.3 812.2 587.5 810.4 588 809.7 587.8 808.9 587.8 805.7 557.4 774.7 557.4 763.3 557.6 758.3 560.9 754 565.6 752.2 565 742.6 563.8 728.2 566.5 719 569.5 709.4 575.9 701 584.7 695.9 587.8 694 591.2 692.4 594.5 691.2 600.7 688.9 597.6 678.5 604.5 678.3 620.5 677.9 646.7 692.6 657 703.5 663.5 710.8 667.2 720.1 667.6 729.9L667 753.4C670.1 754 672.7 756.1 673.6 759 677 772.9 643.5 805.4 643.5 808.9 643.5 810 644.1 811.2 644.9 812.2 668.2 844.4 730.9 830 730.9 893.7Z", + "width": 819 + }, + "search": [ + "task-user-icon" + ] + }, + { + "uid": "60f8e1edd0acd888985c1d1748b4760b", + "css": "file-user-icon", + "code": 59439, + "src": "custom_icons", + "selected": false, + "svg": { + "path": "M204.3 649.2C190.6 649.2 179.7 660.4 179.7 673.8 179.7 687.5 190.8 698.4 204.3 698.4H354.5C359 681.3 365.2 664.8 372.7 649H204.3ZM482.6 508H204.3C190.6 508 179.7 519.1 179.7 532.6 179.7 546.3 190.8 557.2 204.3 557.2H441.2C459.4 541 479.3 527.1 500.8 516 496.3 511.1 489.8 508 482.6 508ZM498 366.8H204.3C190.6 366.8 179.7 377.9 179.7 391.4 179.7 405.1 190.8 416 204.3 416H498C511.7 416 522.9 404.9 522.9 391.4 522.9 377.7 511.7 366.8 498 366.8ZM702.3 491.4L702.3 257.6C702.3 251.6 700.2 245.7 695.9 241L482 9.8C477.5 3.9 470.3 0 462.3 0H122.9C89.1 0 58.4 13.9 36.1 36.1 13.9 58.4 0 89.1 0 122.9V780.1C0 813.9 13.9 844.5 36.1 866.8 58.4 889.1 89.1 902.9 122.9 902.9H375.4C367.6 887.3 360.9 870.7 356.1 853.5H122.9C102.7 853.5 84.4 845.3 71.1 832 57.8 818.7 49.4 800.4 49.4 780.3V122.9C49.4 102.7 57.6 84.2 70.9 71.1S102.5 49.6 122.7 49.6H425.4V180.5L425.6 183.8C428.5 222.7 443.2 253.9 468.9 276 493.7 297.1 528.3 309 572.3 309.6L652.9 309.6V483.8C669.9 485.2 686.3 487.5 702.3 491.4ZM572.7 260.4C541 259.8 517 252.1 501 238.5 485.5 225.2 476.8 205.5 474.8 180.3V74.4L646.7 260.4 572.7 260.4ZM861.3 773.2C861.3 835.9 835.9 892.6 794.9 933.6L792.4 935.9C751.6 975.6 695.9 1000 634.6 1000 571.9 1000 515.2 974.6 474.2 933.6 433.2 892.6 407.8 835.9 407.8 773.2S433.2 653.9 474.2 612.9C515.2 571.9 571.9 546.5 634.6 546.5 697.1 546.5 753.7 571.9 794.7 612.9 835.9 653.9 861.3 710.5 861.3 773.2ZM749.8 864.3L519.1 864.3C519.1 800.6 581.8 814.8 605.3 782.8 606.4 781.1 607 780.3 606.8 779.5 606.8 776.4 576.4 745.3 576.4 734 576.6 728.9 579.9 724.6 584.6 722.9 584 713.3 582.8 698.8 585.5 689.6 588.5 680.1 594.9 671.7 603.7 666.6 606.8 664.6 610.2 663.1 613.5 661.9 619.7 659.6 616.6 649.2 623.4 649 639.5 648.6 665.6 663.3 676 674.2 682.4 681.4 686.1 690.8 686.5 700.6L685.9 724C689.1 724.6 691.6 726.8 692.6 729.7 695.9 743.6 662.5 776 662.5 779.5 662.5 780.7 663.1 781.8 663.9 782.8 687.1 814.8 749.8 800.6 749.8 864.3Z", + "width": 861 + }, + "search": [ + "file-user-icon" + ] + }, + { + "uid": "cfefd3ea02af29681cd104e6c442c6d5", + "css": "task-user-icon", + "code": 59441, + "src": "custom_icons", + "selected": false, + "svg": { + "path": "M374.8 895.8H81.7C59.2 895.8 38.9 886.7 24 871.8 9.2 856.8 0 836.6 0 814.1V197.6C0 175.1 9 154.6 23.8 139.9 38.7 125.3 59 116.1 81.5 116.1H128.2V163.8H81.5C72.3 163.8 63.7 167.7 57.7 173.7 51.6 179.8 47.7 188.2 47.7 197.6V814.3C47.7 823.5 51.6 832.1 57.7 838.2 63.7 844.2 72.3 848.2 81.5 848.2H360.2C363.5 864.6 368.4 880.6 374.8 895.8ZM528.8 77L437.4 76C431.9 33 396.9 0 354.7 0 312.1 0 277.1 33.6 271.8 77H181.6C176.7 77 172.6 81.3 172.8 86.2V187.4C172.8 192.5 176.9 196.6 181.9 196.6H529C534.1 196.6 538.2 192.5 538.2 187.4V86.2C538 81.3 533.9 77 528.8 77ZM353.7 126.6C329.7 126.6 310.1 107.1 310.1 83.3 310.1 59.2 329.7 39.7 353.7 39.7S397.3 59.2 397.3 83.3C397.3 107.1 377.8 126.6 353.7 126.6ZM417.2 628.1C403.9 643.5 392.6 660.3 383.4 678.5H258.9C245.1 678.5 233.7 667.2 233.7 653.3 233.7 639.4 245.1 628.1 258.9 628.1H417.2ZM563.2 499.5C563.2 513.4 551.9 524.7 538 524.7H258.9C245.1 524.7 233.7 513.4 233.7 499.5 233.7 485.6 245.1 474.3 258.9 474.3H538.2C552.1 474.5 563.4 485.8 563.2 499.5ZM563.2 346.1C563.2 360 551.9 371.3 538 371.3H258.9C245.1 371.3 233.7 360 233.7 346.1 233.7 332.2 245.1 320.9 258.9 320.9H538.2C552.1 320.7 563.4 332 563.2 346.1ZM710.8 197.6V554.6C695.5 548.6 679.5 544.1 663.1 540.9V197.6C663.1 188.2 659.2 179.6 653.1 173.5 646.7 167.1 638.1 163.6 629.1 163.6H582.4V116.1H629.1C651.4 116.1 671.9 125.3 686.5 139.9 701.4 154.6 710.8 175.1 710.8 197.6ZM615.6 593.3C503.4 593.3 412.4 684.2 412.4 796.6 412.4 908.7 503.2 999.8 615.6 999.8 727.8 999.8 818.8 908.9 818.8 796.6 818.8 684.6 727.8 593.3 615.6 593.3ZM500.1 893.9C500.1 830.2 562.8 844.4 586.3 812.4 587.5 810.6 588 809.8 587.8 809.1 587.8 805.9 557.4 774.9 557.4 763.5 557.6 758.5 560.9 754.2 565.6 752.4 565 742.8 563.8 728.4 566.5 719.2 569.5 709.6 575.9 701.2 584.7 696.1 587.8 694.2 591.2 692.6 594.5 691.4 600.7 689.1 597.6 678.7 604.5 678.5 620.5 678.1 646.7 692.8 657 703.7 663.5 711 667.2 720.3 667.6 730.1L667 753.6C670.1 754.2 672.7 756.3 673.6 759.2 677 773.1 643.5 805.6 643.5 809.1 643.5 810.2 644.1 811.4 644.9 812.4 668.2 844.6 730.9 830.2 730.9 893.9H500.1ZM730.9 893.9H500.1C500.1 830.2 562.8 844.4 586.3 812.4 587.5 810.6 588 809.8 587.8 809.1 587.8 805.9 557.4 774.9 557.4 763.5 557.6 758.5 560.9 754.2 565.6 752.4 565 742.8 563.8 728.4 566.5 719.2 569.5 709.6 575.9 701.2 584.7 696.1 587.8 694.2 591.2 692.6 594.5 691.4 600.7 689.1 597.6 678.7 604.5 678.5 620.5 678.1 646.7 692.8 657 703.7 663.5 711 667.2 720.3 667.6 730.1L667 753.6C670.1 754.2 672.7 756.3 673.6 759.2 677 773.1 643.5 805.6 643.5 809.1 643.5 810.2 644.1 811.4 644.9 812.4 668.2 844.4 730.9 830.2 730.9 893.9Z", + "width": 819 + }, + "search": [ + "task-user-icon" + ] } ] } \ No newline at end of file diff --git a/src/assets/fontIcon/opex-icon/css/opex-icon-codes.css b/src/assets/fontIcon/opex-icon/css/opex-icon-codes.css index 7c9d209..2c7630c 100644 --- a/src/assets/fontIcon/opex-icon/css/opex-icon-codes.css +++ b/src/assets/fontIcon/opex-icon/css/opex-icon-codes.css @@ -13,19 +13,11 @@ .icon-down-open-1:before { content: '\0111'; } /* 'đ' */ .icon-up-open-1:before { content: '\0112'; } /* 'Ē' */ .icon-envelope-open:before { content: '\0113'; } /* 'ē' */ -.icon-market:before { content: '\0114'; } /* 'Ĕ' */ -.icon-settings:before { content: '\0115'; } /* 'ĕ' */ -.icon-wallet:before { content: '\0116'; } /* 'Ė' */ -.icon-account:before { content: '\0117'; } /* 'ė' */ -.icon-counting:before { content: '\0118'; } /* 'Ę' */ -.icon-messages:before { content: '\0119'; } /* 'ę' */ .icon-star-1:before { content: '\0120'; } /* 'Ġ' */ .icon-chat:before { content: '\0121'; } /* 'ġ' */ .icon-comment-alt:before { content: '\0122'; } /* 'Ģ' */ .icon-comment:before { content: '\0123'; } /* 'ģ' */ .icon-diamond:before { content: '\0124'; } /* 'Ĥ' */ -.icon-messages-dotted:before { content: '\0125'; } /* 'ĥ' */ -.icon-safe:before { content: '\0126'; } /* 'Ħ' */ .icon-lock:before { content: '\0127'; } /* 'ħ' */ .icon-user-circle-o:before { content: '\0128'; } /* 'Ĩ' */ .icon-lock-filled:before { content: '\0129'; } /* 'ĩ' */ @@ -48,35 +40,17 @@ .icon-calendar-empty:before { content: '\0146'; } /* 'ņ' */ .icon-calendar-2:before { content: '\0147'; } /* 'Ň' */ .icon-calendar-3:before { content: '\0148'; } /* 'ň' */ -.icon-filter:before { content: '\0149'; } /* 'ʼn' */ -.icon-filternfilled:before { content: '\0150'; } /* 'Ő' */ -.icon-microsoft_excel:before { content: '\0151'; } /* 'ő' */ -.icon-clear-filters:before { content: '\0152'; } /* 'Œ' */ -.icon-clock:before { content: '\0153'; } /* 'œ' */ .icon-info-circled:before { content: '\0154'; } /* 'Ŕ' */ -.icon-copy:before { content: '\0155'; } /* 'ŕ' */ .icon-help-circled:before { content: '\0156'; } /* 'Ŗ' */ .icon-help-circled-1:before { content: '\0157'; } /* 'ŗ' */ .icon-help-circled-2:before { content: '\0158'; } /* 'Ř' */ .icon-help-circled-alt:before { content: '\0159'; } /* 'ř' */ -.icon-menu_vertical:before { content: '\0160'; } /* 'Š' */ -.icon-cancel-circled:before { content: '\0161'; } /* 'š' */ +.icon-cancel-circled-1:before { content: '\0161'; } /* 'š' */ .icon-cancel-circle:before { content: '\0162'; } /* 'Ţ' */ .icon-cancel-circle-1:before { content: '\0163'; } /* 'ţ' */ -.icon-cancel-circled-1:before { content: '\0165'; } /* 'ť' */ +.icon-cancel-circled-2:before { content: '\0165'; } /* 'ť' */ .icon-cancel-circle-2:before { content: '\0166'; } /* 'Ŧ' */ -.icon-profilesetting:before { content: '\0167'; } /* 'ŧ' */ -.icon-protectsetting:before { content: '\0168'; } /* 'Ũ' */ -.icon-verifiedsetting:before { content: '\0169'; } /* 'ũ' */ -.icon-fileSubsetting:before { content: '\0170'; } /* 'Ű' */ -.icon-closed_eye:before { content: '\0171'; } /* 'ű' */ -.icon-eye-1:before { content: '\0172'; } /* 'Ų' */ .icon-hash:before { content: '\0173'; } /* 'ų' */ -.icon-lasttrades:before { content: '\0174'; } /* 'Ŵ' */ -.icon-myorder:before { content: '\0175'; } /* 'ŵ' */ -.icon-order:before { content: '\0176'; } /* 'Ŷ' */ -.icon-orderbook:before { content: '\0177'; } /* 'ŷ' */ -.icon-overview:before { content: '\0178'; } /* 'Ÿ' */ .icon-dot-3:before { content: '\0179'; } /* 'Ź' */ .icon-th:before { content: '\0180'; } /* 'ƀ' */ .icon-th-outline:before { content: '\0181'; } /* 'Ɓ' */ @@ -95,18 +69,54 @@ .icon-arrows-cw:before { content: '\0194'; } /* 'Ɣ' */ .icon-arrows-cw-1:before { content: '\0195'; } /* 'ƕ' */ .icon-eye-3:before { content: '\0196'; } /* 'Ɩ' */ -.icon-op-06:before { content: '\0197'; } /* 'Ɨ' */ -.icon-op-05:before { content: '\0198'; } /* 'Ƙ' */ -.icon-op-04:before { content: '\0199'; } /* 'ƙ' */ -.icon-op-02:before { content: '\0200'; } /* 'Ȁ' */ -.icon-op-03:before { content: '\0201'; } /* 'ȁ' */ .icon-left-open-1:before { content: '\0202'; } /* 'Ȃ' */ .icon-right-open-1:before { content: '\0203'; } /* 'ȃ' */ -.icon-row:before { content: '\0204'; } /* 'Ȅ' */ -.icon-grid:before { content: '\0205'; } /* 'ȅ' */ .icon-up-micro:before { content: '\0206'; } /* 'Ȇ' */ .icon-down-micro:before { content: '\0207'; } /* 'ȇ' */ .icon-down-dir:before { content: '\0208'; } /* 'Ȉ' */ .icon-up-dir:before { content: '\0209'; } /* 'ȉ' */ .icon-play:before { content: '\0210'; } /* 'Ȑ' */ +.icon-paste:before { content: '\0211'; } /* 'ȑ' */ +.icon-shield-lock-black-icon:before { content: '\0212'; } /* 'Ȓ' */ +.icon-shield-lock-black-icon-1:before { content: '\0213'; } /* 'ȓ' */ +.icon-user-clipboard-icon:before { content: '\0214'; } /* 'Ȕ' */ +.icon-privacy-icon:before { content: '\0215'; } /* 'ȕ' */ +.icon-file-user-icon:before { content: '\0216'; } /* 'Ȗ' */ +.icon-task-user-icon:before { content: '\0217'; } /* 'ȗ' */ +.icon-privacy-icon-1:before { content: '\0218'; } /* 'Ș' */ +.icon-username-icon:before { content: '\0219'; } /* 'ș' */ +.icon-user-key-icon:before { content: '\0220'; } /* 'Ƞ' */ +.icon-market:before { content: '\e800'; } /* '' */ .icon-cancel-circled2:before { content: '\e801'; } /* '' */ +.icon-settings:before { content: '\e802'; } /* '' */ +.icon-wallet:before { content: '\e803'; } /* '' */ +.icon-account:before { content: '\e804'; } /* '' */ +.icon-counting:before { content: '\e805'; } /* '' */ +.icon-messages:before { content: '\e806'; } /* '' */ +.icon-messages-dotted:before { content: '\e807'; } /* '' */ +.icon-safe:before { content: '\e808'; } /* '' */ +.icon-filter:before { content: '\e809'; } /* '' */ +.icon-filternfilled:before { content: '\e80a'; } /* '' */ +.icon-microsoft_excel:before { content: '\e80b'; } /* '' */ +.icon-clear-filters:before { content: '\e80c'; } /* '' */ +.icon-clock:before { content: '\e80d'; } /* '' */ +.icon-copy:before { content: '\e80e'; } /* '' */ +.icon-menu_vertical:before { content: '\e80f'; } /* '' */ +.icon-profilesetting:before { content: '\e810'; } /* '' */ +.icon-protectsetting:before { content: '\e811'; } /* '' */ +.icon-verifiedsetting:before { content: '\e812'; } /* '' */ +.icon-fileSubsetting:before { content: '\e813'; } /* '' */ +.icon-closed_eye:before { content: '\e814'; } /* '' */ +.icon-eye-1:before { content: '\e815'; } /* '' */ +.icon-lasttrades:before { content: '\e816'; } /* '' */ +.icon-myorder:before { content: '\e817'; } /* '' */ +.icon-order:before { content: '\e818'; } /* '' */ +.icon-orderbook:before { content: '\e819'; } /* '' */ +.icon-overview:before { content: '\e81a'; } /* '' */ +.icon-op-06:before { content: '\e81b'; } /* '' */ +.icon-op-05:before { content: '\e81c'; } /* '' */ +.icon-op-04:before { content: '\e81d'; } /* '' */ +.icon-op-02:before { content: '\e81e'; } /* '' */ +.icon-op-03:before { content: '\e81f'; } /* '' */ +.icon-row:before { content: '\e820'; } /* '' */ +.icon-grid:before { content: '\e821'; } /* '' */ diff --git a/src/assets/fontIcon/opex-icon/css/opex-icon-embedded.css b/src/assets/fontIcon/opex-icon/css/opex-icon-embedded.css index 2a018d3..f595099 100644 --- a/src/assets/fontIcon/opex-icon/css/opex-icon-embedded.css +++ b/src/assets/fontIcon/opex-icon/css/opex-icon-embedded.css @@ -1,15 +1,15 @@ @font-face { font-family: 'opex-icon'; - src: url('../font/opex-icon.eot?19085055'); - src: url('../font/opex-icon.eot?19085055#iefix') format('embedded-opentype'), - url('../font/opex-icon.svg?19085055#opex-icon') format('svg'); + src: url('../font/opex-icon.eot?37200563'); + src: url('../font/opex-icon.eot?37200563#iefix') format('embedded-opentype'), + url('../font/opex-icon.svg?37200563#opex-icon') format('svg'); font-weight: normal; font-style: normal; } @font-face { font-family: 'opex-icon'; - src: url('data:application/octet-stream;base64,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') format('woff'), - url('data:application/octet-stream;base64,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ci0xDmNhbGVuZGFyLWVtcHR5CmNhbGVuZGFyLTIKY2FsZW5kYXItMwZmaWx0ZXINZmlsdGVybmZpbGxlZA9taWNyb3NvZnRfZXhjZWwNY2xlYXItZmlsdGVycwVjbG9jawxpbmZvLWNpcmNsZWQEY29weQxoZWxwLWNpcmNsZWQOaGVscC1jaXJjbGVkLTEOaGVscC1jaXJjbGVkLTIQaGVscC1jaXJjbGVkLWFsdA1tZW51X3ZlcnRpY2FsDmNhbmNlbC1jaXJjbGVkDWNhbmNlbC1jaXJjbGUPY2FuY2VsLWNpcmNsZS0xEGNhbmNlbC1jaXJjbGVkLTEPY2FuY2VsLWNpcmNsZS0yDnByb2ZpbGVzZXR0aW5nDnByb3RlY3RzZXR0aW5nD3ZlcmlmaWVkc2V0dGluZw5maWxlU3Vic2V0dGluZwpjbG9zZWRfZXllBWV5ZS0xBGhhc2gKbGFzdHRyYWRlcwdteW9yZGVyBW9yZGVyCW9yZGVyYm9vawhvdmVydmlldwVkb3QtMwJ0aAp0aC1vdXRsaW5lAmVxD3Jlc2l6ZS12ZXJ0aWNhbBFyZXNpemUtdmVydGljYWwtMQtkb3duLW9wZW4tMgdicmFpbGxlCWxlZnQtb3BlbgpyaWdodC1vcGVuBWV5ZS0yB2V5ZS1vZmYFZ2xvYmUIbG9jYXRpb24EbG9vcAlhcnJvd3MtY3cLYXJyb3dzLWN3LTEFZXllLTMFb3AtMDYFb3AtMDUFb3AtMDQFb3AtMDIFb3AtMDMLbGVmdC1vcGVuLTEMcmlnaHQtb3Blbi0xA3JvdwRncmlkCHVwLW1pY3JvCmRvd24tbWljcm8IZG93bi1kaXIGdXAtZGlyBHBsYXkPY2FuY2VsLWNpcmNsZWQyAAAAAAAAAQAB//8ADwAAAAAAAAAAAAAAAAAAAACwACwgsABVWEVZICBLuAAOUUuwBlNaWLA0G7AoWWBmIIpVWLACJWG5CAAIAGNjI2IbISGwAFmwAEMjRLIAAQBDYEItsAEssCBgZi2wAiwjISMhLbADLCBkswMUFQBCQ7ATQyBgYEKxAhRDQrElA0OwAkNUeCCwDCOwAkNDYWSwBFB4sgICAkNgQrAhZRwhsAJDQ7IOFQFCHCCwAkMjQrITARNDYEIjsABQWGVZshYBAkNgQi2wBCywAyuwFUNYIyEjIbAW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') format('truetype'); + src: url('data:application/octet-stream;base64,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') format('woff'), + url('data:application/octet-stream;base64,AAEAAAAPAIAAAwBwR1NVQiCLJXoAAAD8AAAAVE9TLzJXU0oRAAABUAAAAGBjbWFwFvHfrwAAAbAAAAiQY3Z0IAAAAAAAAJjIAAAADmZwZ21iLvl6AACY2AAADgxnYXNwAAAAEAAAmMAAAAAIZ2x5ZvTbXdoAAApAAACCfGhlYWQk2MUaAACMvAAAADZoaGVhCBkEngAAjPQAAAAkaG10eKoR/4oAAI0YAAAB5GxvY2HEzuacAACO/AAAAPRtYXhwApUQDwAAj/AAAAAgbmFtZewZB3MAAJAQAAAC2XBvc3SD15yKAACS7AAABdJwcmVwfrY7tgAApuQAAACcAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAQDhQGQAAUAAAJ6ArwAAACMAnoCvAAAAeAAMQECAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAwAEA6CEDUv9qAFoDrADGAAAAAQAAAAAAAAAAAAAAAAACAAAABQAAAAMAAAAsAAAABAAAAtQAAQAAAAABzgADAAEAAAAsAAMACgAAAtQABAGiAAAAKAAgAAQACAEJARMBJAEpATkBSAFUAVkBYwFmAXMBeQGJAZYCAwIJAhkCIOgh//8AAAEAARABIAEnATABQAFUAVYBYQFlAXMBeQGAAZACAgIGAhACIOgA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABACgAOgBAAEgATABeAG4AbgB0AHgAegB6AHoAjACYAJoAoACyALIAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABSAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AAABBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAW8AAAAAAAAAHkAAAEAAAABAAAAAAEAAAEBAAABAQAAAAIAAAECAAABAgAAAAMAAAEDAAABAwAAAAQAAAEEAAABBAAAAAUAAAEFAAABBQAAAAYAAAEGAAABBgAAAAcAAAEHAAABBwAAAAgAAAEIAAABCAAAAAkAAAEJAAABCQAAAAoAAAEQAAABEAAAAAsAAAERAAABEQAAAAwAAAESAAABEgAAAA0AAAETAAABEwAAAA4AAAEgAAABIAAAAA8AAAEhAAABIQAAABAAAAEiAAABIgAAABEAAAEjAAABIwAAABIAAAEkAAABJAAAABMAAAEnAAABJwAAABQAAAEoAAABKAAAABUAAAEpAAABKQAAABYAAAEwAAABMAAAABcAAAExAAABMQAAABgAAAEyAAABMgAAABkAAAEzAAABMwAAABoAAAE0AAABNAAAABsAAAE1AAABNQAAABwAAAE2AAABNgAAAB0AAAE3AAABNwAAAB4AAAE4AAABOAAAAB8AAAE5AAABOQAAACAAAAFAAAABQAAAACEAAAFBAAABQQAAACIAAAFCAAABQgAAACMAAAFDAAABQwAAACQAAAFEAAABRAAAACUAAAFFAAABRQAAACYAAAFGAAABRgAAACcAAAFHAAABRwAAACgAAAFIAAABSAAAACkAAAFUAAABVAAAACoAAAFWAAABVgAAACsAAAFXAAABVwAAACwAAAFYAAABWAAAAC0AAAFZAAABWQAAAC4AAAFhAAABYQAAAC8AAAFiAAABYgAAADAAAAFjAAABYwAAADEAAAFlAAABZQAAADIAAAFmAAABZgAAADMAAAFzAAABcwAAADQAAAF5AAABeQAAADUAAAGAAAABgAAAADYAAAGBAAABgQAAADcAAAGCAAABggAAADgAAAGDAAABgwAAADkAAAGEAAABhAAAADoAAAGFAAABhQAAADsAAAGGAAABhgAAADwAAAGHAAABhwAAAD0AAAGIAAABiAAAAD4AAAGJAAABiQAAAD8AAAGQAAABkAAAAEAAAAGRAAABkQAAAEEAAAGSAAABkgAAAEIAAAGTAAABkwAAAEMAAAGUAAABlAAAAEQAAAGVAAABlQAAAEUAAAGWAAABlgAAAEYAAAICAAACAgAAAEcAAAIDAAACAwAAAEgAAAIGAAACBgAAAEkAAAIHAAACBwAAAEoAAAIIAAACCAAAAEsAAAIJAAACCQAAAEwAAAIQAAACEAAAAE0AAAIRAAACEQAAAE4AAAISAAACEgAAAE8AAAITAAACEwAAAFAAAAIUAAACFAAAAFEAAAIVAAACFQAAAFIAAAIWAAACFgAAAFMAAAIXAAACFwAAAFQAAAIYAAACGAAAAFIAAAIZAAACGQAAAFUAAAIgAAACIAAAAFYAAOgAAADoAAAAAFcAAOgBAADoAQAAAFgAAOgCAADoAgAAAFkAAOgDAADoAwAAAFoAAOgEAADoBAAAAFsAAOgFAADoBQAAAFwAAOgGAADoBgAAAF0AAOgHAADoBwAAAF4AAOgIAADoCAAAAF8AAOgJAADoCQAAAGAAAOgKAADoCgAAAGEAAOgLAADoCwAAAGIAAOgMAADoDAAAAGMAAOgNAADoDQAAAGQAAOgOAADoDgAAAGUAAOgPAADoDwAAAGYAAOgQAADoEAAAAGcAAOgRAADoEQAAAGgAAOgSAADoEgAAAGkAAOgTAADoEwAAAGoAAOgUAADoFAAAAGsAAOgVAADoFQAAAGwAAOgWAADoFgAAAG0AAOgXAADoFwAAAG4AAOgYAADoGAAAAG8AAOgZAADoGQAAAHAAAOgaAADoGgAAAHEAAOgbAADoGwAAAHIAAOgcAADoHAAAAHMAAOgdAADoHQAAAHQAAOgeAADoHgAAAHUAAOgfAADoHwAAAHYAAOggAADoIAAAAHcAAOghAADoIQAAAHgAAQAA/+cDtgIpABQAGUAWDQEAAQFMAgEBAAGFAAAAdhQXEgMGGSsJAQYiJwEmND8BNjIXCQE2Mh8BFhQDq/5iCh4K/mILC10KHgoBKAEoCxwMXAsBj/5jCwsBnQseClwLC/7YASgLC1wLHAAAAQAAAAADtgJGABQAGUAWBQEAAgFMAAIAAoUBAQAAdhcUEgMGGSslBwYiJwkBBiIvASY0NwE2MhcBFhQDq1wLHgr+2P7YCxwLXQsLAZ4LHAsBngtrXAoKASn+1woKXAseCgGeCgr+YgscAAAAAv/5/74BoQL/ACcALAApQCYABAUEhQAFAgWFAAIBAoUAAQMBhQADAAOFAAAAdhEUGCknJgYGHCslNhYHDgIjIicmPwE2JyYjIg8CBiY3PgIzMhcWDwEGFxYzMjY3AzQgECABSxIYEAUiVCptKCMwNBwZBRELDRYHExgQBx5WKW8nIy81GxkDEgsaCaYBBP78JQYkEAUWHk9KXWg3EgUDBQIHJA4HFCBPSV5oOBIDBAMCW4L+/AAAAAEAAP+9A0MC/wAbADVAMgAFAAWFAAIBAoYEBgIAAQEAVwQGAgAAAV8DAQEAAU8BABgXFBIPDQoJBgQAGwEbBwYWKwEyHgEGLwEVFA4BJic3ByImNDY3Myc0NjIWBxUC2Sw8AkAq0DxaOAID1Cw8PCzUAzxWQAIBxj5UPgED1Cs8AkAp1AM8VjwB0So+PirRAAL/9f9+A9wDMgAdADQAJUAiMi4qJiIaCQMIAAEBTAABAAGFAgEAAHYBABMRAB0BHQMGFisFIi8BBwYnJj8BLwEmNj8CNjMyHwIeAQ8BFxYGAQ4BDwE3Nh8BJyY/AScmLwEHBg8BFxYC5RMU1dcsKCkKMlRjJSAy9GYWMi8YZfUwIia3Mgcu/jIBDAsUvhsZviwGFqHZHgtaWg0e2KEVdgx5eRgbHTLzS1ojXgca4S8v4RsEYCOm8iM6AVYEQDRcaw4Oa9UdFJQXBBrHxxoEF5QTAAAAAf/8/7oDaQL9ABoAEUAOFhALAwBJAAAAdhMBBhcrATY3NjIfAQUeAQ8BExYGLwEGBwYmNxMnJjY3ASlFLQYkBXIBEg8MDMw3AxoO8JBgDxoCOMwMDA8B8phkDw/8HgMeDLv+8g8UCIhRNwkWDgEOuwseBAABAAAAAAJ0ApcAHQAeQBsaEwwEBAACAUwDAQIAAoUBAQAAdhQYFBkEBhorARYUDwEXFhQHBiIvAQcGIiY0PwEnJjQ2Mh8BNzYyAlQgIIeHICAeVh+Hhx5YPR+Hhx89WB6Hhx5YAngfVh+Hhx9UIB4eh4cePVYeh4cgVD8fh4cfAAP/9f/yBCACywAZACIALAA2QDMAAQADBQEDaQAFAAQCBQRpBgECAAACWQYBAgIAYQAAAgBRGxorKiYlHx4aIhsiHBcHBhgrARYHDgIHBiAnLgInJjc+Ajc2IBceAgUyNjQmIgYUFjcUBi4CNjcyFgQKFhYHNnxBcP7VcEB+NAgWFgY2fkBxASlxQH42/gdLamqXamq0PFg8AkAqKzwBfB0eC0aCLFBQLYBICh0eC0aALFJSLX5I32yXamqXbLcrPgI6WjgEPgAACf/5/24D2wNOAAcADwAXAB8AJwAvADcAPwBIADFALjw3LCccCQYDAgFMAAACAIUEAQIDAoUAAwEDhQABAXZBQEVEQEhBSDU0JSQFBhYrAScmNjc2FgcBFwcGJicmNgEXFgYHBiY3ARYGLwE3NhYlLgE3NhYfAQMmNj8BBw4BJR4BBwYmLwETFgYPATc+AQUyFg4CLgE2Aes1BxQVHjQM/iuamhUqBwosAcYzBxQVHjQMAhsKLCSZmRUq/NQVDgoQRA9HkR8CHZFHCioCghUOChBED0eRHwIdkUcKKv7LYIoChsSIAowCZpgWKAgKKib+lTU0CBYVHjT+t5gVKgcKLCQBsh42DjQ1BxTaCioVIAQckf3iEEQPR5EVDm0KLBQfAh2RAh4QRA5IkRYOhIrCiASQupIAAAAACv/5/24D2wNOAAcADwAXAB8AJwAvADcAPwBIAFEAV0BUAQEDADkhAgQDGQkCBQQxKQICBREBAQIFTAAAAwCFAAECAYYAAwcBBAUDBGkABQICBVkABQUCYQYBAgUCUUpJQUBOTUlRSlFFREBIQUg3NicmCAYWKwEHJyY2NzYWARcHBiYnJjYBNxcWBgcGJgEnNzYWFxYGARcnLgE3NhYDNwcOAScmNgUnFx4BBwYmEwc3PgEXFgYBIiY0Nh4BFAYDIgYUFjI2NCYCHjM1BxQVHjT+H5mZFSoHCiwBkTUzBxQVHjQB4ZmZFSoHCiz9OUeRFQ4KEEQ7kUcKKhYfAgJrR5EVDgoQRDuRRwoqFh8C/phhiorCiIhhNk5ObExMAv6YmBYoCAoq/m81NAgWFR40/h+YmBUqBwosAZA0NQcUFh42AY2RSAoqFSAE/ZhHkRUOChBEO5FHCiwUHwICakiRFg4LEET+BYy+jgSGxoQBaUxsTExsTAAAAAMAAAAAA5ACPwASABwAJgA9QDojGg4FBAUEAUwBAQAGCAIEBQAEaQcBBQICBVkHAQUFAmEDAQIFAlEUEyYlISAYFxMcFBwUExQSCQYaKxE0NjIfATc2Mh4BBiIvAQcGIiY3IgYUHgE/AScmBTY0JgYPARcWMoS6QkhJQbiEAoi2QkhJQbqE4Sc4OE4dREQdAeobNlAbRkUbUAFeXYRCRUZBhLqEQkVGQYS8OE82Ah1DQh2iG1A4AhpEQhwAAQAAAAADMQJSAA4AEkAPDAUCAEkBAQAAdhQSAgYYKxE0NjIXCQE2MhYUBwkBJiQ0EAExATASMiQS/nr+eRICFRkkEv7RAS8SJDIS/nkBhxMAAAAAAQAAAAADMAJZAA4AEkAPCgMCAEoBAQAAdhQXAgYYKzU0NwkBFhQGIicJAQYiJhIBhwGGESM0Ef7R/s8SMiSnGhEBh/55ETQjEQEx/s8RIwAC////agPoA1MAJABPAC1AKgkBAgEBTAABAgGFAAIDAoUAAwAAA1kAAwMAXwAAAwBPS0o2NRgXMwQGFysBERQGIyEiJjcRND4DPwE2PwE+Ax4DHwEeBgE2Nz4BLwEuAQcGBwYPAQ4BLgMnJicmBg8BBhYXFhceBDI+AwPoNCX8yiQ2AQsiDCgTNSIubAI2Gi4eMBg2AmwuRCgmDCIL/sWTLgYCBRUEEAWBPwIbJwwwHi4aNgJoWAYOBRUFAgYukwUuGi4oLCgwGDIB5f3eJTQ0JQIiCAkgCCIOKBoiTwIoEhYCEhYkBE8iNBwiCCAJ/rJqIgUOBh0GAgVeLQIUHQkWAhIWJARKQQUCBh0GDgUiagUiEhoMDBwQJAAAAAEAAP/KA6EDQAAfAB1AGhIPCgQDBQACAUwAAgAChQEBAAB2HRQXAwYZKwEUDwETFRQOAS8BBwYiJjU0NxMnJjU0NyU3NjIfAQUWA6EPyjAMFQz7+gwWDAEwyw4fARh+CyAMfQEYIAHpDA/F/ukMCxABB4SEBxIKBAgBF8UPDBUFKP4XF/4oBQAEAAD/aQSbA1EAFAAdACYALwAwQC0MBgIAAwFMCAEASQABAgGFBgQCAgMChQcFAgMAA4UAAAB2ExQTFBMVHCMIBh4rARQGBCciJxcFPgE/ASY1NDYkIAQWBzQmIgYUFjI2JzQmIgYUFjI2JzQmIgYUFjI2BJue/vCgenAC/pssNgQEap4BEAE+ARKc+So7Kio7KvoqOyoqOyr6KjsqKjsqAYF+1n4BJwNrO4YnJniSftZ8fNZ+HSoqOyoqHh0qKjsqKh4dKio7KioAAAABAAD/aQSbA1EAFAAcQBkMBgIAAQFMCAEASQABAAGFAAAAdhwjAgYYKwEUBgQnIicXBT4BPwEmNTQ2JCAEFgSbnv7woHpwAv6bLDYEBGqeARABPgESnAGBftZ+AScDazuGJyZ4kn7WfHzWAAABAAD/aQPoAsMAJgAcQBkbAQABAUwNAQBJAAEAAYUAAAB2JCIjAgYXKwEUDgEjIicGBwYHBiYnNSY2Jj8BNj8BPgI/AS4BJzQ+AjMyHgED6IbmiCcqbpMbJAoOAwIEAgMMBA0UBxQQBw9YZAFQhLxkiOaGAV5hpGAEYSYIBAEMCgECCAQDDwUOFggcHBMqMpJUSYRgOGCkAAf///9qBHcDCwACAAUACQAMABAAFAAmAFJATwEBCQABTAAJAAmGAAoIBgICAwoCZwcFDAMDAAADVwcFDAMDAwBfBAELAwADAE8GBgAAJiMcGxQTEhEQDw4NDAsGCQYJCAcFBAACAAINBhYrEwEDARMhJzcjBwkBIyUhJyMFMycjNxMWFAcBBiInAS4BNxM2MyEydgFcpwEQw/57TXKSoQI6AVy1/jEBfXKZAVzBoZLA1wcK/ekKIgn96QkCCNcKEgKDEgGl/o0Bc/5SAa5I1tb+RQFzSNbW1jn+4goaCf3ECwsCPAkaCgEeDwAAAgAA/7YCvAMIABsAIwA1QDIEAgYDAAUBBQABgAABAYQAAwUFA1kAAwMFYQAFAwVRAQAiIR4dGBcUEgsIABsBGwcGFisBMhYVERQPAQYjISIvASY1ETQ2OwE1NDYyFh0BJRUzNTQmIgYCgBQoMDwqNv7eOCo8MB4UZGbEZv7UyDZcNgHcJhb+ejASEhAQEhIwAYYWJkZueHhuRlpaWjQ6OgAAAAAD//7/aQPoA1IAEQAlAC4Ak7UfAQEEAUxLsAxQWEAzAAYCAwIGcgUBAwcCAwd+AAcEAgcEfgAEAQIEAX4AAQGECAEAAgIAWQgBAAACYQACAAJRG0A0AAYCAwIGA4AFAQMHAgMHfgAHBAIHBH4ABAECBAF+AAEBhAgBAAICAFkIAQAAAmEAAgACUVlAFwEALSwpKCUkIyIhIBkYCgkAEQERCQYWKwEyHgIXFA4CLgQ+AgE2NTQuAiIOAgcUFzYzFjI3Mic0Jg4CHgE2AfRmuIhMAk6IttC2iEwEVIDAAbtURHSerp50QgJUJIZJzEmGX3y0egSCrIQDUlCEvGRluoRSAk6Gusq6hk79D3OLV550RER0nleLc7dISLJZfgJ6tngGhAAAAwAA/6MC2QMZABcAIAAoAElARgIIAgAGBwYAB4AAAwAGAAMGaQkBBwAFBAcFaQAEAQEEWQAEBAFfAAEEAU8hIQEAISghKCUkHRwZGBQTEA4JBgAXARcKBhYrATIWFxEUBiMhIiY1ETQ2NzM1NDYyFgcVAzI2NCYOAhYTNTQmIgYHFQJxKzwBPir99yw8PCw0fKp8AdAcKCg4JgIqgj5WPAEB4D4q/pMqPj4qAW0rPAFpVnp6Vmn+USg2KgImOiQBepwsPD4qnAAEAAD/owLZAxkABAAfACgALACYS7AZUFhANAUBAwYHBwNyCgECCwEGAwIGaQAHAAgABwhoAAAAAQkAAWkMAQkEBAlXDAEJCQRfAAQJBE8bQDUFAQMGBwYDB4AKAQILAQYDAgZpAAcACAAHCGgAAAABCQABaQwBCQQECVcMAQkJBF8ABAkET1lAISkpISAGBSksKSwrKiUkICghKBoYExALCQUfBh8REQ0GGCslNDIWJhMyFhcVMzIWFxEUBiMhIiY1ETQ2NzM1NDY3NhciBgcVMzU0JhMRIREBKoYCikVVegE0KzwBPir99yw8PCw0PCwwOSw8AdE+2v33dESIAgLnfFRpPir+kyo+PioBbSs8AWk8XhocaD4qnJwsPP1aAW3+kwAAAwAA/7YC2QMFABoAKAA4AFdAVDQtJiUfHgYHBDUsAgEIDAEABgNMAAQFBwUEB4AABwgFBwh+AAIAAoYAAwAFBAMFaQAIAAEGCAFpAAYAAAZZAAYGAGEAAAYAUSYjHRISFhQSFwkGHysBNhYVERQHBiInLgEHFRQGLgE1ETQ3NjIXFjIFLgEHFTYWFx4BNzUGJhMeATc1BiMiJy4BBxU2MzICgBlAD1DiUC9+Mx4qIA9Q4lAyjP75L34zQ5w4MIo4SKgQL34zNjJkSzCKODQ1cAK1GRwh/l4VD1BQLggo7hUgAhwXAqYVD1BQMhgvBid3IRo2MQ4jeiAg/uQuCCh3GUgxDiR4FQAAAQAA/7YC2QMFABoAKUAmDAEAAQFMAAMEA4UABAEEhQABAAGFAAACAIUAAgJ2EhYUEhcFBhsrATYWFREUBwYiJy4BBxUUBi4BNRE0NzYyFxYyAoAZQA9Q4lAvfjMeKiAPUOJQMowCtRkcIf5eFQ9QUC4IKO4VIAIcFwKmFQ9QUDIAAAAABgAA/74EewL/AA8AHwArADcAPABHAG9AbAABDQECCAECZwAHDwEGCQcGZwAIAAkFCAlpAAUOAQQLBQRnEAEKAAsDCgtpAAMAAANXAAMDAF8MAQADAE8+PS4sIiAREAIAQ0I9Rz5HPDs6OTQxLDcuNyglICsiKxkWEB8RHgoHAA8CDxEGFisFISImJxE0NjMhMhYHERQGASIGFxEUFjchMjY1ETQmJwEjIiY0NjsBMhYOAScjIiY0NjsBMhYOATc0MhYiFzIWFxQGIiY1NDYD3vy+QVoBXEADQkFcAVr8fBUgAR4WA0IVHh4V/ffRFR4eFdEVIAIcF9EVHh4V0RUgAhy6zgHQaDlIAUpySEhCXEACCEFcXEH9+EFaAtggFf34FSABHhYCCBYeAf4rICoeHiog0R4qICAqHhlp0SwsHw8WFg8eLgAAAAMAAP+fArADHQAQABoAIgBLQEgYAQMEAUwHAQAABQIABWkJBgICAAQDAgRpCAEDAQEDWQgBAwMBXwABAwFPGxsSEQEAGyIbIh8eFhURGhIaDQwJBgAQARAKBhYrATIWFREUBiMhIiY1ETM1NDYTMjY0JiIGBxQWEzU0LgEGBxUBmXOkYkX+sUZicKQ7FyAeMhwCIPZgjGIBAx2kcv5BRWRkRQGGOXOi/WMgMCAgFxgiAVA5RWACZEM5AAAABAAA/58CsAMdABAAGAAiACsATEBJCQEAAAQCAARpAwECAAYIAgZnAAgABwUIB2kKAQUBAQVXCgEFBQFfAAEFAU8aGQEAKikmJR4dGSIaIRcWExINDAkGABABEAsGFisBMhYVERQGIyEiJicRMzU0NgMVITU0LgEGATI2NREhERQWMzcUBiImNDYyFgGZc6RiRf6wRmABcKQ1AU9gjGIBFxcg/kIgF+AgLyAgLiIDHaRy/kFFZGRFAYY5c6L+6zk5RWACZP3GIBgBF/7pGCCoFyIgMCAgAAAABQAA/2oC7wNSABUAJQA1AD0ASABTQFAlAQwFAUwAAQAJBwEJaQAHAAsABwtpCggGAgQAAAUMAAVnAAwADQQMDWkABAMDBFcABAQDXwADBANPRkVBQDs6NzYzMhMTEyY0NRMTEw4GHys9ATQ2NzU0NjIWHQEyFgcVFAYrASImNxQWFzMyNjc1NCYnISIGFzczNTQ2MhYdATM1NCYiBhUXMzU0Jg4BFRM0Nh4CBwYiJyY2KKTqpCc4AaR1vHWkP4BavFqAARIO/c4OEgFdP1yAXD+CsoJe+khqSD8kNCQBFg42DhWD2yc2AX11pKR1fTgm23WkpHVagAGCWdsOEAESDV59QFxcQH19WoCAWn19NEoCRjb+iRkmAiI3OCkpOAAAA//2/2oD9QNSABsAJQA1ADhANRMEAgQFIyACAwQCTAAAAAUEAAVpAAQAAwIEA2kAAgEBAlcAAgIBXwABAgFPFxkUEjsbBgYcKxcmNzY3JicuATY3NiAXHgEGBwYHFhcWBiMhIiY3ISYvAQYiJwcGEwYWHwEWMj8BPgEnLgEiBgQOJ3esVCMKAjAqVAEWUyswBAkjVKx3Jxow/JUVIjcDa22eTy1cLk6gVQ06Qwo4hjgJQzoNDnzUfGkrG04maZY3hqQ4aWk5oog2lmkmThtYGiRJIxAeHhAjAhFn0lEOQUEOUtBocaCgAAz///+JA+gDMwARACMALAA1AD4ARwBXAFsAZABtAHYAfACeQJsjAQ0EAUx8AQQBSwAAAAQNAARnAA0VEA1XABUWARAXFRBnABcAAxMXA2cAEwAUDxMUZwAPEQ4PVwAREgEOCxEOZwALAAwJCwxnAAkACgcJCmcABwAIBQcIZwAFAAYCBQZnAAIBAQJXAAICAV8AAQIBT3t5dnNyb21qaWZkYWBdW1pZWFZUTkxHRENAPjs6NzEyMTQjIzQ3MxgGHysVETQ2NyEyHwEWFREUBgchIiY3FBY3ITI2JxEjIiY9ASEiBhcTNDMhMhQnISI1NDMhMhQjISI1NDMhMhQHISI1NDMhMhQnISI9ATQ2FzMyFhcVFAYnIyImNzM1IwU0MyEyFCchIjU0OwEyFCsBIjU0OwEyFAcjIiUUFjczJzYoApAZFLsSNij81Cc4QBAPAywOEgF8KDb9jw4SAT4QAs4QEP0yEBACzhAQ/TIQEALOEBD9MhAQAs4QEP0yEBIN2w4QARIN2w0SP5ycARkPAXcQEP6JDw+dDw+dDw+dDw+dDwEZJhh9uxkC7ic2ARK7FBn9ric2ATgmDhIBEA8CMzYnfRIN/WAQIAFtECBuDx4BbRAgAX27DhIBEA+7DhIBEC59rBAgAW0QIG4PHgEfGSYBuwAABAAA/+cD/wLVABAAIQAqADMAO0A4KwEGBAFMAAQDBgMEBoAAAAADBAADZwAGAAUCBgVqAAIBAQJXAAICAV8AAQIBTxQTFTY0NjMHBh0rNRE0NjMhMh8BFg8BBiMhIiY3FBY3ITI/ATYvASYjISIGFwU0PgEeAQYuATcUFj4BLgIGSDUCUkQlnCsrnCVE/a41SD8kGgJSIxGdFRWdESP9rhkmAQIyNlA0AjhMOiEmMiYCIjYiZAH0M0o7+kJC+jtINRkmAR36ISH6HSQa+ic2AjpKOgI2JxkmAiI2IgQqAAAEAAD/agNZA1IAEwAaACMAUwDTQAsUAQIEUjsCBwsCTEuwElBYQEYPAQwDCwMMchAODQMLBwMLB34TEQoIBAcGAwcGfgkBBgUFBnAAAQAEAgEEZwACAAMMAgNnEgEFAAAFVxIBBQUAYAAABQBQG0BIDwEMAwsDDAuAEA4NAwsHAwsHfhMRCggEBwYDBwZ+CQEGBQMGBX4AAQAEAgEEZwACAAMMAgNnEgEFAAAFVxIBBQUAYAAABQBQWUAqJCQbGyRTJFNRUE9OTUxBQD8+PTw6OTg3NjUoJyYlGyMbIxMmFDU2FAYbKwEeARURFAYHISImJxE0NjchMhYXBxUzJi8BJhMRIyImJzUhETcVMzUjNz4CBzMUHwEeAR8BIxUzNSMnNzM1IxUzBw4BDwEjNCcmLwEzNSMVMxcHAzMQFh4X/RIXHgEgFgH0FjYPStIFB68GxugXHgH+U6idKjoDBAYBAQMCAQQCPCujJmtsJpwpOQIIAQEBAwMGOyqiJmptAn4QNBj9fhceASAWA3wXHgEWECbSEQavB/ywAjwgFen8poM7O1oECgYBAgQEAgQDWjs7mJ47O1kECgMBAgMGB1k7O5ieAAUAAP86A6oDgQAoADEAQgBLAFQAhECBGwoCBAEfAQoGAAENCgNMAAQBBgEEBoAABgoBBgp+AAkNBw0JB4AAAgMBAQQCAWkPAQoADQkKDWkABwAIDAcIZxABDAALBQwLaQ4BBQAABVkOAQUFAGEAAAUAUU1MREMqKVFQTFRNVEhHQ0tES0A/Ojc0Mi4tKTEqMRgjMygUEQYbKwEWFRQABAA1NBI3NSc1IyImPgE3MzIeAQYnIxUHFRYXPwE2MhYGDwEGATI2ECYEBhAWEzMyFhQGJyMiJj0BNDYyFgcnMhYSBiImEjYTMjYuAQ4CFgNXU/7s/n7+7PCyAjMVIAIcF9AVHgIiEzQBnHIGGw8qIAIOGgX+dJfW1v7S1tbLaBUgIBWcFSAgKiABNIG2Arr+vAS0g2uaApbalgKaAhl1lML+7gIBFsC0AQoTAQMzICoeASAoIgEzAQMRbAkaDx4sDxoF/YXWAS7WAtL+ztIBnh4qIAEeFpwWHh4Wnbj+/ri4AQK4/cKa1poCltqWAAIAAP+dA48DIQAIABQASUBGBAECAwUDAgWACQcCBQYDBQZ+CAEAAAMCAANnAAYBAQZXAAYGAWEAAQYBUQkJAQAJFAkUExIREA8ODQwLCgUEAAgBCAoGFisBMgAQAAQAEgABNSM1IxUjFTMVMzUB0bgBBv76/pD++AIBBAGZp3CoqHADHf76/o7+/AQBDAFqAQ7+BnCnp3CoqAAAAAkAAP+fA48DHQATABcAGwAfACMAJgAqADYAQgCMQIkxAQARAUwkAQcBSwQCAgAREhEAEoATAREUARIDERJpBQEDDwwCCAkDCGcZEBgNFgUJDgoCBgcJBmcXCxUDBwEBB1cXCxUDBwcBXwABBwFPJycgIBwcGBgUFEFAOzo1NC8uJyonKikoJiUgIyAjIiEcHxwfHh0YGxgbGhkUFxQXFBMTExEREBoGHSsBMxEhETMVFBYyNjc1MxUUFjI2NwE1IxU3NSMVBTUjFTc1IxUXNyM3NSMVATU0NjIWBxUUBiImJTU0NjIWBxUUBiImAuin/IOoQlxAAXBCXEAB/kJwcHABT3BwcN9wcHBw/nkiLiICIC8gAU4gLyIBIC4iAq388gMOOC5CQi44OC5CQi79m29v33Bw329v33Bw329wcHABh3AXICAXcBggIBhwFyAgF3AYICAAAAAACQAA/58DjwMdAAcACwAPABMAFwAbAB4AKgA2AIVAgiUBAQ8BTBwBCwFLAwEBDxAPARCAEQEPEgEQBA8QaQgGAgQVCRQHEwUFCgQFZw4MAgoXDRYDCwIKC2cAAgAAAlcAAgIAXwAAAgBPGBgUFBAQDAwICDU0Ly4pKCMiHh0YGxgbGhkUFxQXFhUQExATEhEMDwwPDg0ICwgLEhERERAYBhsrBSERMxEhETMBNTMVMzUzFTM1MxUFNTMVMzUzFTM1MwE1NDYyFgcVFAYiJiU1NDYyFgcVFAYiJgOP/INwAp1w/Stwb3BvcP3ScG9wb3D+CSIuIgIgLyABTiAvIgEgLiJhAw79YwKd/rJvb29vb2/gcHBwcHABh3AXICAXcBggIBhwFyAgF3AYICAADwAA/2oDoQNSAAMABwALAA8AEwAXABsAHwAjADMANwA7AD8ATwBzAJ5Am0ElAh0SSS0kAxMdAkwgAR4aARIdHhJpIR8CHRMJHVcbARMZFw0DCQgTCWgYFgwDCBURBwMFBAgFZxQQBgMEDwsDAwEABAFnDgoCAwAcHABXDgoCAwAAHF8AHAAcT3JwbWpnZmNgXVtWU01MRUQ/Pj08Ozo5ODc2NTQxLyknIyIhIB8eHRwbGhkYFxYVFBMSEREREREREREQIgYfKxczNSMXMzUjJzM1IxczNSMnMzUjATM1IyczNSMBMzUjJzM1IwM1NCYnIyIGBxUUFjczMjYBMzUjJzM1IxczNSM3NTQmJyMiBhcVFBY3MzI2NxEUBiMhIiY1ETQ2OwE1NDY7ATIWHQEzNTQ2OwEyFgcVMzIWR6GhxbKyxaGhxbKyxaGhAZuzs9aysgGsoaHWs7PEDAYkBwoBDAYkBwoBm6Gh1rOz1qGhEgoIIwcMAQoIIwgK1ywc/O4dKiodSDQlJCU01jYkIyU2AUcdKk+hoaEksrKyJKH9xKH6of3EoSSyATChBwoBDAahBwwBCv4msiShoaFroQcKAQwGoQcMAQos/TUdKiodAssdKjYlNDQlNjYlNDQlNioABAAA/2oDoQNSAAMAEwAjAEcAh0AMFQUCBwIdDQIDBwJMS7AKUFhALAsJAgcCAwMHcgoBCAQBAgcIAmkFAQMAAQADAWgAAAYGAFcAAAAGXwAGAAZPG0AtCwkCBwIDAgcDgAoBCAQBAgcIAmkFAQMAAQADAWgAAAYGAFcAAAAGXwAGAAZPWUASRkRBPjs6MyU2JiYmJBEQDAYfKxchESE3NTQmKwEiBh0BFBY7ATI2JTU0JisBIgYdARQWOwEyNjcRFAYjISImNRE0NjsBNTQ2OwEyFh0BMzU0NjsBMhYHFTMyFkcDEvzu1woIJAgKCggkCAoBrAoIIwgKCggjCArXLBz87h0qKh1INCUkJTTWNiQjJTYBRx0qTwI8a6EICgoIoQgKCgihCAoKCKEICgos/TUdKiodAssdKjYlNDQlNjYlNDQlNioAABQAAP+aAwgDKAAuADIANgA6AD4ARgBKAE4AUgBWAF4AYgBmAGoAbgB2AHoAfgCCAIYBVLcfEA0DABEBTEuwC1BYQGgGBAIDABEQEAByBQMCASUbAhEAARFpJBoCEC0jGQMPDhAPaCwiGAMOKyEXAw0MDg1nKiAWAwwpHxUDCwoMC2coHhQDCjInMR0wEy8HCQgKCWcmHBIDCAcHCFcmHBIDCAgHXy4BBwgHTxtAaQYEAgMAERARABCABQMCASUbAhEAARFpJBoCEC0jGQMPDhAPaCwiGAMOKyEXAw0MDg1nKiAWAwwpHxUDCwoMC2coHhQDCjInMR0wEy8HCQgKCWcmHBIDCAcHCFcmHBIDCAgHXy4BBwgHT1lAbHd3X19HRy8vAACGhYSDgoGAf359fHt3end6eXh1dHFwbm1sa2ppaGdmZWRjX2JfYmFgXVxZWFZVVFNSUVBPTk1MS0dKR0pJSEVEQUA+PTw7Ojk4NzY1NDMvMi8yMTAALgAuFRgXFhUWETMGHSsVETM0PwE+AjIeAgcVMzU3NhY2FzIeAxQXFTM1NzYWNhY2FzIeAh0BMxElFTM1JzM1IzUzNSM1MzUjNxQyPQE0IhUTFTM1JzM1IzUzNSM1MzUjNxQyPQE0IhUTFTM1JzM1IzUzNSM1MzUjNxQyPQE0IhUTFTM1JzM1IzUzNSM1MzUjXAEEAxAiLiQMCgE3BAQQIBgSGhIKCAE2AgIEDBIYExgiDghc/TmLi4uLi4uLi0dKSlmYmJiYmJiYmH5LSy+YmJiYmJiYmKhLSwWMjIyMjIyMjGYDBx0KIBYQEBAQLAonJyAgBCQKCAgaDCQHHBwZGQIoBhYHEBAsCif8+bFwcBZ3FoIVcFshIYIhIf15cHAWdxaCFXBbISGCISH9eXBwFncWghVwWyEhgiEh/XlwcBZ3FoIVcAAAC////2kD6QNSACcATwBTAFcAWwBfAGMAZwBrAG8AcwDGQMNPAQoJLwEIEQJMBgQCAwAPDQsDCQoACWcFAwIBDgwCChQBCmkgGgIUKiEnGyQFFRIUFWceGAISKR8mGSMFExASE2ccFgIQKB0lFyIFEQgQEWcACAcHCFcACAgHXwAHCAdPcHBsbGhoZGRgYFxcWFhUVFBQcHNwc3JxbG9sb25taGtoa2ppZGdkZ2ZlYGNgY2JhXF9cX15dWFtYW1pZVFdUV1ZVUFNQU1JRTUtIR0RDQD88Ozg3NDI0NSMTExMTEyMrBh8rFRE0NhczNTQ2MhYdATM1NDYyFh0BMzU0NjIWHQEzMhYHERQGJyEiJjcUFjMhMjYnETQmKwEVFAYiJj0BIxUUBiImPQEjFRQGIiY9ASMiBhcTNTMVJzUzFSc1MxUTNTMVJzUzFSc1MxUTNTMVJzUzFSc1MxUwJIcSGhK8EhoSvBIaEocjMgEwJPzAIzJACgsDQAoMAQoLhxIaErwSGhK8EhoShwoMAZx9fX19fV59fX19fV19fX19fUIC4iMyAT8NEhINPz8NEhINPz8NEhINPzAk/R4jMgEwJAoMDAoC4goMPw0SEg0/Pw0SEg0/Pw0SEg0/DAr9pV5enF5enF5e/sheXpxeXpxeXv7IXl6cXl6cXl4AAAP//P+QA5oDLAAIABMAKQBiQF8MAQMCIyIYFwQFBwJMAAcGBQYHBYAABQQGBQR+CAEACQECAwACaQADAAYHAwZpCgEEAQEEWQoBBAQBYQABBAFRFRQKCQEAJiQgHhsZFCkVKRAOCRMKEwUEAAgBCAsGFisBNgASAAQAAgAXIgYVBhYzMjY1NAMyNjcnBiMiPwE2IyIGBxc2MzIPAQYBxr4BEAb+9v6E/u4GAQzyKi4CIiAmLrQebDQSMBgOCioaMB52OBA0FgwMJBoDKgL++P6E/u4GAQoBfAESljAaHCAsIDr9rjQ0GCQmoGA6LhoiIphoAAAD//3/sQNfAwsADwA3AEQASEBFKQEFAwkBAgEAAkwABAIDAgQDgAADBQIDBX4ABwACBAcCaQAFAAABBQBnAAEGBgFXAAEBBmEABgEGURUeKxMWJiYjCAYeKyU1NCYrASIGHQEUFjsBMjYTNC4BIyIHBh8BFjMyNz4BMhYVFAYHDgEXFRQWOwEyNjQ2PwE+AxcUDgEiLgI+ATIeAQH0CghrCAoKCGsICo8+XDGIRwkNSgQGCQUeJTgqFhsjPAEKCGsIChgSHAoeFAzXcsboyG4Gerz0un5SawgKCghrCAoKAX8xVC53DQs3BAcmGx4SFRoMD0IlFAgKChIiCxAGGhwoUnXEdHTE6sR0dMQAA//8/5ADmgMsAAgAFgA/AFhAVTg2AgMFEwECAwJMAAYEBQQGBYAABQMEBQN+AAMCBAMCfgcBAAAEBgAEaQgBAgEBAlkIAQICAWEAAQIBUQoJAQAnJiIgHRsRDgkWChYFBAAIAQgJBhYrATYAEgAEAAIAEzI2NTYmKwEiBgcUFhcTNjU0JiMiBwYHFTM1NDc2MhcWFRQHBg8BBg8BBgcGBxUzNTQ3Nj8BNgHGvgEQBv72/oT+7gYBDLweJgImHgIcJgImHKgaalJAKEQEbhAQTgwQEAgMFgoKFQsGDgRsBAYWHC4DKgL++P6E/u4GAQoBfAES/R4mHB4mJBweJgIBSCIsTkwaKmgEBBocGBQUGBIWDAgPBwgRCQgUOggEDBAUEBIiAAP///+JA6oDMwARADQAPQA8QDklFxMDAwIBTAAABACFAAQCBIUAAgMChQADAAYFAwZqAAUBAQVZAAUFAWEAAQUBURMTLh0mFyQHBh0rETQ+AhcyHgIOBC4CARc2MzIVFA8BBiIGJwcOAR0BMzU0PwEyPgI3PgE3NCYjIgMUFjI2LgIGSn6sYV+ufEwCSICqwa58TAFOHy4uMgIGBAYOAigWDHUDBgEUDhgGExQBVEBVDypDKgImRigBXl+ufEwBSn6swKyASAFKfq4BDmUdFgUDCAUMAhUMGhgmGgMDBggKCgkQKCQxRP6NICIiQCIBJAAAAAAE////iQOqAzMAEQAhAEMATACQtzMmIwMFBAFMS7AKUFhANgAGAwQDBgSAAAQFAwQFfgAHCAICB3IAAAADBgADaQAFAAgHBQhqAAIBAQJZAAICAWIAAQIBUhtANwAGAwQDBgSAAAQFAwQFfgAHCAIIBwKAAAAAAwYAA2kABQAIBwUIagACAQECWQACAgFiAAECAVJZQAwTEy8cFRcYFyQJBh8rETQ+AhcyHgIOAyIuAjcUHgI+Azc0LgEiDgE3FzYyFRQGDwEGDwEOAR0BMzU0Njc+AT8BNjc+ATc0JiMiAxQWMjYuAgZKfqxhX658TAFKfqzArnxMdjhegpCAYDYBXqK+pFzXHy1hBAEGBQI4Fgx1BgMBFAcTDAYTFAFUQFMRKkMqAiZGKAFeX658TAFKfqy/rn5KSn6uX0eEXDoCNmCASV+iXl6iUWUdFwQIAQUEAR0MGhglGgMGAgEIBAsHBhEoIzFE/o0gIiJAIgEkAAIAAP+6A0gDAgAIABQAKEAlFBMSERAPDg0MCwoLAQABTAIBAAEAhQABAXYBAAUEAAgBCAMGFisBMhYQBiAmEDYBNycHJwcXBxc3FzcBpK729v6k9vYBBJpWmphYmppYmJpWAwL2/qT29gFc9v5cmlaYmFaamFaYmFYAAAACAAD/nQOPAyEACAAUAChAJRQTEhEQDw4NDAsKCwEAAUwCAQABAIUAAQF2AQAFBAAIAQgDBhYrATIAEAAEABIAASc3JwcnBxcHFzcXAdG4AQb++v6Q/vgCAQQBlo2NT46NT42NT42OAx3++v6O/vwEAQwBagEO/bCOjU+NjU+Njk+NjQACAAD/yQMrAvMAFAAgAChAJSAfHh0cGxoZGBcWCwEAAUwCAQABAIUAAQF2AQALCgAUARQDBhYrATIXFhcWFAcGBwYiJyYnJjQ3Njc2EzcnBycHFwcXNxc3AZZwXls1Nzc1W17fXlw2Nzc2XF7DfVV8flR/f1R+fFUC8zc1XF7dX1w1Nzc2W1/dXlw1N/5sfVR9flV9fVV/fVMAAAACAAD/aQPqA1MACAAUACFAHhQTEhEQDw4NDAsKCwEAAUwAAAEAhQABAXYTEgIGGCsRNAAEAAIABAA3FzcXNyc3JwcnBxcBJgGcASgE/uD+XP7i132cnH2cnH2cnH2cAV7PASYC/t7+Xv7eAgEmM32cnH2cnH2cnH2cAAAAAgAA/2kD6ANRAAwAGAAhQB4YFxYVFBMSERAPDgsAAQFMAAEAAYUAAAB2FRMCBhgrARQOASAuARA+ASAeAQE3JzcnBycHFwcXNwPohub+8OaGhuYBEOaG/q1HoaFHoaFHoaFHoQFdiOaGhuYBEOaGhub+kEehoUehoUehoUehAAACAAD/nwMfAx0AGwAfAFFATgwBCgkKhQUBAwIDhg0LAgkOCAIAAQkAZxAPBwMBAgIBVxAPBwMBAQJfBgQCAgECTxwcHB8cHx4dGxoZGBcWFRQTEhEREREREREREBEGHysBIwczFSMHIzcjByM3IzUzNyM1MzczBzM3MwczATcjBwMfmRy1wxxwHN8cbxuLmhu1xBtwHN8ccByL/tsc3xwBzt9w4ODg4HDfcN/f39/+sd/fAAADAAAAAAOYAcwACAARABoAOkA3CAQHAgYFAAEBAFkIBAcCBgUAAAFhBQMCAQABURMSCgkBABcWEhoTGg4NCREKEQUEAAgBCAkGFisTMhYUBiImNDYhMhYUBiImNDYhMhYUBiImNDZuLkBAXEBAAYwuQEJYQkABjC5AQFxAQAHMQFpCQlpAQFpCQlpAQFpCQlpAAAAACQAA/28D3gNNAAQACQAOABMAGAAdACIAJwAsAEpARxAKAgQFBIURCwIFAgWFDggCAgMChQ8JAgMAA4UMBgIAAQCFDQcCAQF2LCsqKScmJSQiISAfHRwbGhgXEhESERIREhEREgYfKxU0IBAgETQgECARNCAQIAE0IBAgETQgECARNCAQIAE0IBAgETQgECARNCAQIAEE/vwBBP78AQT+/AFtAQT+/AEE/vwBBP78AWwBBf77AQX++wEF/vsPgv78Ae+C/vwB74L+/P2ogv78Ae+C/vwB74L+/P2ogv78Ae+C/vwB74L+/AAAAAASAAD/VQQSA2gADwATACMAJwA3ADsASwBPAF8AYwBzAHcAhwCLAJsAnwCvALMA/UD6NCAuFCgFCCIWAgoLCApnNSMvFykFCyEVAgkECwlnMhwsECYFBB4SAgYHBAZnMx8tEycFBx0RAgUABwVnMBgqDCQFABoOAgIDAAJnMRsrDyUFAwEBA1cxGysPJQUDAwFfGQ0CAQMBT7CwoaCcnI2MiIh5eHR0ZWRgYFFQTEw9PDg4KSgkJBUUEBABALCzsLOysammoK+hrpyfnJ+enZWSjJuNmoiLiIuKiYF+eId5hnR3dHd2dW1qZHNlcmBjYGNiYVlWUF9RXkxPTE9OTUVCPEs9Sjg7ODs6OTEuKDcpNiQnJCcmJR0aFCMVIhATEBMSEQkGAA8BDjYGFis3MhYdARQGByMiJic1NDYzFzUjFRMyFh0BFAYHIyImPQE0NjMXNSMVEzIWHQEUBgcjIiY9ATQ2Mxc1IxUBMhYdARQGByMiJic1NDYzFzUjFRMyFh0BFAYHIyImPQE0NjMXNSMVEzIWFxUUBgcjIiY9ATQ2Mxc1IxUBMhYHFRQGByMiJjc1NDYzFzUjFRMyFgcVFAYHIyImNzU0NjMXNSMVEzIWBxUUBgcjIiY3NTQ2Mxc1IxXRLDw+KmkrPAE8LGlpaSw8PCxpLDw8LGlpaSo+PCxpLDw+KmlpAdUrPkApaCs8ATwsaGhoKz4+K2gsPDwsaGhoKj4BPitoLDw+KmhoAdUqPgE8K2gsPgE8LWhoaCo+ATwraCw+ATwtaGhoKj4BPCtoLD4BPC1oaI4+KmgsPAE+K2gqPtBoaAI9PippKzwBPippKj7RaWkCPj4raCs8AT4qaCs+0Who/fc+KmgsPAE+K2gqPtBoaAI9PippKzwBPippKj7RaWkCPj4raCs8AT4qaCs+0Who/fc+KmgsPAE+K2gqPtBoaAI9PippKzwBPippKj7RaWkCPj4raCs8AT4qaCs+0WhoAAACAAAAAANDAn0ACwAXADFALgQBAAABAgABZwUBAgMDAlcFAQICA18AAwIDTw0MAQATEAwXDRYHBAALAQoGBhYrATIeAQYjISImNDYzATIeAQYHISImNDY3AtksPAJAKv2PLDw8LAJxLDwBPiv9jyw8PioCfT5UPjxYPP6UPlY8ATxYPAEAAAAAAgAA/58BYQMdAAYADQA3QDQKAQNKAwEASQQBAwUDhQcBBQIFhQYBAgAChQEBAAB2BwcAAAcNBw0MCwkIAAYABhIRCAYYKzcVMwcnMz0CIzcXIxXxcKeocHCop3Dvp6mpp9+op6eoAAABAAD/agH8A1IACQAdQBoEAQFKCQEASQIBAQABhQMBAAB2ERIREAQGGis1MxEjNxcjETMHqqr+/qqq/mgB7P7+/hT+AAEAAAAAA+gCogAGAAazBQEBMisRNwkBFwEnlAFgAWCU/gyUAg6U/qEBX5T+DJQAAAYAAP9qAocDUgAIABEAGgAjACwANQBKQEctAQUEJAEDAhsBAQADTAoBBAsBBQIEBWkIAQIJAQMAAgNpBgEAAQEAWQYBAAABYQcBAQABUTQzMC8rKhQTFBMUExQTEgwGHysVNDYyFhQGIiYRNDYyFhQGIiYRNDYyFhQGIiYBNDYyHgEGIiYTNDYyHgEGIiYTNDYyHgEGIiZIZkpKZkhIZkpKZkhIZkpKZkgBjUpmRgROXlIESmZGBE5eUgRKZkYETl5SGjRISGhISAGsM0pKZkpKAas0SEhoSEj9RDRISGhISAGsM0pKZkpKAas0SEhoSEgAAAABAAD/agKIA1IABwAGswYCATIrETcBFwkBBwGUAWCU/qEBX5T+oAFelQFflP6g/qCUAWAAAQAA/2oCiANSAAYABrMGAwEyKxUJATcBFwEBYP6glAFglP4MAgFgAWCU/qGV/gwAAwAAAAAD6AKJABcAIAApADpANwwAAgUEAUwABAMFAwQFgAAFAgMFAn4AAAADBAADaQACAQECWQACAgFhAAECAVETFBMXKiUGBhwrETY3Njc2MxYXFhcWFQYHBgcGIyYnJicmJRQWMjY0LgEGFzQ2MhYUDgEmBjpPYYGDiXtnSUAGOk9hgYOJe2dJQAEIisSKisSKVlh8WFh8WAFeMT1QMTwCOjVMSSUxPFAxPQI7NUxIJV6CgryCAoZbPFRUeFQCWAAAAAQAAP+0A+gDAgAhAC4ARQBLADxAOTcBAQBHPjYlJAAGAgEdAQMCA0wLAQBKAAAAAQIAAWkAAgMDAlkAAgIDYQADAgNRRUMyMC0rNQQGFysRNjc2NzYzMhc3NjcyHwEWDwcGLwEmPwEnJicmJRQXNyY1NDY/ASMiBhM3MzI2NTQnNx4BMxYXFhUGBwYHBiMiPwEWFRQGBjpPYYGDHR5KCg0EBDMRDzkvKZApLzkPEDUPDzEIZ0lAAQgvMAlEMzESYoqxKRJiii8/AgQCZ0lABjpPYYGDGThuCUQBRjE9UDA9AoEQAgIgBxplT0j6SFBkGQofCBlWBDVMSCVKO1QYGTNQClSE/nxHgl5KO20CAjRMSSUxPFAxPZ+9GRgzTgAAABEAAP+HA8oDUwAIAA8AFgAcACIAKAAuADQAOgBAAEYATABSAFgAXgBlAGwAjUCKa11bUU8yGxkVEwoIAEotAgcIQyUCCQRhV1U+OzchHw0LCgEJBEwAAAgAhQABCQGGDwEIDgEHAwgHaRENBgMDEAwTBRIFAgQDAmcLAQQJCQRZCwEEBAlhCgEJBAlRIyMJCWloZGNOTUxLSEdGRUJBQD86OTEwLCsqKSMoIygnJhEQCQ8JDxMSFAYYKxE0ACQAAgAkADcWFzY3Ji8BMzY3JicGNxYXNjcGAxYXJicGExYXNjc1JzM1JicGNxYXNSMGAxYXMzUGFzM2NyYnNRYXNjcjNTMmJwYHNTY3JicjEzY3JicGAxYXNjcmAxYXNjcjBgMWFzMmJwYBHAGQAR4C/ub+bP7oPQd2NDkrBLu7BCE+N2Z7MzkrSoNKWHVAKTUXBClFSry8TksfK0VIAlolMU4CRWQCTjE9REpFKQS8vAQgSk5IRTFaAjV1WC81KUBKKzkyXQw5NHUIuwQhIQS7BmU3AW7JARoC/uL+cv7gBAEYu6Z1JRdqdR9oXBkrcYgnF2VLFv01TBNAVBMBD29mFgS7H50DGlh1FwTaTP2nZEK7BLdCZBEEIAQWZm8fYlgaAx8EF3NM/LsTTCITVAMAS2UXJ1z9hxcldaZ1AVhcaJdxKwAAAAIAAP9qAvIDUwAKABMAIkAfCAEBSQABAgGGAAACAgBZAAAAAmEAAgACURMaEgMGGSsRNDYEFhUUBwkBJjcUFjI2NCYiBtwBOtw1/rz+vDXbXIRcXIRcAdmc3gLanntG/lIBrkZ7QlxchFxcAAIAAP/XA48C5QAWAC0A4rYYAQIABQFMS7ALUFhANwAHCAUIB3ILCQIFAAgFAH4KBAIAAggAAn4AAgMDAnAABgAIBwYIZwADAQEDVwADAwFgAAEDAVAbS7AMUFhAOAAHCAUIB3ILCQIFAAgFAH4KBAIAAggAAn4AAgMIAgN+AAYACAcGCGcAAwEBA1cAAwMBYAABAwFQG0A5AAcIBQgHBYALCQIFAAgFAH4KBAIAAggAAn4AAgMIAgN+AAYACAcGCGcAAwEBA1cAAwMBYAABAwFQWVlAGxcXAAAXLRctKickIyAdGhkAFgAWMxMzEgwGGislNxcjFRQGIyEiJj0BMxUUFjchMjYnNQEHJzM1NDY3ITIWBxUjNTQmIyEiBgcVAj+oqHBgR/6yRmJvIhcBThciAf6yp6lwYkYBTkZiAW8gGP6yGCABt9/fOUViYkU5ORYiAR4ZOQFP4OA3RWIBZEQ3NxggIBg3AAIAAP+xA1sDCwAkAEcAXUBaQyUCBgkvAQUGFwEDAggBAQMETAAJCAYICQaABwEFBgIGBQKABAECAwYCA34AAQMAAwEAgAAIAAYFCAZpAAMBAANZAAMDAGEAAAMAUUZFJiUlNiUmNRQkCgYfKwEUFQ4BIyImJwcGIiY9ATQ2OwEyFgYPAR4BNzI2NzY3NjsBMhYTFRQGKwEiJjY/ASYjIgYHBgcGKwEiJjc1PgEzMhYXNzYyFgNLJOSZUZg8SAscFhYO+g4WAglNKGQ3SoInBhgEDGsICg4UEPoOFgIJTVJwS4InBhcFDG8HDAEk5plRmjxICxwYAQUDAZa6PjlICxYO+g4WFhwLTSQqAUo+CjgNDAG4+g4WFhwLTU1KPgo4DQwGBJa6PjlICxYAAAIAAP9pA+gDUgAOAB0AUUBOGBQCBQYOAwIBAAABAwEDTBUBBEoIBwIFBgAGBQCAAgEAAQYAAX4ABAAGBQQGaQABAwMBWQABAQNhAAMBA1EPDw8dDx0iEyQiEiIRCQYdKxURIQcWMzI2NzMGBCciJwM2JDMyFzcRITcmIyIGBwGSoGyWfcIhiiP+7LPPkokjARSzz5OS/m6gbJZ9wiGWAZKga5Z1reYBkgHEruSSkv5uoGuWdQAAAAADAAD/+QPoAn0AEQAiADMARkBDCwICBAINAQADAkwABAIDAgQDgAADAAIDAH4AAAECAAF+AAYAAgQGAmkAAQUFAVkAAQEFYQAFAQVRFxYkFBUYFgcGHSsBJicWFRQGLgE1NDcGBx4BIDYBNCYHIgYVFBYyNjU0NjMyNgUUBwYEICQnJjQ3NiwBBBcWA6FVgCKS0JIigFVL4AEE4v63EAtGZBAWEEQwCxAB2QtO/vj+2v74TgsLTgEIASYBCE4LATqEQTpDZ5QCkGlDOkGEcoiIAUkLEAFkRQsQEAswRBDMExOBmpqBEyYUgJoCnn4UAAABAAD/yAHvAvoADQAXQBQHAQEAAUwAAAEAhQABAXYYEgIGGCsRATYyFhQHCQEWFAYiJwGHEjElEv7QATASJDISAWEBhxIkNBH+0P7PETQjEgAAAAABAAD/wgHvAvUADgAYQBUKAwIBAAFMAAABAIUAAQF2FBcCBhgrMTQ3CQEmND4BFwkBBiImEgEx/s8SJDQRAYb+ehMwJhkSATABMBI0IgIT/nn+eRIkAAAAAQAAAAAB1wHTAAIAD0AMAgEASgAAAHYQAQYXKyUhNwHX/inr5+wAAAEAAAAAAdcB0wACAAq3AAAAdhEBBhcrNych6+sB1+fsAAAAAAEAAAAAAhwCSwACABVAEgEBAEkBAQAAdgAAAAIAAgIGFisJAgIc/vP+8QJL/icB2QAAAAABAAAAAAIcAksAAgAVQBIBAQBKAQEAAHYAAAACAAICBhYrNQkBAQ0BD3IB2f4nAAABAAD/8QIJAssACwAXQBQLAQABAUwAAQABhQAAAHYlEQIGGCs3BiImJxE0NjcyFwGyHlc8AT4qLB4BVw8ePisCCCw8AR7+sQAEAAD/agPoA1IACAAYABsANwBOQEsSCgIEAzIBAgQbAQUCA0wABwEAAQcAgAAIAAMECANnAAQAAgUEAmcABQABBwUBZwAABgYAVwAAAAZfAAYABk81IzUTFyQTIRAJBh8rBSERIyImJzUjNzU0JichIgYXFRQWNyEyNhMzJwURFAYHISImJzUhIiYnETQ2NyEyFgcVFh8BHgEBrQH06RYeAdaOCgf+dwcMAQoIAYkHCo+npwEeIBb96RceAf7RFx4BIBYCXxYgAQwI5BAWTwFmHhfooSQHCgEMBiQHDAEK/pGn7v6JFx4BIBZZIBUC7hceASAWtwcI5A82AAAE//f/agOdA1IADQApADcAQgBcQFkKAQIAJwEGATcsAgUGHwEEBQRMCAEASgAAAgCFAAIIAoUABAUEhgAIBwMJAwEGCAFnAAYFBQZZAAYGBV8ABQYFTw8OPjw5ODIxKyokIRsaFRMOKQ8pFAoGFysFJicmExY3NjcENxIHBgMjNTQnJiMiBgcGHQEjIgYdARQWMyEyNj0BLgEHIzcuATU0NjIWFRQGBzcjNTQ2MzIeAhUBx+VxeQl7andoAQbAEnlzYQ0kIzQZLREkDggMDAgBEgkMAgxrTBYLDBghFwwKQqsyJBEgFw2WU8zZAWUGHiJRpRP+rNrPAfEgMyclExInMyAMCNUIDAwI1QgMxjkFEwwRFxcRDBIFjCAlNA4YIRIAAAAABP/3/2oDnQNSAA4AKwA6AEIAWkBXAgECACgBBgE6LwIFBiABBAUETAYBBEkAAAIAhQACAAgBAghpBwMJAwEABgUBBmkABQQEBVcABQUEYAAEBQRQEA9APzw7NTQuLSQiHBsWFQ8rECoaCgYXKwEENxIHBgcmJyYTFjc2NwMzNTQ+AjIeAh0BMzIWHQEUBisBIiY9ATQ2MxcHMyc+ATU0JiIGFRQWFyczNTQmIgYVAcUBBMMReXPq5HJ5CXtqd2h0DBAdJywnHRAMBwoKB+wHCgoHaBNCEQgKFBwUCwk7kio+KgNSpBL+q9rPWFPM2QFlBh4iUf40GxYpHhERHikWGwoHtwcKCge3Bwp4MTIEEAoOFBQOChEEeBshLCwhAAAABAAA/2oDPQNSACMAbgCEAJIAe0B4kYyCAwAIegELAVBIRAMGBwNMAAcLBgsHBoAOAQYCCwYCfgAJAAwICQxpBA0CAAMBAQsAAWkKDwIIAAsHCAtnAAIFBQJXAAICBV8ABQIFT3BvJSQBAI+Ofnx2dXNyb4RwhE1MJG4lbR4bFhQTEQwJBAIAIwEjEAYWKxMzFSMiBhURFBYzITI2NRE0JisBNTMyFhURFAYjISImNRE0NgEjIiY9ATY3Njc2PwE2NzYnJicmJyMiLwEuATc1NjczJzQnJic2NzYXHgIHIxYXFRYHBg8BBisBBgcGBwYXFh8BFhcWFxYXFhQjATM+ATIWHwEyFh0BFAYjISImPQE0NhceATc+AT8BNCYiBhUUN4Q5ExsbEwI4ExwcEzmFFyAgF/0xFiEhAX3FAgMEDAoRChcNIQ8LAQkEBgEBAgQCBwUCAwQBAQMFDysmLCAYHwIPAgUDAgIDBwIEAgEBBgQJAQsPIQ0XChEKCwQBBv6lPgUvPi8FSQQFBQT+0wQFBXMMFQsIDgQBFh8WAupWGxP9gRMbGxMCfxMbViAX/O4WISEWAxIXIP2CBAIFHxIPCAUGAwgOCg0IBwoNAQEEFw4CCAEPGgoTBDYNECkBKTcTAgcCCg8MBAEBDQoHCA0KDggDBgUIDxIfAQoCmSEsLCABBQR9BAUFBH0EBSYOCAMEDwgJEBgXEQcAAAAABP/3/2oDzANSAF8AewCJAJYAhUCCAgEBAwgBAgE9JQIAAgQBBABIAQsEYk4QAwULf3xWAwgJB0wKAQNKWAEGSQACAQABAgCAAAAEAQAEfgADAAECAwFpAAQACwUEC2kKDAcDBQAJCAUJaQAIBgYIVwAICAZfAAYIBk9gYJKQi4qFhH59YHtge3ZzbmxnZl1cNzUXFQ0GGCsBBDcWByYnNicGJwYHBicCFzY3Njc2NzY/ATY1JyYvASYnJjQ2NyY0NzQ/ATY3Njc2Nz4BNzYzNhcWFxYVBx4BFxYHBg8BBg8BFBcWFxYXBgcGBzEGHQEGByYnJhMWNzYBMzU0PgIyHgIdATMyFh0BFAYjISImPQE0NhcHMyc+ATU0JiIGFRQWJzM1NCYnJiMiDgIVAcUBBMMKKyEdIgmm2lllWWkHcxAaDyAoEx4RAgMZGQMHDQUIDQoCAQECDSYMEAYDAgUCAwcgMC0XHQIHCwEDCQUOBgglCQQOGBIdBQIEBhU8ReRyeQl7ancBNwcVJjM4MiYVCAkNDQn+3goNDYkXUhYLDBkjGQ5Cvg8NHSYTIxoPA1KkEtWnDAGKrg+LRRwaBf6+ug4LBgoNCQ8XAwUCHyAEChIJEBUTAiQoCwMGByoXBgcCBQQPAwUBFxYZICZPAggGDhQLFAoNLQsCBxMOCgoRGAIGFR62JRpTzNkBZQYeIv10Fx00JxcWKDQdFw0K3gkNDQneCg2QPT4FFA0SGRkSDRWLFxQlDh0PHCUUAAAHAAD/agNdA1IAEgAZAEQAUABbAGQAkgCmQKMeFBMDAgRCAQwIWQEADI52AhANBEwACAkMCQgMgBEBAAwLDAALgAABBgGGAAcABAIHBGcAAgADCgIDZwAKEgEJCAoJZwAMEwELDwwLZwAOFAENEA4NZwAPABAFDxBnAAUGBgVXAAUFBl8ABgUGT11cUlFGRQEAhoVxb2JgXGRdZFhVUVtSW0xJRVBGT0RDPToxLy0rIiAcGhkXCwoAEgESFQYWKwEyHgIUBg8BDgEiLgI0PgIDFRYXFjsBFyMuAS8BNSEiDgIVERQXHgE7ARYXIyImJyY1ETQ+AjMhMh8BFh0BJiclIiY0NjMhMhYUBiMFIiY0NjMhMhcGDwEiJjQ2OwEGBxc0NjcmNzY3PgIzNhYXFh0BMhcWBwYUFxYXFhcWFxYVIzQ3Njc2NzY3NjQnJgJ7LlM+IyMfAx9RXFM+IyM+VHIDFxkvSgZRQE0FAf7SDxsUDBYKGw/pBQ78GS0RJBMiLRkBUw0H1gYgEf4/Cg4OCgEmCg8OC/7aCg4OCgEXCgghG+0KDg4KqQsI4QQEAgMDDgYGAwQLIAcKBAIDGgYCBgoGDhcID90PCBcOBgoGAggVATAkPlNdUx8CHyEjPlNdUz4kAdhqJhQWMgFBPASDDBQbD/1vHBgKCxIgExEmMQKRGS0iEwrnBwrpBgFEDxQODhQPjQ4UDwgRGI0OFA8WGxsDBgEWCg0JBAILAREICg8XBQoeBwICCAYDBQkIDhoaDggJBQMGCAEDChoAAAAMAAD/agMzA1IAFQAiAE4AZQByAH4AhwCQAJkAogCuALcCn0uwCVBYQBUTAQgACwEDCXFmAgQOSjIlAwoGBEwbS7AKUFhAFRMBCAALAQMJcWYCBBFKMiUDCgYETBtAFRMBCAALAQMJcWYCBA5KMiUDCgYETFlZS7AJUFhAbgABGhoBcB0BBA4SDgQSgAAFCwWGJQEaABsJGhtqDR4CCAwBCQMICWkCHAIAAAMWAANnGSMCFiQYAhcPFhdpIBACDxEfAg4EDw5pFSECEiIUAhMGEhNpAAoHCwpXAAYABwsGB2cACgoLXwALCgtPG0uwClBYQIAAARoaAXAdAQQREhEEEoAABQsFhiUBGgAbCRobag0eAggMAQkDCAlpAhwCAAADFgADZwAZJAEYFxkYZyMBFgAXEBYXaQAPHwEOEQ8OZyABEAARBBARaQAVIgEUExUUZyEBEgATBhITaQAKBwsKVwAGAAcLBgdnAAoKC18ACwoLTxtLsCBQWEBuAAEaGgFwHQEEDhIOBBKAAAULBYYlARoAGwkaG2oNHgIIDAEJAwgJaQIcAgAAAxYAA2cZIwIWJBgCFw8WF2kgEAIPER8CDgQPDmkVIQISIhQCEwYSE2kACgcLClcABgAHCwYHZwAKCgtfAAsKC08bQG0AARoBhR0BBA4SDgQSgAAFCwWGJQEaABsJGhtqDR4CCAwBCQMICWkCHAIAAAMWAANnGSMCFiQYAhcPFhdpIBACDxEfAg4EDw5pFSECEiIUAhMGEhNpAAoHCwpXAAYABwsGB2cACgoLXwALCgtPWVlZQGOwr6Sjm5qSkYmIgH90c1BPFxYBALSzr7ewt6qno66krZ+emqKbopeVkZmSmY2MiJCJkISDf4eAh3p3c350fW5sa2leXFpYU1FPZVBlQkEuLB0cFiIXIg8NBwYEAwAVARUmBhYrEzM+ATIWHwEyFh0BFAYjISImPQE0NgEyHgEUDgEiLgE0PgEXNDcmNzY/AT4BMzIeAR0BFhUWBwYVFxYXFhcWFxYVIzQ3Njc2NzY3NjQnJgEzFSMiBhURFBYzIRYXISInLgE1ETQ2ARE0JisBNTMyFhURJiUiJjQ2MyEyFhQGIyUyFhQGIiY0NhcyFhQGIiY0NhciJjQ2OwEGBwMyFhQGIiY0NhciJjQ2MyEyFhQGIwMyFhQGIiY0NrZaBC8/LwVbBAUFBP6lBAUFAbY3XTc3XW9dNzddBwcCAwQLCAIDAwocDwUCFQYBBQkGDBQIDcINBxQMBgkFAQgR/hsuLg4UFA4BFggH/tsgGgsNMAJnFA4vLyIwFP5QCg8PCgEXCg8OC/6VDBAQGBAQDAwQEBgQEGAKDw8KnhMO0QwQEBgQEGAKDw8KARcLDg4LuBIZGSQaGgMFISwsIAEFBGUEBgYEZQQF/fw3XW9dNzddb103oggCEwgNBwQBCg4SDBMCAwgaBwEDBwUDBAgHDBYWDAcIBAMFBwICChUChS8WDP2XDhQgEBgLHxACaSEw/lcBWAwWLzAh/psIFQ8VDw8VDzYRFxERFxGaERcQEBcRNQ8VDhcbAWgQGBAQGBA1DxUODhUPAUwaJBkZJBoAAAEAAP9qBFQDUwBLABtAGCwhCAMBAAFMAAABAIUAAQF2OzoaGAIGFisBJicmJyY+ATcmNTQ2Nz4BNzY3Njc+ATc2MzYXHgMXBx4BFxYHBg8BBg8BFBcWFxYXFhcWFxYXFhUhNDc2NzY3Njc2NzY3NjU0JwFWBAgUCA0BFBADAgUKKx4VGAkGAwgDBgsjMS1XLhkBAwsQBAUOCBcMCyckBhs2IEk6HC0dJBIU+6wUEiQdLRw6SSA2Gwg0AVAGDBsPGSQcBiwsIyIQITYSDQkDCgUbBQkBExE3Mz4hgAIOChYfEiISEzc0CQYmGQ8VEQsSFxwpLUBALSkcFxILERUPGSYLBAFKAAAAAAMAAP9qA/ADUwBtAIMAjAFJQB1TOwIFBGQBBgB8AwIDBwuDAQkDFwEBCRoBAgoGTEuwDVBYQFEABAUEhQAGAAwABnIABwsIAQdyAAgDCwgDfgADCQsDCX4ACQELCQF+AAoBAgEKAoAABQAABgUAaQAMDQELBwwLaQABCgIBWQABAQJiAAIBAlIbS7ASUFhAUgAEBQSFAAYADAAGcgAHCwgLBwiAAAgDCwgDfgADCQsDCX4ACQELCQF+AAoBAgEKAoAABQAABgUAaQAMDQELBwwLaQABCgIBWQABAQJiAAIBAlIbQFMABAUEhQAGAAwABgyAAAcLCAsHCIAACAMLCAN+AAMJCwMJfgAJAQsJAX4ACgECAQoCgAAFAAAGBQBpAAwNAQsHDAtpAAEKAgFZAAEBAmIAAgECUllZQB2FhImIhIyFjIKBgH9+fXt5dHNqaUxKFRUqKA4GGislFAcnNjU0LgEjIgYHBgcGFh8BHgEzMjceARcGIiYnMSYnITQ3Njc2NzY3Njc2NzYnLgEnJi8BJjU0NjcmNzQ3PgE3Njc2Nz4BNzYzMhceARcWFwcWFxYHMSIVBwYHBgcOARcWHwE2Nz4BMh4CBzY1NC4BIg4BFB4BMzI3FzMVMxUzNSciJjQ2MhYUBgPwDCwDOF85J0ccKxEQFiQBHlEsICEFFA00aF8kEgf95hAPHBckFi4yFiYVBwIBEQQSIBIYDw0DAgUHJhoSFQgEAwYDBQoeKydKFCUEAxIFBREBFScWBQgGAQYCBQMCBCRfal9JKJIOIjtFOyIiOyIoIQ0sLzj7DxUVHhQVbykmLREROV84GxkmNjRrKgIhJAsOFwYVKCUSCkYyLB4ZEwsSEg0VHQoHBBAGGDYcIxoPGQNALwwPHC4QDAcDBwUVBAcPDi0WKD9jBRIVJQEkQx0GBwYHCQMGBAEEJCgoSF9fGh4hOCEhOEI5IRYrLis5nhUcFRQeFAAAAAAEAAD/tgOVAv8AIgBFAGgAbwCpQKYVDgISBzgxAg4IW1QCDwkDTBQBAAEAhQUBAQYBhQQBAgYHBgIHgBYMCwMHEgYHEn4RAQ0SAxINA4AAAxMSAxN+CgEIEw4TCA6AEAEOCRMOCX4ADwkPhhUBBgASDQYSZwATCAkTVwATEwlhAAkTCVFHRiQjAQBva2ppZWNeXFhXU1FMSkZoR2hCQDs5NTQwLiknI0UkRR8dGBYSEQ0LBgQAIgEiFwYWKwEiBh0BIyIGHQEUFjsBFQYeATI+ASc1MzI2PQE0JisBNTQmASIGHQEjIgYdARQWOwEVBh4BMj4BJzUzMjY9ATQmKwE1NCYFIgYdASMiBh0BFBY7ARUGHgEyPgEnNTMyNj0BNCYrATU0JgUzFSMnByMCHREYKhMWFhMqAgoVGRUKAioTFxcTKhn+ohEYKhMXFxMqAgoVGRUKAioTFhYTKhgCNREYKhMWFhMqAgoVGRUKAioTFxcTKhn9f1MjBwYjAv8ZESoWE9ETFioMFw0NFwwqFhPRExYqERn+3RoRKRcT0BMXKgwXDQ0XDCoXE9ATFykSGVQZESoWE9ETFioMFw0NFwwqFhPRExYqERlUfQEBAAAAAAMAAP9pA+oDUwAIABEAHQAyQC8dHBsaGRgXFhUUEwsCAwFMAAAAAwIAA2kAAgEBAlkAAgIBYQABAgFRExQTEgQGGisRNAAEAAIABAA3FBYENhAmBAYTNyc3FzcXBxcHJwcBJgGcASgE/uD+XP7iaeYBQubm/r7mkYmJbYmJbYmJbYmJAV7PASYC/t7+Xv7eAgEmz6LkAugBQOgC5P7ViYltiYltiYltiYkAAAACAAD/vQOEAv8AQwBQADxAOT0GAgIAKBsCAQMCTAQBAAUBAgMAAmkAAwEBA1kAAwMBXwABAwFPRUQBAEtKRFBFUCMgAEMBQgYGFisBIgYPAQYHJyYGDwEGFh8BBhQXBw4BHwEeAT8BFh8BHgE7ATI2PwE2NxcWNj8BNiYvATY0Jzc+AS8BLgEPASYvAS4BIwcyHgEUDgEiLgE0PgEBtQ8XAw4zKkUOGwg/CAUMNgQENgwFCD8IGw5FKzIOAxcPfg8XAw4xLEUOGwg/CAULNwQENwsFCD8HHA5FJzYOAxcPPy1NLS1NWk0tLU0C/xMPRxMjFwUKDW0NHQowJCQkMAodDW0NCgUXIxJIDxMTD0gRJBcFCg1tDhwKMBg8GDAKHQ1tDQoFFyEVRw8T+i1NWk0tLU1aTS0AAAACAAD/5wNrAtcAHgAnADxAOQYBAAADAgADZwACBwEEBQIEaQAFAQEFWQAFBQFfAAEFAU8gHwEAJCMfJyAnFxUSDwoHAB4BHggGFisTIg4BFREUFjMhMjY1ETQmIyEiJjQ2MyEWPgE0LgEHAzIWFAYiJjQ2+iE6IjEiAkgjMDAj/eIRGRkRAh4MFw0NFwwqERkZIhkZAtUiOSL94iIxMSIBoSMwGSMYAgoVGRUKAv5fGCIZGSIYAAAABQAA/+cDawLVABkAJgAzAEAATQBkQGENBgIEAAFMCwIKAwAEAIUMAQQBBIUAAQYBhQ0BBggDBlkOAQgDAwhZDgEICANhCQcFAwMIA1FCQTU0KCcbGgEASEdBTUJNOzo0QDVALi0nMygzISAaJhsmCwoAGQEYDwYWKwEiBgcGHwEHBhQWMj8BFx4BNzI3Nj0BNCYjISIGFREUFjI2NRE0JgMiBhURFBYyNjURNCYHIgYdARQWMjY9ATQmByIGHQEUFjI2PQE0JgFFCREDCg4qvAwZIQ27KgYWCQUICBUMAVoZJiYyJSXqGSUlMiYl6hkmJjIlJekZJiYyJSUC1QwJDxYquw0hGQy8KgYFAwgQCY4MFSUZ/Y8ZJiUaAnEZJf6zJhn+3RkmJhkBIxolpyUZfRkmJhl9GSVTJRopGSYlGikZJgAACAAA/2oD6AMoABkAIgAyAD4ARwBQAFkAYgCiQJ8ABgEDAQYDgAACDxAPAhCAEwEAFAEFAQAFaQQBAQADBwEDZxUBBxYBCQoHCWcAChgNFwMLDAoLaQ4BDBoRGQMPAgwPaRIBEAgIEFkSARAQCF8ACBAIT1taUlFJSEA/NTMkIxsaAQBfXlpiW2JWVVFZUllNTEhQSVBEQz9HQEc7ODM+NT4sKSMyJDEfHhoiGyIXFRIQDAoFAwAZARkbBhYrASIGByMiBhURFBYzIRE0PgE7ATU0JisBLgEHMhYUBiImNDYTIgYVERQWMyEyNjURNCYjBzMyFhQGKwEiJjQ2FzIWFAYiJjQ2MzIWFAYiJjQ2BzIWFAYiJjQ2MzIWFAYiJjQ2AfQoQA2vIjExIgEkIjki+jAjrw1AKBEZGSIZGY4RGRkRAU0RGRkR+qcRGRkRpxEYGBERGRkiGBi4ERkZIhkZlhEZGSIYGLgRGRkiGRkDKC4lMCP9uCIxAXciOSKnIzAlLlMZIhgYIhn+sxkR/jYRGRkRAcoRGVQYIhkZIhimGSIZGSIZGSIZGSIZfRkiGRkiGRkiGRkiGQAFAAD/agP/A1IACgAOAB4ALgA6AJpACTgvCgEEBAIBTEuwGVBYQDQAAgQEAnAABwEAAQcAgAAAAIQABAkBAwYEA2gABgoBBQgGBWcACAEBCFcACAgBXwABCAFPG0AzAAIEAoUABwEAAQcAgAAAAIQABAkBAwYEA2gABgoBBQgGBWcACAEBCFcACAgBXwABCAFPWUAaIR8RDzo5NTIpJh8uIS4ZFg8eER4RFDQLBhkrCQERFBYzITI2NREDIREhByEiJjUxNDYzITIWFTEUBgcjIiY9ATQ2OwEyFh0BFAYlERQGIyEiJjURATMB//4BJBwDfxsld/zvAxGJ/jgOEhIOAcgOEhLy7goMDAruCwwMAdklG/yBHCQB/woDUv6A/dgcJCQcAij94QJNchIODhISDg0TVw0KEgoNDAsSCg2b/dgcJCQcAij+zwAAAAQAAP/NA5UC1QARABoAIwAsADlANgkBAAQAhQgGAgQDBIUHBQIDAgOFAAIBAoUAAQF2AgArKicmIiEeHRkYFRQMCggHABECEQoGFisBISIGFREUHgE/ASEyNjURNCYBFAYiJjQ2MhYXFAYiJjQ2MhYXFAYiJjQ2MhYDQf1mIzEZIgxgAkcjMTH+ExcmFhYmF6cXJhcXJhemFiYXFyYWAtUxIv12EhcBDGAyIgH0IjH+sxMXFyYWFhMTFxcmFhYTExcXJhYWAAAABAAA/+cDlQKrABkAQgBPAFgB6UAWQD0CDAs2HwIODDMiAg0PLCkCCA0ETEuwCVBYQEoACwYMBgtyEgEMDgYMcAANDwgJDXIACAkJCHAQAQAKEQIGCwAGaRMBDgAPDQ4PaQAHAQIHWQAJBQMCAQIJAWoABwcCYQQBAgcCURtLsApQWEBPAAoGCwYKcgALDAYLcBIBDA4GDHAADQ8ICQ1yAAgJCQhwEAEAEQEGCgAGaRMBDgAPDQ4PaQAHAQIHWQAJBQMCAQIJAWoABwcCYQQBAgcCURtLsAtQWEBGAAsGDAYLchIBDA4GDHAADQ8IBw1yAAgHBwhwEAEAChECBgsABmkTAQ4ADw0OD2kJAQcFAwIBAgcBagkBBwcCYgQBAgcCUhtLsBNQWEBKAAsGDAYLchIBDA4GDHAADQ8ICQ1yAAgJCQhwEAEAChECBgsABmkTAQ4ADw0OD2kABwECB1kACQUDAgECCQFqAAcHAmEEAQIHAlEbQEwACwYMBgtyEgEMDgYMDn4ADQ8IDw0IgAAICQkIcBABAAoRAgYLAAZpEwEOAA8NDg9pAAcBAgdZAAkFAwIBAgkBagAHBwJhBAECBwJRWVlZWUAzUVBEQxsaAQBVVFBYUVhKSUNPRE8/Pjs6Ly4rKicmGkIbQhMSEA8NDAoJBwYAGQEYFAYWKxMiBhURFBYzFBYyNjUhFBYyNjUyNjURNCYjBzIWFA8BFhQHFxYUBiIvAQYiJwcGIiY0PwEmNDcnJjQ2Mh8BNjIXNzYFMhYdARQGIiY9ATQ2BSIGFBYyNjQmpyMxMSMYIhkB9BkiGCMxMSM6ERgMJBgYKAwZIgwoKFgoJAwjGAwkGBggDBgiDSAoWCgkDP4FERkZIhkZAYgiMTFEMTECqzEi/gwiMREZGRERGRkRMSIB9CIxjhgjDCQoWCgoDCIZDCgYGCQMGCMMJChYKCANIhkNIBgYJAxCGRGmERkZEaYRGSoxRDExRDEAAAAAAgAA/+cDawLVAAsAFwA8QDkWDQICAwFMBQEDAQIBAwKAAAIChAQBAAEBAFcEAQAAAV8AAQABTwwMAQAMFwwXExAHBAALAQoGBhYrEyIGFBYzITI2NCYjBRcRFBY7ATI2NRE3pxMXFxMCmhMXFxP9j9EWE1QTFtEC1RcmFhYmF6f6/t0TFxcTASP6AAAEAAD/5wNrAtUACwAXACMALwBWQFMtJCIZBAYHAUwIAQAAAwIAA2cJAQIAAQUCAWcKAQUABwYFB2cABgQEBlkABgYEXwAEBgRPGBgODAIALy4qJxgjGCMfHBQRDBcOFwgFAAsCCwsGFisBISIGFBYzITI2NCYHISImNDYzITIWFAYFFxEUFjsBMjY1ETcHERQGKwEiJjURJyEDQf1mEBoaEAKaEBoaPf3BEBYWEAI/EBUV/azRGg9UEBnR7hANNg0QhgGAAtUaIBkaHhs+CxIMDBILafr+3RAaGhABI/rI/rsMEREMAUWfAAAAAAYAAP/sA5UCzQARACcAKwBaAF4AYgCJQIZXPjMDBAMBTBMBAAgAhQwVAgsBAgELAoAOAQ0FBgUNBoAUAQgJAQELCAFnCgECDwEDBAIDZxABBBEBBQ0EBWcSAQYHBwZXEgEGBgdfAAcGB08tLBISAABiYWBfXl1cW1NQQ0E6OCxaLVorKikoEicSJiEfHh0cGxoZGBcWFRQTABEAERYGFisBIiMFDgEVERQWFwUWNjURNCYXFTMVIxUzFSMVMxUjFSEyNjURNCYjBzMVIyUyFh8BFh8BND8BPgEzMh4BDwEXFgYjIiYvATQnJjUxFA8BDgErASIuAT8BJyY2BTMVIxUzFSMBygQE/rMQEhIQAU0THxhrVFRUVFRUASQTFxcTfVNT/fMKEAMdBgQDCCIDDwcKEAUGNzsJExMJEQQlAQMJJQMQBgQKEQQGPjoGEwIdU1NTUwLNQwMXEP38EBcDQwMaEwKKEBpLVFNTVFNTVBcTAfQTF1RTHQsKRgYLCAcSSwYKDhMIcWwQHgoHUwIFCQUHDlMHCg4WCmxsEB5wVFNTAAAAAAIAAP/nA2sC1QAVACsARkBDJh0QBwQCAQFMBgECAQKGCQQIAwABAQBXCQQIAwAAAWEHBQMDAQABURgWAgAoJyMgHBsWKxgrEhENCgYFABUCFQoGFisBISIGFBYzExEUFjsBMjY1ERMyNjQmIyEiBhQWMxMRFBY7ATI2NRETMjY0JgNB/WYTFxcT0BcTphMX0BMXFxP9ZhMXFxPQFxOmExfQExcXAtUXJhb+sv7dExcXEwEjAU4WJhcXJhb+sv7dExcXEwEjAU4WJhcAAAIAAP+9A5UC/wAUACgANkAzIQEDAgFMAAMCAQIDAYAAAQGEBAEAAgIAWQQBAAACYQACAAJRAQAoJx4bCwoAFAEUBQYWKwEiBwYHBhQXFhcWMjc2NzY0JyYnJgMnJj0BNDYzMTIWHQEXFhQHMQYiAfRxYV44OTk4XmHiYV44OTk4XmEFiQ0XExMXfQwMDSEC/zk4XmHiYV44OTk4XmHiYV44Of24ig0Q0BMXFxO/fQ0hDQwAAAMAAP+9A5UC/wAQACAAJABGQEMAAQUGBQEGgAcBAAACAwACZwgBAwAFAQMFZwAGBAQGVwAGBgRfAAQGBE8SEQEAJCMiIRoXESASHwwKBwYAEAEPCQYWKxMiBhURFBYyNjURITI2NCYjBSIGFREUFjMhMjY1ETQmIwUhESGnIjIXJhcCHRMXFxP+iSIxMSIB9CMxMSP+DAH0/gwC/zEj/eMTFxcTAh0XJhenMSL+DCIyMiIB9CIxU/4MAAAAAwAA//0CVALEAAgAEQAaAEJAPwYBAAABAgABaQcBAgADBAIDaQgBBAUFBFkIAQQEBWEABQQFURMSCgkBABcWEhoTGg4NCREKEQUEAAgBCAkGFisBIgYUFjI2NCYDIgYUFjI2NCYDIgYUFjI2NCYB+yU0NEo0NCUlNDRKNDQlJTQ0SjQ0AsQ0SjQ0SjT+9TRKNDRKNP71NEg1NEozAAAAAAQAAP9qA+MC1QAMAB8AagBzAHBAbWhlKCcdBQYCYF1XUzs4MCwIBwZPTkEDBAMDTAgBAAEAhQABAgGFAAMHBAcDBIAKBQkDAgsBBgcCBmkABwMEB1kABwcEXwAEBwRPbGsgIA4NAQBwb2tzbHMgaiBpSUcYFg0fDh8HBgAMAQwMBhYrASIOARQeATI+ATQuAQMiBwYHBh0BFBYzISY1NDY3JyYzIg8BBgcGBycmBhUHBhYzFxQHBhUUFxQXBwYVHwEeAT8BFxYfARQWOwEyPwE2NxcWNjU3NiYjJzQ3NjU0Jzc2NScuAQ8BJi8BNCMHMhYUBiImNDYB9C1NLS1NWk0tLU0tR1ReOUUXEwFaDSsoBTbmBQcEEwoODCUDCiUDBAMhAgIBAyEEJQIEBQIlBh4TBAYGTwUIBCIUJgMJJgMEAyICAgQiBCYEBQMqIBYEDSUfLCw9KSgC1S1NWkwtLUxaTS3+NhUYJy46PhMXJC88ZyUBCAkpCAYIDBEDBANDAwkZBAoNBwsFCAkZBAlCAgMCAxAEFgcqAwUIKg0UEAMEA0IECRkECQ0HFQ0ZBAhDBAMDERkJKQmGLD4sLD8rAAACAAD/lANrAyEAHAAxACtAKCYBAwEBTA0BA0kAAAIAhQACAQKFAAEDAYUAAwN2MTApKCQjHBsEBhYrAQUOAR0BFBcWFxYXFhc2NzY3Njc2PQE0JiclJiIDJyY0NzE2Mh8BNzYyFzEWFA8BBiIB0/7cFhwrJkI4RDouLjpEOEImKxwW/twPIzZ0DQ0MIQ1X1Q0hDA0N8Q0hAxiBCikYxHJiVUM5JiAJCSAmOUNVYnLEGCkKgQn9o3UMIQ0NDVjVDQ0NIQzyDQAAAAQAAP+TA+gDKAAIADEAPgBUAINAgC0BCgYsIwIFCkIBBAUDTA4HAgMBAgEDAoAQAQoGBQYKBYAADAQMhg0BAAABAwABZwACDwEICQIIaQAJAAYKCQZpCwEFBAQFWQsBBQUEXwAEBQRPQD8zMgkJAQBNTEVEP1RAVDk4Mj4zPgkxCTAnJh8dGRcSEA0MBQQACAEIEQYWKwEiBh0BMzU0JhcVFAYiJj0BIyIGFREUFjMhJy4BNyMiJyYvATQ+ATIeAR8CNxE0JiMHMh4BFA4BIi4BND4BASIPAScmIgYUFzAxFxYyPwE2NCcuAQH0ExdUFxcXJhfQIjExIgFFJRkRDK8SCwcDAjlgbVw6BAklVDEj/h0vHBwvOi8cHC8B5w8Os2AMIRoNfQ0hDNEMDAcOAygWEyoqExZTKhMWFhMqMCP9jyMxJhlIIAsIDAsjOSEdMyEIJlQBwiIx0BwvOjAcHDA6MBv+sgyzYAwYIg19DQ3RDCENBgYAAAAEAAD/agPjAv8AHQAjAG4AdwB6QHceAQMAFwEFAmxpLCsEBgVkYVtXPzw0MAgHBlMBBAEFTFJFAgEBSwgBAAMAhQADAgOFAAIFAoUAAQcEBwEEgAkBBQoBBgcFBmkABwEEB1kABwcEXwAEBwRPcG8kJAEAdHNvd3B3JG4kbU1LIR8WFAgGAB0BHAsGFisTIgYVERQWMyEmJzE0JjU0PgE3MjYzMhc1NC8BJiMHFyMiJjUXIg8BBgcGBycmBhUHBhYzFxQHBhUUFxQXBwYVHwEeAT8BFxYfARQWOwEyPwE2NxcWNjU3NiYjJzQ3NjU0Jzc2NScuAQ8BJi8BNCMHMhYUBiImNDb6IjExIgEXEwYEQXNGBx0GHQwZyBkhCOW8ExbUBQcEEwoODCUDCiUDBAMhAgIBAyEEJQIEBQIlBh4TBAYGTwUIBCIUJgMJJgMEAyICAgQiBCYEBQMqIBYEDSUiMTFEMjIC/zEj/WYjMSgsBh0GSHxSCgQEiSIZyBk/5RcT+gkpCAYIDBEDBANDAwkZBAoNBwsFCAkZBAlCAgMCAxAEFgcqAwUIKg0UEAMEA0IECRkECQ0HFQ0ZBAhDBAMDERkJKQl9MUUxMUUxAAAAAAEAAP+9A84CzABIACdAJD41MyooIR8WFAsKAQABTAIBAAEAhQABAXYBACUkAEgBSAMGFisBIg4BBwYdARQXFhcHDgEeAjY/ARYXBw4BHgE+AT8BFhcVFBYyNj0BNjcXHgI+ASYvATY3Fx4BPgImLwE2NzY9ATQnLgIB9Vytji8FBR4sVAoIBhEYFghUKDY5BwEMFhkTBDw2NRkiGTE0OwQTGRYMAQc4NStRCBYYEQYIClAvHwQFL42tAsxGgVcMCAUJCjgyVAgWGBEGCApUIx1wChkVCwIPDHYTBH8RGRkRfwQQcwwPAgsVGQptHCRRCggGERgWCFA2OQgLBQ0HV4FFAAAAAwAAAAADxAKrABsAKAA1AEFAPgYBAAcBAgQAAmkIAQQABQMEBWkAAwEBA1kAAwMBYQABAwFRKikdHAEAMC8pNSo1IyIcKB0oDw4AGwEbCQYWKwEiBwYHBgcGFBcWFxYXFiA3Njc2NzYnJicmJyYHMh4BFA4BIi4BND4BFyIOARQeATI+ATQuAQH0gWxTQSkcBAQcKUFTbAECbFNBKhsKChsqQVNsgTlfODhfcl84OF85IjkiIjlEOSIiOQKrQjNVNTsJFAg7NlUzQkIyVTc6ExM6N1UyQn04X3JfODhfcl84UyI5RDkiIjlEOSIAAAAAAQAA/60DhAMPADIAWUBWDwwCAQAIBwYEBAIBHRoCBgQDTAUBAQFLAAUCAwIFA4AHAQAAAQIAAWcAAgADBAIDZwAEBgYEVwAEBAZhAAYEBlEBACkoIyIcGxYVFBMODQAyATIIBhYrASIHBgcnBzcnNjc2NxUzNR4CFyMVMw4CBzUjFS4BJyY1IxQXFhcWMjc2NzY0JyYnJgHTZlpXPTok2UgtQUJNSFSOWQgiIghZjlRIWpUqLEk7OmJl7GRiOjs7OmJkAw8sK0042SRJPCUmByIiCFmOVEhUjlkIIiIJZE1RXHZkYjo7OzpiZOxkYjo7AAAAAAgAAP/SA0EC6gAWAB8AKwA0AEAASQBVAF4AiUCGAAEMDwwBD4ARAQATBRIDAwQAA2kGAQQVCRQDBwgEB2kKAQgXDRYDCwwIC2kOAQwADxAMD2cAEAICEFcAEBACXwACEAJPTEpCQTc1LSwiIBgXAQBcWldWUk9KVUxVRkVBSUJJPTo1QDdAMTAsNC00KCUgKyIrHBsXHxgfDwwGBAAWARUYBhYrASIGFREjIgYdARQeATMhMj4BNRE0JiMFMhYUBiImNDY7ATIWFAYrASImNDYHMhYUBiImNDY7ATIWFAYrASImNDYHMhYUBiImNDY7ATIWFAYrASImNDYFIRUUFyEiJjUBBCY3IA0SJT4lAcokPiU3Jv50DRISGhISddANExMN0A0SElsNEhIaEhJ10A0TEw3QDRISWw0SEhoSEnXQDRMTDdANEhL+9AGMGP6lHyoC6jcn/hcTDSklPiUlPiUCMic3pxIaEhIaEhIaEhIaEn0SGhISGhISGhISGhJ9EhoSEhoSEhoSEhoS5QolJCofAAAAAwAA/4sDxwMxADsASABlAQtAFCMgAgcFNzICCQgXAQMJDAEMBARMS7ANUFhAWgAHBQYFBwaAAAYIBQYIfgAICQUICX4AAwkECQMEgBABDAQCBAxyDwENAg4ODXIRAQAABQcABWcSAQkTCwIEDAkEaQAOAQoOWQACAAEKAgFnAA4OCmIACg4KUhtAXAAHBQYFBwaAAAYIBQYIfgAICQUICX4AAwkECQMEgBABDAQCBAwCgA8BDQIOAg0OgBEBAAAFBwAFZxIBCRMLAgQMCQRpAA4BCg5ZAAIAAQoCAWcADg4KYgAKDgpSWUAxSkk9PAEAYmBdW1hXVFJPTUllSmVDQjxIPUg2NCopJyYiIRQSEA8LCggGADsBOhQGFisTIgYVERQWMyEmNSM1LgEnMx4BMzI3NjcuAS8BJjU0Njc1MxUeARcjLgEiBhUUFh8BFhc+ATMyFxE0JicTIg4BFB4BMj4BNC4BBzIWHQEzMhYUBisBFRQGIiY9ASMiJjQ2OwE1NDanHCcnHAE9MyE1QAFMAisiEgwOFwUeHDFmOzNDMT0BSgMmOiQdIS5DGCRULQwWJxsgP2s/P2t+bD8/bD8OFEIOFBQOQhQcE0MOExQNQxQDMScc/SMcJ01aRwc7LhcbBBwcDREGChVWLT4ISEgIOysWGxkWERUICQ8hGBoCAU0bJwH+Lz9rfmw/P2x+az9kEw5DExwUQg4UFA5CFBwTQw4TAAACAAD/zQNCAu4AHgAqAENAQAAFBAMEBQOAAAMCBAMCfgYBAAcBBAUABGcAAgEBAlcAAgIBXwABAgFPIR8BACckHyohKhgVEg8MCQAeAR0IBhYrASIOARURFBceATMhMjY0JiMhIiY0NjMhMjY1ETQmIwUzMhYUBisBIiY0NgELGy4bCgkwIQIVDhMTDv3rDhQUDgH0HCYmHP6R6Q4UFA7pDhMUAu4bLhv9qA4KISsUGxQTHBMnHAIVHCfIExwUFBwTAAAAAwAA/+8DQQLNAA0AHQAyAFNAUDIBBwQxJiEgBAUHAkwJAggDAAQAhQAEBwSFAAcFB4UABQYFhQAGAQEGWQAGBgFhAwEBBgFRDw4BAC8uKSgkIx8eFxQOHQ8cCAYADQENCgYWKxMiBhURFBY7ASY1ETQ3MyIGFREUFjMhMjY1ETQmIwMzFScHBiIvAQcGIiY0PwE2Mh8BN6ccJyccNBMTchsnJxsBshwmJhzIpjtUChsKK0wKGxUKZAsbCis7As0nHP2oHCcgIwJYIyAnHP2oHCcnHAJYHCf+9ac8UwoKK00JFBsKZAoKKzsAAAAMAAD/agPoA1IADAA+AEsAVgCIAJUAoADSAPwBLgE7AUYCHbWhAQcCAUxLsAtQWEBWFwsCBQcGBwVyHxgdDBsFBgEHBgF+AAEABwFwAAAEBABwAA4AEwIOE2cUCAICGQ0CBwUCB2keFhwKGgUEFQkCAxIEA2gAEg8PElcAEhIPYREQAg8SD1EbS7ATUFhAVxcLAgUHBgcFch8YHQwbBQYBBwYBfgABAAcBAH4AAAQEAHAADgATAg4TZxQIAgIZDQIHBQIHaR4WHAoaBQQVCQIDEgQDaAASDw8SVwASEg9hERACDxIPURtLsBlQWEBYFwsCBQcGBwVyHxgdDBsFBgEHBgF+AAEABwEAfgAABAcABH4ADgATAg4TZxQIAgIZDQIHBQIHaR4WHAoaBQQVCQIDEgQDaAASDw8SVwASEg9hERACDxIPURtAWRcLAgUHBgcFBoAfGB0MGwUGAQcGAX4AAQAHAQB+AAAEBwAEfgAOABMCDhNnFAgCAhkNAgcFAgdpHhYcChoFBBUJAgMSBANoABIPDxJXABISD2EREAIPEg9RWVlZQUwBPQE8ATABLwCXAJYAigCJAE0ATABAAD8BQwFAATwBRgE9AUYBNgE1AS8BOwEwATsBIgEbAQoBAQD0AO0A3gDXAMsAygDJAMgAxwDGAK8AqgCdAJoAlgCgAJcAoACQAI8AiQCVAIoAlQB+AHcAZgBdAFMAUABMAFYATQBWAEYARQA/AEsAQABLADQALQCZABUAEwAgAAYAGSsBFA4BIi4BND4BMh4BNyYnLgEnJi8BJisBIg8BBgcOAQcGDwEGFB8BFhceARcWFzMWMjczNjc+ATc2PwE2NCcBIi4BND4BMh4BFA4BEyImNDYzMTIWFAYXJicuAScmLwEmKwEiDwEGBw4BBwYPAQYUHwEWFx4BFxYXMxYyNzM2Nz4BNzY/ATY0JwEiLgE0PgEyHgEUDgETIiY0NjMxMhYUBiUuAScmJyYnIyYnJisBIAcOAQcGBwYHMQYHBh0BEBceARceARcWFxYgNzY3PgI3NhADDgMHBgcjJicuAycmJzU0PwE2Nz4CNzY3MxYXHgMXFhcVBgMuAScmLwEmKwEiDwEGBw4BBwYPAQYUHwEWFx4BFxYXMxYyNzM2Nz4BNzY/ATY0LwEmASIuATQ+ATIeARQOARMiJjQ2MzEyFhQGAm8hOUI5ISE5QjkhsgILCSUYHCkUMVAhNysSKRwYJQkLAgEBAQECCwklGBwpCDK2MggpHBglCQsCAQEB/tI0VzMzV2hXMzNXkRIaGhISGhpWAgsJJRgcKRQxUCE3KxIpHBglCQsCAQEBAQILCSUYHCkIMrYyCCkcGCUJCwIBAQH+0jRXMzNXaFczM1eREhoaEhIaGgEcAgsLEBozRwETExlUo/7zDCEtFSAZMAoDAQEBAwsKFEgtIyUNAfkMKyAtSCcEAYUDHDlLNB0YxhkcNEo5HQMBAQEBARAOOUs0HBnGGRw0SzkcAwEBAVAJJRgcKRQxUCE3KxIpHBglCQsCAQEBAQILCSUYHCkIMrYyCCkcGCUJCwIBAQEBAv7VNFczM1doVzMzV5ESGhoSEhoaAV4hOSEhOUI5ISE5dCkcGCUJCwIBAQEBAgsJJRgcKRQxoDEUKRwYJQkLAQMDAQsJJRgcKRMyoDL+wDNXaFczM1doVzMBVxokGhokGgQpHBglCQsCAQEBAQILCSUYHCkUMaAxFCkcGCUJCwEDAwELCSUYHCkTMqAy/sAzV2hXMzNXaFczAVcaJBoaJBqCHiwWIRovCgMBAQEDCwsQGjFJExMZVKP+8wwgLBUpOwsJAQEBAQkLOlM2CQIl/lU0SzkcAwEBAQEDHDlLNBwZY1IzEzAqJTkcAwEBAQEDHDlLNB0YxhkBVhglCQsCAQEBAQILCSUYHCkUMaAxFCkcGCUJCwEDAwELCSUYHCkTMqAyEyn+hDNXaFczM1doVzMBVxokGhokGgAABAAA/2oD6QNTAA8AEwAfADYAWkBXLgEGAykiAgIGAkwKAQAEAIUABgMCAwYCgAsBBAkIAgMGBANnBwUCAgEBAlcHBQICAgFfAAECAU8VFAIAMzEtLCsqJiUhIBQfFR8TEhEQCgcADwIPDAYWKwEhIgYVERQWMyEyNjURNCYBIxEzJyIuAT4CHgEVFAYBIzU2LgEiDgEXFSMRMxU2NzYzMh4BFQOK/NQnNzcnAywnNzf9xn19PhMgEAgbJiMVJAHafQIPHyUfDwJ9fRcYIB4mQSYDUjcn/NQnNzcnAywnN/zUAbU/FSMmGwgQIBMaJP4M+hIhFBQhEvoBtU4hFBkqSCoAAAAE//z/agP0A1oADAAXACQAMQA+QDsBAQEAKwECASYBAwUDTAQBAgEFAQIFgAAFAwEFA34AAwOEAAABAQBZAAAAAV8AAQABTxUYFBNCEwYGHCsTJz4BHgEXISYjIg4BJSEWDgIHEz4BJgU0PgEyHgEUDgEiLgEXBy4CNjcTHgI3MfyPTeL10j/+aAcPOmdJAZ0BHy0bidp7zCMRJ/5rMVRiVDExVGJUMfuQesdsBz3MGmB3OwGe+GBjEYFqATFXP3P1zXUBAWIzeHOMMVQxMVRiVDExVMX5EpLe92v+nzhLGBAAAAAB//X/ZwQNA1MAbAAsQClYT01EQTYtIg8JAUkCAQABAQBZAgEAAAFhAAEAAVEBAENCAGwBawMGFisBBgcGBw4BFxYXFhcWNjUnBicmJyYnJi8BJicmLwEmNzQ/ARYXFh8BFhcWNzY3JicmJyY1JjY3JicmPwE2FxYXFhc2Mhc2NzY3Nh8BFgcGBx4BBxQHBgcGBxYXFh0BFBcWNzY3Njc2JicmJyYnAgF8bWtHSSgmJVRWdRESASghHBYRDQoGBAoPCwsKFAEMCxcUDgwJHjMgJQYaQyw5HiMBGxoIAQMRCAsPFBgdIj+DPyIdGBQPCwgSAwIIGhwBIx85LEMPCQoICRJ1VlQlJihJR2ttfANSATg3YWT0dXNWWCgDEAxfCQMDCwkOCQwJGhQOCQYOCAYCAQIOCQ8NMwUDEC4XCBQaMTpcJkgcFBosLQEBAwQLDRcRERcNCwQDAQEtLBkVHEgmXDoyGRQIDRYaIowMCAgDKFhWc3X0ZGE3OAEAAAEAAP9pBM8DXgA4AEBAPRcBAQAgHAICASkBBAMDTDgRBwUCBQBKAAABAIUAAQIBhQACAwKFAAMEA4UABAUEhQAFBXYjIhQnFh4GBhwrAQYHPgE3BgcuAQ4BFRQXJiQnDgEWFyYnFRQeARcGIyInHgIXDgEjIiceATMyNzY3Njc2NTQnNjcEz0VMKDkOS1U1mJBYB5j+72AhAjo3PTU0XDogIhgYEEdfNkOiVR4eV8Vnp46BYFkxLwFLMwLcHwkYSCwsETgiOYBOHR0IinY5gXIlAh4DO2lIDAkFM08tATU3BDg6QTxtZoJ9gBULNk0AAAMAAP9qA+QDUgAPACUAOwApQCYAAwIDhQACBQKFAAUEBYUABAEEhQABAAGFAAAAdmVlZWU1MwYGHCslFRQGIyEiJj0BNDYzIR4BERUUBiMhMDEjIiY9ATQ2OwEwMSEyFhEVFAYjITAxIyImPQE0NjsBMDEhMhYD5BwU/HsUGxwTA4UUHBwU/SClExwbFKQC4BQdHBT9IKUTHBwTpALgFB0+pBQcHBSkFBwBHALRpBQbHBOkFBwc/nqkFBwcFKQUHBwAAAAJAAD/agPkA1IAEAAhADIAQwBUAGUAdgCHAJgAgEB9GhAZDhIFAAEAhREPAgEIAYUYDBcKFgUICQiFDQsCCQIJhRUGFAQTBQIDAoUHBQIDA3aKiHl3aGZXVUZENTMkIhMRAgCSj4iYipeBfneHeYZwbWZ2aHVfXFVlV2ROS0RURlM9OjNDNUIsKSIyJDEbGBEhEyAKBwAQAg8bBhYrEzMyFh0BFAYrASImPQE0NjMBMzIWHQEUBisBIiY9ATQ2MyEzMhYdARQGKwEiJj0BNDYzITMyFh0BFAYrASImPQE0NjMBMzIWHQEUBisBIiY9ATQ2MyEzMhYdARQGKwEiJj0BNDYzITMyFh0BFAYrASImPQE0NjMBMzIWHQEUBisBIiY9ATQ2MyEzMhYdARQGKwEiJj0BNDYzMKMUHBwUoxQcHBQC4aMUHBwUoxQcHRP+j6QTHBsUpBQbHBP+kKMUHBwUoxQcHBQC4aMUHBwUoxQcHBT+j6QUGxsUpBMcHBP+kKMUHBwUoxQcHBQC4aMUHBwUoxMdHBT+j6QUGxwTpBMcGxQDUhwUoxMdHBSjFBz9GxwUoxQcHBSjFBwcFKMUHBwUoxQcHBSjFBwcFKMUHAFyHBOkExwcE6QTHBsUpBMcHBOkFBscE6QTHBsUpBQbAXMcFKMTHR0ToxQcHBSjFBwcFKMUHAABAAAAAQAA1q00WV8PPPUADwPoAAAAAOB4wL0AAAAA4HjAvf/1/zoEzwOBAAAACAACAAAAAAAAAAEAAANS/2oAAATP//X/6wTPAAEAAAAAAAAAAAAAAAAAAAB5A+gAAAPoAAAD6AAAAaH/+QNCAAAD0P/1A2X//AJ0AAAEFf/1A9T/+QPU//kDjwAAAzEAAAMwAAAD6P//A6AAAASbAAAEmwAAA+gAAAR2//8CvAAAA+j//gLZAAAC2QAAAtkAAALZAAAEegAAAsEAAALBAAAC7gAAA+v/9gPo//8D6gAAA1kAAAOqAAADoAAAA6AAAAOgAAADoAAAA6AAAAMIAAAD6P//A5j//ANZ//0DmP/8A6n//wOp//8DSAAAA6AAAAMrAAAD6AAAA+gAAAMxAAADmAAAA94AAAQRAAADQgAAAXIAAAH8AAAD6AAAAoQAAAKIAAACiAAAA+gAAAPoAAADyQAAAvIAAAOgAAADWQAAA+gAAAPoAAAB7wAAAe8AAAHXAAAB1wAAAhwAAAIcAAACCQAAA+gAAAOO//cDjv/3Az0AAAPM//cDXQAAAzMAAARUAAAD8AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA/8AAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA/UAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPHAAAD6AAAA8cAAAPoAAADxwAAA+gAAAPoAAAD6P/8BAH/9QTPAAAD5AAAA+QAAAAAAAAANgBsAMgBEAF6AbQB9AJYAvQDsAQOBDgEYATuBTIFmAXOBhoGkAbiB3QH2AhqCO4JMAnUCjIKngsuC6IMnA0MDe4OtA8CD64QRBE0EdgTOBQ2FLAVNhXIFkIW+hc4F3oXyBgGGEYYoBjqGWAa1BsYG0wbbhuGHAAcGhwyHJQdJB4mHlwfEB+mIAIgeiCkINAg5CD2IRAhKCFMIcoiXCLsI/olGCY+KJQpGCqIK3ArxixiLL4tYC48LuIvRjC6MQAxdjJIMq4zCDNmM7Y0ljT6NbY2njcgN5g4EjjcOe46UDrGPbA+Mj6kP2I/2kA8QT4AAQAAAHkBRwAUAAAAAAACAGwAugCNAAABDg4MAAAAAAAAABIA3gABAAAAAAAAADUAAAABAAAAAAABAAkANQABAAAAAAACAAcAPgABAAAAAAADAAkARQABAAAAAAAEAAkATgABAAAAAAAFAAsAVwABAAAAAAAGAAkAYgABAAAAAAAKACsAawABAAAAAAALABMAlgADAAEECQAAAGoAqQADAAEECQABABIBEwADAAEECQACAA4BJQADAAEECQADABIBMwADAAEECQAEABIBRQADAAEECQAFABYBVwADAAEECQAGABIBbQADAAEECQAKAFYBfwADAAEECQALACYB1UNvcHlyaWdodCAoQykgMjAyMyBieSBvcmlnaW5hbCBhdXRob3JzIEAgZm9udGVsbG8uY29tb3BleC1pY29uUmVndWxhcm9wZXgtaWNvbm9wZXgtaWNvblZlcnNpb24gMS4wb3BleC1pY29uR2VuZXJhdGVkIGJ5IHN2ZzJ0dGYgZnJvbSBGb250ZWxsbyBwcm9qZWN0Lmh0dHA6Ly9mb250ZWxsby5jb20AQwBvAHAAeQByAGkAZwBoAHQAIAAoAEMAKQAgADIAMAAyADMAIABiAHkAIABvAHIAaQBnAGkAbgBhAGwAIABhAHUAdABoAG8AcgBzACAAQAAgAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAG8AcABlAHgALQBpAGMAbwBuAFIAZQBnAHUAbABhAHIAbwBwAGUAeAAtAGkAYwBvAG4AbwBwAGUAeAAtAGkAYwBvAG4AVgBlAHIAcwBpAG8AbgAgADEALgAwAG8AcABlAHgALQBpAGMAbwBuAEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAcwB2AGcAMgB0AHQAZgAgAGYAcgBvAG0AIABGAG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AaAB0AHQAcAA6AC8ALwBmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQAAAAACAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkBAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegAJZG93bi1vcGVuB3VwLW9wZW4EaW5mbwRwbHVzBHN0YXILc3Rhci1maWxsZWQGY2FuY2VsA2V5ZQpzdW4tZmlsbGVkA3N1bghpbmZpbml0eQtkb3duLW9wZW4tMQl1cC1vcGVuLTENZW52ZWxvcGUtb3BlbgZzdGFyLTEEY2hhdAtjb21tZW50LWFsdAdjb21tZW50B2RpYW1vbmQEbG9jaw11c2VyLWNpcmNsZS1vC2xvY2stZmlsbGVkBmxvY2stMQRmbGFnC2ZsYWctZmlsbGVkBXZjYXJkBmxvY2stMgpsb2NrLWVtcHR5BmxvY2stMwR1c2VyBG5vdGUDdGFnCmZpbGUtZXhjZWwJc3RvcHdhdGNoC3BsdXMtY2lyY2xlDGNhbGVuZGFyLWludghjYWxlbmRhcgpjYWxlbmRhci0xDmNhbGVuZGFyLWVtcHR5CmNhbGVuZGFyLTIKY2FsZW5kYXItMwxpbmZvLWNpcmNsZWQMaGVscC1jaXJjbGVkDmhlbHAtY2lyY2xlZC0xDmhlbHAtY2lyY2xlZC0yEGhlbHAtY2lyY2xlZC1hbHQQY2FuY2VsLWNpcmNsZWQtMQ1jYW5jZWwtY2lyY2xlD2NhbmNlbC1jaXJjbGUtMRBjYW5jZWwtY2lyY2xlZC0yD2NhbmNlbC1jaXJjbGUtMgRoYXNoBWRvdC0zAnRoCnRoLW91dGxpbmUCZXEPcmVzaXplLXZlcnRpY2FsEXJlc2l6ZS12ZXJ0aWNhbC0xC2Rvd24tb3Blbi0yB2JyYWlsbGUJbGVmdC1vcGVuCnJpZ2h0LW9wZW4FZXllLTIHZXllLW9mZgVnbG9iZQhsb2NhdGlvbgRsb29wCWFycm93cy1jdwthcnJvd3MtY3ctMQVleWUtMwtsZWZ0LW9wZW4tMQxyaWdodC1vcGVuLTEIdXAtbWljcm8KZG93bi1taWNybwhkb3duLWRpcgZ1cC1kaXIEcGxheQVwYXN0ZRZzaGllbGQtbG9jay1ibGFjay1pY29uGHNoaWVsZC1sb2NrLWJsYWNrLWljb24tMRN1c2VyLWNsaXBib2Fy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') format('truetype'); } /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ @@ -17,7 +17,7 @@ @media screen and (-webkit-min-device-pixel-ratio:0) { @font-face { font-family: 'opex-icon'; - src: url('../font/opex-icon.svg?19085055#opex-icon') format('svg'); + src: url('../font/opex-icon.svg?37200563#opex-icon') format('svg'); } } */ @@ -71,19 +71,11 @@ .icon-down-open-1:before { content: '\0111'; } /* 'đ' */ .icon-up-open-1:before { content: '\0112'; } /* 'Ē' */ .icon-envelope-open:before { content: '\0113'; } /* 'ē' */ -.icon-market:before { content: '\0114'; } /* 'Ĕ' */ -.icon-settings:before { content: '\0115'; } /* 'ĕ' */ -.icon-wallet:before { content: '\0116'; } /* 'Ė' */ -.icon-account:before { content: '\0117'; } /* 'ė' */ -.icon-counting:before { content: '\0118'; } /* 'Ę' */ -.icon-messages:before { content: '\0119'; } /* 'ę' */ .icon-star-1:before { content: '\0120'; } /* 'Ġ' */ .icon-chat:before { content: '\0121'; } /* 'ġ' */ .icon-comment-alt:before { content: '\0122'; } /* 'Ģ' */ .icon-comment:before { content: '\0123'; } /* 'ģ' */ .icon-diamond:before { content: '\0124'; } /* 'Ĥ' */ -.icon-messages-dotted:before { content: '\0125'; } /* 'ĥ' */ -.icon-safe:before { content: '\0126'; } /* 'Ħ' */ .icon-lock:before { content: '\0127'; } /* 'ħ' */ .icon-user-circle-o:before { content: '\0128'; } /* 'Ĩ' */ .icon-lock-filled:before { content: '\0129'; } /* 'ĩ' */ @@ -106,35 +98,17 @@ .icon-calendar-empty:before { content: '\0146'; } /* 'ņ' */ .icon-calendar-2:before { content: '\0147'; } /* 'Ň' */ .icon-calendar-3:before { content: '\0148'; } /* 'ň' */ -.icon-filter:before { content: '\0149'; } /* 'ʼn' */ -.icon-filternfilled:before { content: '\0150'; } /* 'Ő' */ -.icon-microsoft_excel:before { content: '\0151'; } /* 'ő' */ -.icon-clear-filters:before { content: '\0152'; } /* 'Œ' */ -.icon-clock:before { content: '\0153'; } /* 'œ' */ .icon-info-circled:before { content: '\0154'; } /* 'Ŕ' */ -.icon-copy:before { content: '\0155'; } /* 'ŕ' */ .icon-help-circled:before { content: '\0156'; } /* 'Ŗ' */ .icon-help-circled-1:before { content: '\0157'; } /* 'ŗ' */ .icon-help-circled-2:before { content: '\0158'; } /* 'Ř' */ .icon-help-circled-alt:before { content: '\0159'; } /* 'ř' */ -.icon-menu_vertical:before { content: '\0160'; } /* 'Š' */ -.icon-cancel-circled:before { content: '\0161'; } /* 'š' */ +.icon-cancel-circled-1:before { content: '\0161'; } /* 'š' */ .icon-cancel-circle:before { content: '\0162'; } /* 'Ţ' */ .icon-cancel-circle-1:before { content: '\0163'; } /* 'ţ' */ -.icon-cancel-circled-1:before { content: '\0165'; } /* 'ť' */ +.icon-cancel-circled-2:before { content: '\0165'; } /* 'ť' */ .icon-cancel-circle-2:before { content: '\0166'; } /* 'Ŧ' */ -.icon-profilesetting:before { content: '\0167'; } /* 'ŧ' */ -.icon-protectsetting:before { content: '\0168'; } /* 'Ũ' */ -.icon-verifiedsetting:before { content: '\0169'; } /* 'ũ' */ -.icon-fileSubsetting:before { content: '\0170'; } /* 'Ű' */ -.icon-closed_eye:before { content: '\0171'; } /* 'ű' */ -.icon-eye-1:before { content: '\0172'; } /* 'Ų' */ .icon-hash:before { content: '\0173'; } /* 'ų' */ -.icon-lasttrades:before { content: '\0174'; } /* 'Ŵ' */ -.icon-myorder:before { content: '\0175'; } /* 'ŵ' */ -.icon-order:before { content: '\0176'; } /* 'Ŷ' */ -.icon-orderbook:before { content: '\0177'; } /* 'ŷ' */ -.icon-overview:before { content: '\0178'; } /* 'Ÿ' */ .icon-dot-3:before { content: '\0179'; } /* 'Ź' */ .icon-th:before { content: '\0180'; } /* 'ƀ' */ .icon-th-outline:before { content: '\0181'; } /* 'Ɓ' */ @@ -153,18 +127,54 @@ .icon-arrows-cw:before { content: '\0194'; } /* 'Ɣ' */ .icon-arrows-cw-1:before { content: '\0195'; } /* 'ƕ' */ .icon-eye-3:before { content: '\0196'; } /* 'Ɩ' */ -.icon-op-06:before { content: '\0197'; } /* 'Ɨ' */ -.icon-op-05:before { content: '\0198'; } /* 'Ƙ' */ -.icon-op-04:before { content: '\0199'; } /* 'ƙ' */ -.icon-op-02:before { content: '\0200'; } /* 'Ȁ' */ -.icon-op-03:before { content: '\0201'; } /* 'ȁ' */ .icon-left-open-1:before { content: '\0202'; } /* 'Ȃ' */ .icon-right-open-1:before { content: '\0203'; } /* 'ȃ' */ -.icon-row:before { content: '\0204'; } /* 'Ȅ' */ -.icon-grid:before { content: '\0205'; } /* 'ȅ' */ .icon-up-micro:before { content: '\0206'; } /* 'Ȇ' */ .icon-down-micro:before { content: '\0207'; } /* 'ȇ' */ .icon-down-dir:before { content: '\0208'; } /* 'Ȉ' */ .icon-up-dir:before { content: '\0209'; } /* 'ȉ' */ .icon-play:before { content: '\0210'; } /* 'Ȑ' */ +.icon-paste:before { content: '\0211'; } /* 'ȑ' */ +.icon-shield-lock-black-icon:before { content: '\0212'; } /* 'Ȓ' */ +.icon-shield-lock-black-icon-1:before { content: '\0213'; } /* 'ȓ' */ +.icon-user-clipboard-icon:before { content: '\0214'; } /* 'Ȕ' */ +.icon-privacy-icon:before { content: '\0215'; } /* 'ȕ' */ +.icon-file-user-icon:before { content: '\0216'; } /* 'Ȗ' */ +.icon-task-user-icon:before { content: '\0217'; } /* 'ȗ' */ +.icon-privacy-icon-1:before { content: '\0218'; } /* 'Ș' */ +.icon-username-icon:before { content: '\0219'; } /* 'ș' */ +.icon-user-key-icon:before { content: '\0220'; } /* 'Ƞ' */ +.icon-market:before { content: '\e800'; } /* '' */ .icon-cancel-circled2:before { content: '\e801'; } /* '' */ +.icon-settings:before { content: '\e802'; } /* '' */ +.icon-wallet:before { content: '\e803'; } /* '' */ +.icon-account:before { content: '\e804'; } /* '' */ +.icon-counting:before { content: '\e805'; } /* '' */ +.icon-messages:before { content: '\e806'; } /* '' */ +.icon-messages-dotted:before { content: '\e807'; } /* '' */ +.icon-safe:before { content: '\e808'; } /* '' */ +.icon-filter:before { content: '\e809'; } /* '' */ +.icon-filternfilled:before { content: '\e80a'; } /* '' */ +.icon-microsoft_excel:before { content: '\e80b'; } /* '' */ +.icon-clear-filters:before { content: '\e80c'; } /* '' */ +.icon-clock:before { content: '\e80d'; } /* '' */ +.icon-copy:before { content: '\e80e'; } /* '' */ +.icon-menu_vertical:before { content: '\e80f'; } /* '' */ +.icon-profilesetting:before { content: '\e810'; } /* '' */ +.icon-protectsetting:before { content: '\e811'; } /* '' */ +.icon-verifiedsetting:before { content: '\e812'; } /* '' */ +.icon-fileSubsetting:before { content: '\e813'; } /* '' */ +.icon-closed_eye:before { content: '\e814'; } /* '' */ +.icon-eye-1:before { content: '\e815'; } /* '' */ +.icon-lasttrades:before { content: '\e816'; } /* '' */ +.icon-myorder:before { content: '\e817'; } /* '' */ +.icon-order:before { content: '\e818'; } /* '' */ +.icon-orderbook:before { content: '\e819'; } /* '' */ +.icon-overview:before { content: '\e81a'; } /* '' */ +.icon-op-06:before { content: '\e81b'; } /* '' */ +.icon-op-05:before { content: '\e81c'; } /* '' */ +.icon-op-04:before { content: '\e81d'; } /* '' */ +.icon-op-02:before { content: '\e81e'; } /* '' */ +.icon-op-03:before { content: '\e81f'; } /* '' */ +.icon-row:before { content: '\e820'; } /* '' */ +.icon-grid:before { content: '\e821'; } /* '' */ diff --git a/src/assets/fontIcon/opex-icon/css/opex-icon-ie7-codes.css b/src/assets/fontIcon/opex-icon/css/opex-icon-ie7-codes.css index f7f8dda..526a869 100644 --- a/src/assets/fontIcon/opex-icon/css/opex-icon-ie7-codes.css +++ b/src/assets/fontIcon/opex-icon/css/opex-icon-ie7-codes.css @@ -13,19 +13,11 @@ .icon-down-open-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'đ '); } .icon-up-open-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ē '); } .icon-envelope-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ē '); } -.icon-market { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ĕ '); } -.icon-settings { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ĕ '); } -.icon-wallet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ė '); } -.icon-account { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ė '); } -.icon-counting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ę '); } -.icon-messages { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ę '); } .icon-star-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ġ '); } .icon-chat { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ġ '); } .icon-comment-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ģ '); } .icon-comment { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ģ '); } .icon-diamond { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ĥ '); } -.icon-messages-dotted { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ĥ '); } -.icon-safe { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ħ '); } .icon-lock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ħ '); } .icon-user-circle-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ĩ '); } .icon-lock-filled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ĩ '); } @@ -48,35 +40,17 @@ .icon-calendar-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ņ '); } .icon-calendar-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ň '); } .icon-calendar-3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ň '); } -.icon-filter { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ʼn '); } -.icon-filternfilled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ő '); } -.icon-microsoft_excel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ő '); } -.icon-clear-filters { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Œ '); } -.icon-clock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'œ '); } .icon-info-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ŕ '); } -.icon-copy { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ŕ '); } .icon-help-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ŗ '); } .icon-help-circled-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ŗ '); } .icon-help-circled-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ř '); } .icon-help-circled-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ř '); } -.icon-menu_vertical { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Š '); } -.icon-cancel-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'š '); } +.icon-cancel-circled-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'š '); } .icon-cancel-circle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ţ '); } .icon-cancel-circle-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ţ '); } -.icon-cancel-circled-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ť '); } +.icon-cancel-circled-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ť '); } .icon-cancel-circle-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ŧ '); } -.icon-profilesetting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ŧ '); } -.icon-protectsetting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ũ '); } -.icon-verifiedsetting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ũ '); } -.icon-fileSubsetting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ű '); } -.icon-closed_eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ű '); } -.icon-eye-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ų '); } .icon-hash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ų '); } -.icon-lasttrades { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ŵ '); } -.icon-myorder { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ŵ '); } -.icon-order { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ŷ '); } -.icon-orderbook { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ŷ '); } -.icon-overview { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ÿ '); } .icon-dot-3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ź '); } .icon-th { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ƀ '); } .icon-th-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ɓ '); } @@ -95,18 +69,54 @@ .icon-arrows-cw { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ɣ '); } .icon-arrows-cw-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ƕ '); } .icon-eye-3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ɩ '); } -.icon-op-06 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ɨ '); } -.icon-op-05 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ƙ '); } -.icon-op-04 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ƙ '); } -.icon-op-02 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȁ '); } -.icon-op-03 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȁ '); } .icon-left-open-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȃ '); } .icon-right-open-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȃ '); } -.icon-row { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȅ '); } -.icon-grid { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȅ '); } .icon-up-micro { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȇ '); } .icon-down-micro { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȇ '); } .icon-down-dir { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȉ '); } .icon-up-dir { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȉ '); } .icon-play { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȑ '); } +.icon-paste { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȑ '); } +.icon-shield-lock-black-icon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȓ '); } +.icon-shield-lock-black-icon-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȓ '); } +.icon-user-clipboard-icon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȕ '); } +.icon-privacy-icon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȕ '); } +.icon-file-user-icon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȗ '); } +.icon-task-user-icon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȗ '); } +.icon-privacy-icon-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ș '); } +.icon-username-icon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ș '); } +.icon-user-key-icon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ƞ '); } +.icon-market { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-cancel-circled2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-settings { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-wallet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-account { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-counting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-messages { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-messages-dotted { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-safe { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-filter { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-filternfilled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-microsoft_excel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-clear-filters { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-clock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-copy { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-menu_vertical { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-profilesetting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-protectsetting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-verifiedsetting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-fileSubsetting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-closed_eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-eye-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-lasttrades { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-myorder { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-order { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-orderbook { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-overview { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-op-06 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-op-05 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-op-04 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-op-02 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-op-03 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-row { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-grid { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } diff --git a/src/assets/fontIcon/opex-icon/css/opex-icon-ie7.css b/src/assets/fontIcon/opex-icon/css/opex-icon-ie7.css index 9bf0461..8879601 100644 --- a/src/assets/fontIcon/opex-icon/css/opex-icon-ie7.css +++ b/src/assets/fontIcon/opex-icon/css/opex-icon-ie7.css @@ -24,19 +24,11 @@ .icon-down-open-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'đ '); } .icon-up-open-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ē '); } .icon-envelope-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ē '); } -.icon-market { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ĕ '); } -.icon-settings { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ĕ '); } -.icon-wallet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ė '); } -.icon-account { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ė '); } -.icon-counting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ę '); } -.icon-messages { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ę '); } .icon-star-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ġ '); } .icon-chat { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ġ '); } .icon-comment-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ģ '); } .icon-comment { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ģ '); } .icon-diamond { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ĥ '); } -.icon-messages-dotted { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ĥ '); } -.icon-safe { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ħ '); } .icon-lock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ħ '); } .icon-user-circle-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ĩ '); } .icon-lock-filled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ĩ '); } @@ -59,35 +51,17 @@ .icon-calendar-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ņ '); } .icon-calendar-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ň '); } .icon-calendar-3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ň '); } -.icon-filter { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ʼn '); } -.icon-filternfilled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ő '); } -.icon-microsoft_excel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ő '); } -.icon-clear-filters { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Œ '); } -.icon-clock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'œ '); } .icon-info-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ŕ '); } -.icon-copy { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ŕ '); } .icon-help-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ŗ '); } .icon-help-circled-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ŗ '); } .icon-help-circled-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ř '); } .icon-help-circled-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ř '); } -.icon-menu_vertical { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Š '); } -.icon-cancel-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'š '); } +.icon-cancel-circled-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'š '); } .icon-cancel-circle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ţ '); } .icon-cancel-circle-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ţ '); } -.icon-cancel-circled-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ť '); } +.icon-cancel-circled-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ť '); } .icon-cancel-circle-2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ŧ '); } -.icon-profilesetting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ŧ '); } -.icon-protectsetting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ũ '); } -.icon-verifiedsetting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ũ '); } -.icon-fileSubsetting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ű '); } -.icon-closed_eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ű '); } -.icon-eye-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ų '); } .icon-hash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ų '); } -.icon-lasttrades { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ŵ '); } -.icon-myorder { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ŵ '); } -.icon-order { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ŷ '); } -.icon-orderbook { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ŷ '); } -.icon-overview { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ÿ '); } .icon-dot-3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ź '); } .icon-th { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ƀ '); } .icon-th-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ɓ '); } @@ -106,18 +80,54 @@ .icon-arrows-cw { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ɣ '); } .icon-arrows-cw-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ƕ '); } .icon-eye-3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ɩ '); } -.icon-op-06 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ɨ '); } -.icon-op-05 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ƙ '); } -.icon-op-04 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ƙ '); } -.icon-op-02 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȁ '); } -.icon-op-03 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȁ '); } .icon-left-open-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȃ '); } .icon-right-open-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȃ '); } -.icon-row { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȅ '); } -.icon-grid { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȅ '); } .icon-up-micro { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȇ '); } .icon-down-micro { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȇ '); } .icon-down-dir { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȉ '); } .icon-up-dir { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȉ '); } .icon-play { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȑ '); } +.icon-paste { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȑ '); } +.icon-shield-lock-black-icon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȓ '); } +.icon-shield-lock-black-icon-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȓ '); } +.icon-user-clipboard-icon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȕ '); } +.icon-privacy-icon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȕ '); } +.icon-file-user-icon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ȗ '); } +.icon-task-user-icon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ȗ '); } +.icon-privacy-icon-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ș '); } +.icon-username-icon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'ș '); } +.icon-user-key-icon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = 'Ƞ '); } +.icon-market { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-cancel-circled2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-settings { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-wallet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-account { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-counting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-messages { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-messages-dotted { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-safe { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-filter { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-filternfilled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-microsoft_excel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-clear-filters { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-clock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-copy { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-menu_vertical { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-profilesetting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-protectsetting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-verifiedsetting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-fileSubsetting { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-closed_eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-eye-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-lasttrades { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-myorder { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-order { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-orderbook { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-overview { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-op-06 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-op-05 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-op-04 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-op-02 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-op-03 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-row { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-grid { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } diff --git a/src/assets/fontIcon/opex-icon/css/opex-icon.css b/src/assets/fontIcon/opex-icon/css/opex-icon.css index a835367..d8f16cd 100644 --- a/src/assets/fontIcon/opex-icon/css/opex-icon.css +++ b/src/assets/fontIcon/opex-icon/css/opex-icon.css @@ -1,11 +1,11 @@ @font-face { font-family: 'opex-icon'; - src: url('../font/opex-icon.eot?42850643'); - src: url('../font/opex-icon.eot?42850643#iefix') format('embedded-opentype'), - url('../font/opex-icon.woff2?42850643') format('woff2'), - url('../font/opex-icon.woff?42850643') format('woff'), - url('../font/opex-icon.ttf?42850643') format('truetype'), - url('../font/opex-icon.svg?42850643#opex-icon') format('svg'); + src: url('../font/opex-icon.eot?53128120'); + src: url('../font/opex-icon.eot?53128120#iefix') format('embedded-opentype'), + url('../font/opex-icon.woff2?53128120') format('woff2'), + url('../font/opex-icon.woff?53128120') format('woff'), + url('../font/opex-icon.ttf?53128120') format('truetype'), + url('../font/opex-icon.svg?53128120#opex-icon') format('svg'); font-weight: normal; font-style: normal; } @@ -15,7 +15,7 @@ @media screen and (-webkit-min-device-pixel-ratio:0) { @font-face { font-family: 'opex-icon'; - src: url('../font/opex-icon.svg?42850643#opex-icon') format('svg'); + src: url('../font/opex-icon.svg?53128120#opex-icon') format('svg'); } } */ @@ -68,19 +68,11 @@ .icon-down-open-1:before { content: '\0111'; } /* 'đ' */ .icon-up-open-1:before { content: '\0112'; } /* 'Ē' */ .icon-envelope-open:before { content: '\0113'; } /* 'ē' */ -.icon-market:before { content: '\0114'; } /* 'Ĕ' */ -.icon-settings:before { content: '\0115'; } /* 'ĕ' */ -.icon-wallet:before { content: '\0116'; } /* 'Ė' */ -.icon-account:before { content: '\0117'; } /* 'ė' */ -.icon-counting:before { content: '\0118'; } /* 'Ę' */ -.icon-messages:before { content: '\0119'; } /* 'ę' */ .icon-star-1:before { content: '\0120'; } /* 'Ġ' */ .icon-chat:before { content: '\0121'; } /* 'ġ' */ .icon-comment-alt:before { content: '\0122'; } /* 'Ģ' */ .icon-comment:before { content: '\0123'; } /* 'ģ' */ .icon-diamond:before { content: '\0124'; } /* 'Ĥ' */ -.icon-messages-dotted:before { content: '\0125'; } /* 'ĥ' */ -.icon-safe:before { content: '\0126'; } /* 'Ħ' */ .icon-lock:before { content: '\0127'; } /* 'ħ' */ .icon-user-circle-o:before { content: '\0128'; } /* 'Ĩ' */ .icon-lock-filled:before { content: '\0129'; } /* 'ĩ' */ @@ -103,35 +95,17 @@ .icon-calendar-empty:before { content: '\0146'; } /* 'ņ' */ .icon-calendar-2:before { content: '\0147'; } /* 'Ň' */ .icon-calendar-3:before { content: '\0148'; } /* 'ň' */ -.icon-filter:before { content: '\0149'; } /* 'ʼn' */ -.icon-filternfilled:before { content: '\0150'; } /* 'Ő' */ -.icon-microsoft_excel:before { content: '\0151'; } /* 'ő' */ -.icon-clear-filters:before { content: '\0152'; } /* 'Œ' */ -.icon-clock:before { content: '\0153'; } /* 'œ' */ .icon-info-circled:before { content: '\0154'; } /* 'Ŕ' */ -.icon-copy:before { content: '\0155'; } /* 'ŕ' */ .icon-help-circled:before { content: '\0156'; } /* 'Ŗ' */ .icon-help-circled-1:before { content: '\0157'; } /* 'ŗ' */ .icon-help-circled-2:before { content: '\0158'; } /* 'Ř' */ .icon-help-circled-alt:before { content: '\0159'; } /* 'ř' */ -.icon-menu_vertical:before { content: '\0160'; } /* 'Š' */ -.icon-cancel-circled:before { content: '\0161'; } /* 'š' */ +.icon-cancel-circled-1:before { content: '\0161'; } /* 'š' */ .icon-cancel-circle:before { content: '\0162'; } /* 'Ţ' */ .icon-cancel-circle-1:before { content: '\0163'; } /* 'ţ' */ -.icon-cancel-circled-1:before { content: '\0165'; } /* 'ť' */ +.icon-cancel-circled-2:before { content: '\0165'; } /* 'ť' */ .icon-cancel-circle-2:before { content: '\0166'; } /* 'Ŧ' */ -.icon-profilesetting:before { content: '\0167'; } /* 'ŧ' */ -.icon-protectsetting:before { content: '\0168'; } /* 'Ũ' */ -.icon-verifiedsetting:before { content: '\0169'; } /* 'ũ' */ -.icon-fileSubsetting:before { content: '\0170'; } /* 'Ű' */ -.icon-closed_eye:before { content: '\0171'; } /* 'ű' */ -.icon-eye-1:before { content: '\0172'; } /* 'Ų' */ .icon-hash:before { content: '\0173'; } /* 'ų' */ -.icon-lasttrades:before { content: '\0174'; } /* 'Ŵ' */ -.icon-myorder:before { content: '\0175'; } /* 'ŵ' */ -.icon-order:before { content: '\0176'; } /* 'Ŷ' */ -.icon-orderbook:before { content: '\0177'; } /* 'ŷ' */ -.icon-overview:before { content: '\0178'; } /* 'Ÿ' */ .icon-dot-3:before { content: '\0179'; } /* 'Ź' */ .icon-th:before { content: '\0180'; } /* 'ƀ' */ .icon-th-outline:before { content: '\0181'; } /* 'Ɓ' */ @@ -150,18 +124,54 @@ .icon-arrows-cw:before { content: '\0194'; } /* 'Ɣ' */ .icon-arrows-cw-1:before { content: '\0195'; } /* 'ƕ' */ .icon-eye-3:before { content: '\0196'; } /* 'Ɩ' */ -.icon-op-06:before { content: '\0197'; } /* 'Ɨ' */ -.icon-op-05:before { content: '\0198'; } /* 'Ƙ' */ -.icon-op-04:before { content: '\0199'; } /* 'ƙ' */ -.icon-op-02:before { content: '\0200'; } /* 'Ȁ' */ -.icon-op-03:before { content: '\0201'; } /* 'ȁ' */ .icon-left-open-1:before { content: '\0202'; } /* 'Ȃ' */ .icon-right-open-1:before { content: '\0203'; } /* 'ȃ' */ -.icon-row:before { content: '\0204'; } /* 'Ȅ' */ -.icon-grid:before { content: '\0205'; } /* 'ȅ' */ .icon-up-micro:before { content: '\0206'; } /* 'Ȇ' */ .icon-down-micro:before { content: '\0207'; } /* 'ȇ' */ .icon-down-dir:before { content: '\0208'; } /* 'Ȉ' */ .icon-up-dir:before { content: '\0209'; } /* 'ȉ' */ .icon-play:before { content: '\0210'; } /* 'Ȑ' */ +.icon-paste:before { content: '\0211'; } /* 'ȑ' */ +.icon-shield-lock-black-icon:before { content: '\0212'; } /* 'Ȓ' */ +.icon-shield-lock-black-icon-1:before { content: '\0213'; } /* 'ȓ' */ +.icon-user-clipboard-icon:before { content: '\0214'; } /* 'Ȕ' */ +.icon-privacy-icon:before { content: '\0215'; } /* 'ȕ' */ +.icon-file-user-icon:before { content: '\0216'; } /* 'Ȗ' */ +.icon-task-user-icon:before { content: '\0217'; } /* 'ȗ' */ +.icon-privacy-icon-1:before { content: '\0218'; } /* 'Ș' */ +.icon-username-icon:before { content: '\0219'; } /* 'ș' */ +.icon-user-key-icon:before { content: '\0220'; } /* 'Ƞ' */ +.icon-market:before { content: '\e800'; } /* '' */ .icon-cancel-circled2:before { content: '\e801'; } /* '' */ +.icon-settings:before { content: '\e802'; } /* '' */ +.icon-wallet:before { content: '\e803'; } /* '' */ +.icon-account:before { content: '\e804'; } /* '' */ +.icon-counting:before { content: '\e805'; } /* '' */ +.icon-messages:before { content: '\e806'; } /* '' */ +.icon-messages-dotted:before { content: '\e807'; } /* '' */ +.icon-safe:before { content: '\e808'; } /* '' */ +.icon-filter:before { content: '\e809'; } /* '' */ +.icon-filternfilled:before { content: '\e80a'; } /* '' */ +.icon-microsoft_excel:before { content: '\e80b'; } /* '' */ +.icon-clear-filters:before { content: '\e80c'; } /* '' */ +.icon-clock:before { content: '\e80d'; } /* '' */ +.icon-copy:before { content: '\e80e'; } /* '' */ +.icon-menu_vertical:before { content: '\e80f'; } /* '' */ +.icon-profilesetting:before { content: '\e810'; } /* '' */ +.icon-protectsetting:before { content: '\e811'; } /* '' */ +.icon-verifiedsetting:before { content: '\e812'; } /* '' */ +.icon-fileSubsetting:before { content: '\e813'; } /* '' */ +.icon-closed_eye:before { content: '\e814'; } /* '' */ +.icon-eye-1:before { content: '\e815'; } /* '' */ +.icon-lasttrades:before { content: '\e816'; } /* '' */ +.icon-myorder:before { content: '\e817'; } /* '' */ +.icon-order:before { content: '\e818'; } /* '' */ +.icon-orderbook:before { content: '\e819'; } /* '' */ +.icon-overview:before { content: '\e81a'; } /* '' */ +.icon-op-06:before { content: '\e81b'; } /* '' */ +.icon-op-05:before { content: '\e81c'; } /* '' */ +.icon-op-04:before { content: '\e81d'; } /* '' */ +.icon-op-02:before { content: '\e81e'; } /* '' */ +.icon-op-03:before { content: '\e81f'; } /* '' */ +.icon-row:before { content: '\e820'; } /* '' */ +.icon-grid:before { content: '\e821'; } /* '' */ diff --git a/src/assets/fontIcon/opex-icon/demo.html b/src/assets/fontIcon/opex-icon/demo.html index c150d0e..80467be 100644 --- a/src/assets/fontIcon/opex-icon/demo.html +++ b/src/assets/fontIcon/opex-icon/demo.html @@ -146,11 +146,11 @@ } @font-face { font-family: 'opex-icon'; - src: url('./font/opex-icon.eot?12809373'); - src: url('./font/opex-icon.eot?12809373#iefix') format('embedded-opentype'), - url('./font/opex-icon.woff?12809373') format('woff'), - url('./font/opex-icon.ttf?12809373') format('truetype'), - url('./font/opex-icon.svg?12809373#opex-icon') format('svg'); + src: url('./font/opex-icon.eot?73055613'); + src: url('./font/opex-icon.eot?73055613#iefix') format('embedded-opentype'), + url('./font/opex-icon.woff?73055613') format('woff'), + url('./font/opex-icon.ttf?73055613') format('truetype'), + url('./font/opex-icon.svg?73055613#opex-icon') format('svg'); font-weight: normal; font-style: normal; } @@ -259,51 +259,23 @@

opex-icon font demo

ē icon-envelope-open0x0113
-
- Ĕ icon-market0x0114 -
-
- ĕ icon-settings0x0115 -
- -
-
- Ė icon-wallet0x0116 -
-
- icon-account0x0117 -
-
- Ę icon-counting0x0118 -
-
- ę icon-messages0x0119 -
-
-
Ġ icon-star-10x0120
ġ icon-chat0x0121
+
+
Ģ icon-comment-alt0x0122
ģ icon-comment0x0123
-
-
Ĥ icon-diamond0x0124
-
- ĥ icon-messages-dotted0x0125 -
-
- Ħ icon-safe0x0126 -
ħ icon-lock0x0127
@@ -382,202 +354,115 @@

opex-icon font demo

ň icon-calendar-30x0148
-
- ʼn icon-filter0x0149 -
-
- Ő icon-filternfilled0x0150 -
-
- ő icon-microsoft_excel0x0151 -
-
-
-
- Œ icon-clear-filters0x0152 -
-
- œ icon-clock0x0153 -
Ŕ icon-info-circled0x0154
-
- ŕ icon-copy0x0155 -
-
-
Ŗ icon-help-circled0x0156
ŗ icon-help-circled-10x0157
+
+
Ř icon-help-circled-20x0158
ř icon-help-circled-alt0x0159
-
-
-
- Š icon-menu_vertical0x0160 -
- š icon-cancel-circled0x0161 + š icon-cancel-circled-10x0161
Ţ icon-cancel-circle0x0162
+
+
ţ icon-cancel-circle-10x0163
-
-
- ť icon-cancel-circled-10x0165 + ť icon-cancel-circled-20x0165
Ŧ icon-cancel-circle-20x0166
-
- ŧ icon-profilesetting0x0167 -
-
- Ũ icon-protectsetting0x0168 -
-
-
-
- ũ icon-verifiedsetting0x0169 -
-
- Ű icon-fileSubsetting0x0170 -
-
- ű icon-closed_eye0x0171 -
-
- Ų icon-eye-10x0172 -
-
-
ų icon-hash0x0173
-
- Ŵ icon-lasttrades0x0174 -
-
- ŵ icon-myorder0x0175 -
-
- Ŷ icon-order0x0176 -
-
- ŷ icon-orderbook0x0177 -
-
- Ÿ icon-overview0x0178 -
Ź icon-dot-30x0179
ƀ icon-th0x0180
-
-
Ɓ icon-th-outline0x0181
Ƃ icon-eq0x0182
+
+
ƃ icon-resize-vertical0x0183
Ƅ icon-resize-vertical-10x0184
-
-
ƅ icon-down-open-20x0185
Ɔ icon-braille0x0186
+
+
Ƈ icon-left-open0x0187
ƈ icon-right-open0x0188
-
-
Ɖ icon-eye-20x0189
Ɛ icon-eye-off0x0190
+
+
Ƒ icon-globe0x0191
ƒ icon-location0x0192
-
-
Ɠ icon-loop0x0193
Ɣ icon-arrows-cw0x0194
+
+
ƕ icon-arrows-cw-10x0195
Ɩ icon-eye-30x0196
-
-
-
- Ɨ icon-op-060x0197 -
-
- Ƙ icon-op-050x0198 -
-
- ƙ icon-op-040x0199 -
-
- Ȁ icon-op-020x0200 -
-
-
-
- ȁ icon-op-030x0201 -
Ȃ icon-left-open-10x0202
ȃ icon-right-open-10x0203
-
- Ȅ icon-row0x0204 -
-
- ȅ icon-grid0x0205 -
Ȇ icon-up-micro0x0206
@@ -587,17 +472,168 @@

opex-icon font demo

Ȉ icon-down-dir0x0208
-
-
ȉ icon-up-dir0x0209
+
+
Ȑ icon-play0x0210
+
+ ȑ icon-paste0x0211 +
+
+ Ȓ icon-shield-lock-black-icon0x0212 +
+
+ ȓ icon-shield-lock-black-icon-10x0213 +
+
+
+
+ Ȕ icon-user-clipboard-icon0x0214 +
+
+ ȕ icon-privacy-icon0x0215 +
+
+ Ȗ icon-file-user-icon0x0216 +
+
+ ȗ icon-task-user-icon0x0217 +
+
+
+
+ Ș icon-privacy-icon-10x0218 +
+
+ ș icon-username-icon0x0219 +
+
+ Ƞ icon-user-key-icon0x0220 +
+
+ icon-market0xe800 +
+
+
icon-cancel-circled20xe801
+
+ icon-settings0xe802 +
+
+ icon-wallet0xe803 +
+
+ icon-account0xe804 +
+
+
+
+ icon-counting0xe805 +
+
+ icon-messages0xe806 +
+
+ icon-messages-dotted0xe807 +
+
+ icon-safe0xe808 +
+
+
+
+ icon-filter0xe809 +
+
+ icon-filternfilled0xe80a +
+
+ icon-microsoft_excel0xe80b +
+
+ icon-clear-filters0xe80c +
+
+
+
+ icon-clock0xe80d +
+
+ icon-copy0xe80e +
+
+ icon-menu_vertical0xe80f +
+
+ icon-profilesetting0xe810 +
+
+
+
+ icon-protectsetting0xe811 +
+
+ icon-verifiedsetting0xe812 +
+
+ icon-fileSubsetting0xe813 +
+
+ icon-closed_eye0xe814 +
+
+
+
+ icon-eye-10xe815 +
+
+ icon-lasttrades0xe816 +
+
+ icon-myorder0xe817 +
+
+ icon-order0xe818 +
+
+
+
+ icon-orderbook0xe819 +
+
+ icon-overview0xe81a +
+
+ icon-op-060xe81b +
+
+ icon-op-050xe81c +
+
+
+
+ icon-op-040xe81d +
+
+ icon-op-020xe81e +
+
+ icon-op-030xe81f +
+
+ icon-row0xe820 +
+
+
+
+ icon-grid0xe821 +
diff --git a/src/assets/fontIcon/opex-icon/font/opex-icon.eot b/src/assets/fontIcon/opex-icon/font/opex-icon.eot index 226bce2..3b28270 100644 Binary files a/src/assets/fontIcon/opex-icon/font/opex-icon.eot and b/src/assets/fontIcon/opex-icon/font/opex-icon.eot differ diff --git a/src/assets/fontIcon/opex-icon/font/opex-icon.svg b/src/assets/fontIcon/opex-icon/font/opex-icon.svg index a7f9462..0d344fa 100644 --- a/src/assets/fontIcon/opex-icon/font/opex-icon.svg +++ b/src/assets/fontIcon/opex-icon/font/opex-icon.svg @@ -1,7 +1,7 @@ -Copyright (C) 2022 by original authors @ fontello.com +Copyright (C) 2023 by original authors @ fontello.com @@ -34,18 +34,6 @@ - - - - - - - - - - - - @@ -56,10 +44,6 @@ - - - - @@ -104,20 +88,8 @@ - - - - - - - - - - - - @@ -126,42 +98,18 @@ - - - + - + - - - - - - - - - - - - - - - - - - - - - - @@ -198,24 +146,10 @@ - - - - - - - - - - - - - - @@ -226,7 +160,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/fontIcon/opex-icon/font/opex-icon.ttf b/src/assets/fontIcon/opex-icon/font/opex-icon.ttf index 4a04ae6..bf04c7c 100644 Binary files a/src/assets/fontIcon/opex-icon/font/opex-icon.ttf and b/src/assets/fontIcon/opex-icon/font/opex-icon.ttf differ diff --git a/src/assets/fontIcon/opex-icon/font/opex-icon.woff b/src/assets/fontIcon/opex-icon/font/opex-icon.woff index cdcb8ae..d0d3a6b 100644 Binary files a/src/assets/fontIcon/opex-icon/font/opex-icon.woff and b/src/assets/fontIcon/opex-icon/font/opex-icon.woff differ diff --git a/src/assets/fontIcon/opex-icon/font/opex-icon.woff2 b/src/assets/fontIcon/opex-icon/font/opex-icon.woff2 index 7192f14..bf33483 100644 Binary files a/src/assets/fontIcon/opex-icon/font/opex-icon.woff2 and b/src/assets/fontIcon/opex-icon/font/opex-icon.woff2 differ diff --git a/src/components/ImageInput/ImageInput.js b/src/components/ImageInput/ImageInput.js index 587c34c..21d8e21 100644 --- a/src/components/ImageInput/ImageInput.js +++ b/src/components/ImageInput/ImageInput.js @@ -1,6 +1,6 @@ import React, {useState, useEffect} from "react"; import {useDropzone} from "react-dropzone"; -import classes from "../../main/Browser/Sections/Content/components/Settings/components/Authentication/components/SendPhotosStep/SendPhotosStep.module.css"; +import classes from "../../main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/SendPhotosStep/SendPhotosStep.module.css"; import Icon from "../Icon/Icon"; import {useTranslation} from "react-i18next"; import ReactTooltip from "react-tooltip"; diff --git a/src/components/NumberInput/NumberInput.module.css b/src/components/NumberInput/NumberInput.module.css index cbe66a7..c737192 100644 --- a/src/components/NumberInput/NumberInput.module.css +++ b/src/components/NumberInput/NumberInput.module.css @@ -93,6 +93,6 @@ } .alert { - font-size: 0.7vw; + /*font-size: 0.7vw;*/ color: var(--red); } diff --git a/src/components/TextInput/TextInput.js b/src/components/TextInput/TextInput.js index a70cb79..3e1c905 100644 --- a/src/components/TextInput/TextInput.js +++ b/src/components/TextInput/TextInput.js @@ -27,7 +27,7 @@ const TextInput = (props) => { onChange={onchange} options={options} classNamePrefix="select" - className={classes.selectBox} + className={`select ${classes.selectBox}`} {...other} /> } diff --git a/src/components/TextInput/TextInput.module.css b/src/components/TextInput/TextInput.module.css index 592cf9d..6611c79 100644 --- a/src/components/TextInput/TextInput.module.css +++ b/src/components/TextInput/TextInput.module.css @@ -100,7 +100,7 @@ } .selectBox { width: 50%; - font-size: 0.75vw; + /*font-size: 0.75vw;*/ } :global .select__control { border-color: transparent !important; diff --git a/src/index.css b/src/index.css index a027bb2..3af59b2 100644 --- a/src/index.css +++ b/src/index.css @@ -115,13 +115,13 @@ html, body { width: 100%; font-family: iranyekan, serif !important; - font-weight: 400; + font-weight: 500; direction: rtl; } .ltr { direction: ltr; - font-weight: 300; + font-weight: 500; font-family: 'Poppins', 'Roboto', sans-serif !important; } @@ -129,7 +129,7 @@ html, body { :root { --menu: #d9d8d8; --subMenu: #f2f2f2; - --mainContent: #f2f5f9; + --mainContent: #f6f6f6; --activeTitle: #f2f5f9; --footer: #e5e9ef; --cardBody: #fff; @@ -147,7 +147,7 @@ html, body { --tableHeader: #f9f9f9; --toolTipBG: #d8d8d8e6; --popupAlpha: #f0f0f0e6; - --textColor: #444444; + --textColor: #000000; --white: #f7f7f7; --black: #0707073b; --gray: #949494; @@ -165,6 +165,7 @@ html, body { --lightBlue: #0d0d5a; } + .dark { --menu: #24242e; --subMenu: #24242e; @@ -664,6 +665,11 @@ a { -ms-flex: 0.6; flex: 0.6; } +.col-52 { + -webkit-box-flex: 0.52; + -ms-flex: 0.52; + flex: 0.52; +} .col-55 { @@ -2111,6 +2117,10 @@ table { margin-top: 10vh; margin-bottom: 10vh; } +.my-20 { + margin-top: 20vh; + margin-bottom: 20vh; +} .m-auto { margin: 0 auto; diff --git a/src/main/Browser/Browser.js b/src/main/Browser/Browser.js index 920c75d..de438df 100644 --- a/src/main/Browser/Browser.js +++ b/src/main/Browser/Browser.js @@ -1,113 +1,8 @@ -import React, {useEffect} from "react"; -import {useDispatch, useSelector} from "react-redux"; -import i18n from "i18next"; -import {Toaster} from "react-hot-toast"; -import FullWidthLoading from "../../components/FullWidthLoading/FullWidthLoading"; -import {loadConfig, setInfoMessage, setUserAccountInfoInitiate} from "../../store/actions"; +import React from "react"; import "./Browser.css" -import useQuery from "../../Hooks/useQuery"; -import useInterval from "../../Hooks/useInterval"; -import {setLastPriceInitiate} from "../../store/actions/exchange"; -import FullWidthError from "../../components/FullWidthError/FullWidthError"; -import {useNavigate} from "react-router-dom"; - const Browser = () => { - const dispatch = useDispatch(); - const navigate = useNavigate(); - - const query = useQuery(); - - - const isDark = useSelector((state) => state.global.isDark) - const isLoading = useSelector((state) => state.global.isLoading) - const hasError = useSelector((state) => state.global.hasError) - const isLogin = useSelector((state) => state.auth.isLogin) - - isDark ? document.body.classList.add('dark') : document.body.classList.remove('dark'); - - useEffect(() => { - const impersonate = query.get("impersonate"); - dispatch(loadConfig(impersonate)) - i18n.language !== "fa" ? document.body.classList.add('ltr') : document.body.classList.remove('ltr'); - i18n.on("languageChanged", (lng) => { - lng !== "fa" ? document.body.classList.add('ltr') : document.body.classList.remove('ltr'); - }); - - window.addEventListener('offline', () => dispatch(setInfoMessage(null, "offline"))); - window.addEventListener('online', () => dispatch(setInfoMessage(null, null))); - return () => { - window.removeEventListener('offline', () => dispatch(setInfoMessage(null, "offline"))); - window.removeEventListener('online', () => dispatch(setInfoMessage(null, null))); - } - }, []); - - const redirectURL = window.env.REACT_APP_BROWSER_URL - - const redirectFunc = () => { - window.location.replace(redirectURL); - }; - - useEffect(()=>{ - redirectFunc() - }, []) - - - - useInterval(() => { - dispatch(setUserAccountInfoInitiate()); - }, isLogin ? 3000 : null) - - useInterval(() => { - dispatch(setLastPriceInitiate()); - }, 3000) - - const Toast = () => - - if (isLoading) { - return - } - if (hasError) { - return - } - - - - - return ( -
- - Open in Mobile ... - -
- ); -}; - + window.location.replace(redirectURL); +} export default Browser; \ No newline at end of file diff --git a/src/main/Mobile/Mobile.js b/src/main/Mobile/Mobile.js index 49f983e..01c37e9 100644 --- a/src/main/Mobile/Mobile.js +++ b/src/main/Mobile/Mobile.js @@ -58,14 +58,14 @@ const Mobile = () => { dispatch(setLastPriceInitiate()); }, 3000) - const Toast = () => { return (
- <div className={`row jc-between ai-center mt-2`}> - <Button + <div className={`row jc-center ai-center mt-2`}> + {/*<Button buttonClass={`${classes.thisButton} col-48 px-3`} buttonTitle={t("MarketTitle.easyTrading")} type="submit" onClick={() => navigate("/", { replace: true })} - /> + />*/} <Button buttonClass={`${classes.thisButton} col-48 px-3`} buttonTitle={t("MarketTitle.advancedTrading")} diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/Sections/OrderSection/OrderSection.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/Sections/OrderSection/OrderSection.js index 11884bb..85d95e5 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/Sections/OrderSection/OrderSection.js +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/Sections/OrderSection/OrderSection.js @@ -69,10 +69,10 @@ const OrderSection = () => { </div> </div> - <div className={`width-100 col-46`}> + <div className={`width-100 col-40`}> {showChart ? <TradingView/> : <OrderBook orderLayout={true}/>} </div> - <div className={`width-100 col-46`}> + <div className={`width-100 col-52`}> <Order/> </div> </> diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/components/Order/Order.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/components/Order/Order.module.css index 8d3c813..2594040 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/components/Order/Order.module.css +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/components/Order/Order.module.css @@ -3,11 +3,11 @@ } .content { height: 100%; - padding: 1vh 0.5vw; + /* padding: 1vh 0.5vw;*/ } .thisButton { - width: 100%; + /*width: 100%;*/ } .alertSubmit{ background-color: var(--orange); @@ -45,4 +45,14 @@ } .stopMarket input { cursor: not-allowed; +} + +.smallInput :global(.lead){ + width: 24%; +} +.smallInput :global(input){ + width: 52%; +} +.smallInput :global(.after){ + width: 24%; } \ No newline at end of file diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/components/Order/api/order.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/components/Order/api/order.js index 47fbebc..9f0f853 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/components/Order/api/order.js +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/components/Order/api/order.js @@ -1,26 +1,18 @@ import axios from "axios"; -export const createOrder = async (activePair , side , order) => { - const timestamp = Date.now() +export const createOrder = async (symbol, side, order, type = "LIMIT", timeInForce = "GTC", timestamp = Date.now().toString()) => { const params = new URLSearchParams(); - params.append('symbol', activePair.symbol); + params.append('symbol',symbol ); params.append('side', side); - params.append('type', "LIMIT"); - params.append('timeInForce', "GTC"); - params.append('timestamp', timestamp.toString()); + params.append('type', type); + params.append('timeInForce', timeInForce); + params.append('timestamp', timestamp); params.append('quantity', order.reqAmount.toString()); params.append('price', order.pricePerUnit.toString()); - return await axios.post(`/api/v3/order`, null , { + return axios.post(`/api/v3/order`, null, { params, - headers : { - 'Content-Type':'application/x-www-form-urlencoded' + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' } - }).then((res) => { - return res; - }).catch((e) => { - if (!e.response) { - return false; - } - return e.response; }) } diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/components/Order/components/BuyOrder/BuyOrder.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/components/Order/components/BuyOrder/BuyOrder.js index d4e1f99..d8bd2af 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/components/Order/components/BuyOrder/BuyOrder.js +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/components/Order/components/BuyOrder/BuyOrder.js @@ -3,7 +3,7 @@ import classes from "../../Order.module.css"; import {Trans, useTranslation} from "react-i18next"; import VerticalNumberInput from "../../../../../../../../../../../../components/VerticalTextInput/VerticalNumberInput"; import {setLastTransaction} from "../../../../../../../../../../../../store/actions/auth"; -import {connect} from "react-redux"; +import {connect, useDispatch, useSelector} from "react-redux"; import {BN, parsePriceString} from "../../../../../../../../../../../../utils/utils"; import {useNavigate} from "react-router-dom"; import Icon from "../../../../../../../../../../../../components/Icon/Icon"; @@ -12,15 +12,30 @@ import {Login as LoginRoute} from "../../../../../../../../../../Routes/routes"; import {toast} from "react-hot-toast"; import {images} from "../../../../../../../../../../../../assets/images"; import {createOrder} from "../../api/order"; +import {useGetUserAccount} from "../../../../../../../../../../../../queries/hooks/useGetUserAccount"; +import NumberInput from "../../../../../../../../../../../../components/NumberInput/NumberInput"; -const BuyOrder = (props) => { +const BuyOrder = () => { const navigate = useNavigate(); + const {t} = useTranslation(); + const dispatch = useDispatch(); + + const {data: userAccount} = useGetUserAccount() const [isLoading, setIsLoading] = useState(false) - const {wallets, activePair, tradeFee, bestBuyPrice, accessToken, isLogin, selectedBuyOrder} = props + + const activePair = useSelector((state) => state.exchange.activePair) + const bestBuyPrice = useSelector((state) => state.exchange.activePairOrders.bestBuyPrice) + const selectedBuyOrder = useSelector((state) => state.exchange.activePairOrders.selectedBuyOrder) + + const tradeFee = useSelector((state) => state.auth.tradeFee) + const isLogin = useSelector((state) => state.auth.isLogin) + + const quote = userAccount?.wallets[activePair.quoteAsset]?.free || 0; + const [alert, setAlert] = useState({ submit: false, reqAmount: null, @@ -36,13 +51,39 @@ const BuyOrder = (props) => { pricePerUnit: new BN(0), totalPrice: new BN(0), }); + + /*useEffect(() => { + if (alert.submit) { + setAlert({ + ...alert, submit: false + }) + } + }, [order, activePair])*/ + useEffect(() => { if (alert.submit) { setAlert({ ...alert, submit: false }) } - }, [order, activePair]) + }, [order]) + + useEffect(() => { + setOrder({ + tradeFee: new BN(0), + stopLimit: false, + stopMarket: false, + stopPrice: new BN(0), + reqAmount: new BN(0), + pricePerUnit: new BN(0), + totalPrice: new BN(0), + }) + setAlert({ + submit: false, + reqAmount: null, + totalPrice: null, + }) + }, [activePair]) const currencyValidator = (key, val, rule) => { if (!val.isZero() && val.isLessThan(rule.min)) { @@ -78,7 +119,7 @@ const BuyOrder = (props) => { ...alert, [key]: (<Trans i18nKey="orders.divisibility" - values={{mod:rule.step.toString()}} + values={{mod: rule.step.toString()}} />) }) } @@ -123,7 +164,7 @@ const BuyOrder = (props) => { }; useEffect(() => { - if(order.totalPrice.isGreaterThan(wallets[activePair.quoteAsset].free)){ + if (order.totalPrice.isGreaterThan(quote)) { return setAlert({ ...alert, totalPrice: t('orders.notEnoughBalance') @@ -163,10 +204,24 @@ const BuyOrder = (props) => { currencyValidator("reqAmount", reqAmount, activePair.baseRange); }, [selectedBuyOrder]); + useEffect(() => { + const reqAmount = new BN(selectedBuyOrder.amount); + const pricePerUnit = new BN(selectedBuyOrder.pricePerUnit); + setOrder({ + ...order, + reqAmount, + pricePerUnit: pricePerUnit, + totalPrice: reqAmount.multipliedBy(pricePerUnit).decimalPlaces(activePair.quoteAssetPrecision), + tradeFee: reqAmount.multipliedBy(tradeFee[activePair.quoteAsset]).decimalPlaces(activePair.baseAssetPrecision), + }); + currencyValidator("reqAmount", reqAmount, activePair.baseRange); + }, [selectedBuyOrder]); + const fillBuyByWallet = () => { + if(order.pricePerUnit.isEqualTo(0) && bestBuyPrice === 0 ) return toast.error(t("orders.hasNoOffer")); if (order.pricePerUnit.isEqualTo(0)) { - const totalPrice = new BN(wallets[activePair.quoteAsset].free); + const totalPrice = new BN(quote); setOrder({ ...order, reqAmount: totalPrice.dividedBy(bestBuyPrice).decimalPlaces(activePair.baseAssetPrecision), @@ -176,7 +231,7 @@ const BuyOrder = (props) => { }); } else { buyPriceHandler( - wallets[activePair.quoteAsset].free.toString(), + quote.toString(), "totalPrice", ); } @@ -189,6 +244,8 @@ const BuyOrder = (props) => { ); }; + console.log("activePair.symbol" , activePair.symbol) + const submit = async () => { if (!isLogin) { navigate(LoginRoute, { replace: true }); @@ -198,121 +255,117 @@ const BuyOrder = (props) => { return false } setIsLoading(true) - const submitOrder = await createOrder(activePair, "BUY", accessToken, order) - if (!submitOrder) { - setIsLoading(false) - } - if (submitOrder.status === 200) { - setOrder({ - tradeFee: new BN(0), - stopLimit: false, - stopMarket: false, - stopPrice: new BN(0), - reqAmount: new BN(0), - - pricePerUnit: new BN(0), - totalPrice: new BN(0), - }) - toast.success(<Trans - i18nKey="orders.success" - values={{ - base: t("currency." + activePair.baseAsset), - quote: t("currency." + activePair.quoteAsset), - type: t("buy"), - reqAmount: order.reqAmount, - pricePerUnit: order.pricePerUnit, - }} - />); - setTimeout(() => props.setLastTransaction(submitOrder.data.transactTime), 2000); - } else { + createOrder(activePair.symbol, "BUY", order) + .then((res) => { + setOrder({ + tradeFee: new BN(0), + stopLimit: false, + stopMarket: false, + stopPrice: new BN(0), + reqAmount: new BN(0), + pricePerUnit: new BN(0), + totalPrice: new BN(0), + }) + toast.success(<Trans + i18nKey="orders.success" + values={{ + base: t("currency." + activePair.baseAsset), + quote: t("currency." + activePair.quoteAsset), + type: t("buy"), + reqAmount: order.reqAmount, + pricePerUnit: order.pricePerUnit, + }} + />); + dispatch(setLastTransaction(res.data.transactTime)) + }).catch(() => { toast.error(t("orders.error")); setAlert({ ...alert, submit: true }) - } - setIsLoading(false) + }).finally(() => { + setIsLoading(false) + }) } const submitButtonTextHandler = () => { if (isLoading) { return <img className={`${classes.thisLoading}`} src={images.linearLoading} alt="linearLoading"/> } - if (alert.submit) { + /*if (alert.submit) { return <span>{t("login.loginError")}</span> - } + }*/ if (isLogin) { + return t("buy") + } + /*if (isLogin) { return <span>{t("buy")} {order.reqAmount.minus(order.tradeFee).decimalPlaces(activePair.baseAssetPrecision).toNumber()}{" "} {t("currency." + activePair.baseAsset)}</span> - } + }*/ return t("pleaseLogin") } - const volumeTop = <div className={`width-100 row jc-center ai-center fs-0-6`} onClick={() => {fillBuyByBestPrice()}}> - <Icon iconName={`icon-plus fs-0-6 flex`} customClass={`mx-1`}/> - <span>{wallets[activePair.quoteAsset].free.toLocaleString()}{" "}{t("currency." + activePair.quoteAsset)}</span> - </div> - - const pricePerUnitTop = <div className={`width-100 row jc-center ai-center fs-0-6`} onClick={() => {fillBuyByWallet()}}> - <Icon iconName={`icon-plus fs-0-6 flex`} customClass={`mx-1`}/> - <span>{bestBuyPrice.toLocaleString()}{" "}{t("currency." + activePair.quoteAsset)}</span> - </div> - - const totalPriceTop = <div className={`width-100 row jc-around ai-center fs-0-6`}> - <p>{t("commission")}</p> - <p> - {order.tradeFee.toFormat()}{" "} - {t("currency." + activePair.baseAsset)} - </p> - </div> - return ( - <div className={`column jc-between ${classes.content}`}> - - <div className={`row jc-around`}> - <div className={`col-48`}> - <VerticalNumberInput - top={volumeTop} - lead={t("volume")} - value={order.reqAmount.toString()} - maxDecimal={activePair.baseAssetPrecision} - onchange={(e) => buyPriceHandler(e.target.value, "reqAmount")} - //alert={alert.reqAmount} - /> - </div> - <div className={`col-48`}> - <VerticalNumberInput - top={pricePerUnitTop} - lead={t("pricePerUnit")} - value={order.pricePerUnit.toString()} - maxDecimal={activePair.quoteAssetPrecision} - onchange={(e) => buyPriceHandler(e.target.value, "pricePerUnit")} - /> + <div className={`column jc-between ${classes.content} px-2 py-1`}> + + <div className={`column`}> + <div className={`row jc-between ai-center fs-0-8`} onClick={() => {fillBuyByWallet()}}> + <span>{t("orders.availableAmount")}:</span> + <span>{new BN(quote).toFormat()}{" "}{t("currency." + activePair.quoteAsset)}</span> </div> - </div> - <div className={`row jc-around`}> - <div className={`col-98`}> - <VerticalNumberInput - top={totalPriceTop} - lead={t("totalPrice")} - value={order.totalPrice.toString()} - maxDecimal={activePair.quoteAssetPrecision} - onchange={(e) => buyPriceHandler(e.target.value, "totalPrice")} - //alert={alert.totalPrice} - /> + <div className={`row jc-between ai-center fs-0-8`} onClick={() => fillBuyByBestPrice()}> + <span>{t("orders.bestOffer")}:</span> + <span>{new BN(bestBuyPrice).toFormat()}{" "}{t("currency." + activePair.quoteAsset)}</span> </div> </div> - <div className={`row jc-around`}> - <div className={`col-98`}> - <Button - buttonClass={`${classes.thisButton} ${alert.submit ? classes.alertSubmit : classes.buyOrder} ${isLoading ? "cursor-not-allowed" : "cursor-pointer"} flex jc-center ai-center`} - type="submit" - onClick={submit} - disabled={alert.reqAmount || order.reqAmount.isZero() || order.pricePerUnit.isZero() || !isLogin} - buttonTitle={submitButtonTextHandler()} - /> + + <NumberInput + lead={t("volume")} + after={t("currency." + activePair.baseAsset)} + value={order.reqAmount.toString()} + maxDecimal={activePair.baseAssetPrecision} + onchange={(e) => buyPriceHandler(e.target.value, "reqAmount")} + alert={alert.reqAmount} + customClass={`${classes.smallInput} fs-0-8`} + /> + <NumberInput + lead={t("orders.pricePerUnit")} + after={t("currency." + activePair.quoteAsset)} + value={order.pricePerUnit.toString()} + maxDecimal={activePair.quoteAssetPrecision} + onchange={(e) => buyPriceHandler(e.target.value, "pricePerUnit")} + customClass={`${classes.smallInput} fs-0-8 my-05`} + /> + <NumberInput + lead={t("totalPrice")} + value={order.totalPrice.toString()} + maxDecimal={activePair.quoteAssetPrecision} + after={t("currency." + activePair.quoteAsset)} + onchange={(e) => buyPriceHandler(e.target.value, "totalPrice")} + customClass={`${classes.smallInput} fs-0-8`} + /> + <div className={`row jc-between ai-center`}> + <div className="column jc-center fs-0-8"> + <p> + {t("orders.tradeFee")}:{" "} + {order.tradeFee.toFormat()}{" "} + {t("currency." + activePair.quoteAsset)} + </p> + <p> + {t("orders.getAmount")}:{" "} + {order.totalPrice.minus(order.tradeFee).decimalPlaces(activePair.baseAssetPrecision).toNumber()}{" "} + {t("currency." + activePair.quoteAsset)} + </p> </div> + <Button + buttonClass={`${classes.thisButton} width-50 ${classes.buyOrder} ${isLoading ? "cursor-not-allowed" : "cursor-pointer"} flex jc-center ai-center`} + type="submit" + onClick={submit} + disabled={alert.reqAmount || order.reqAmount.isZero() || order.pricePerUnit.isZero() || !isLogin} + buttonTitle={submitButtonTextHandler()} + + /> </div> @@ -321,22 +374,6 @@ const BuyOrder = (props) => { ); }; -const mapStateToProps = (state) => { - return { - activePair: state.exchange.activePair, - bestBuyPrice: state.exchange.activePairOrders.bestBuyPrice, - selectedBuyOrder: state.exchange.activePairOrders.selectedBuyOrder, - wallets: state.auth.wallets, - tradeFee: state.auth.tradeFee, - accessToken: state.auth.accessToken, - isLogin: state.auth.isLogin, - }; -}; -const mapDispatchToProps = (dispatch) => { - return { - setLastTransaction: (time) => dispatch(setLastTransaction(time)), - }; -}; -export default connect(mapStateToProps, mapDispatchToProps)(BuyOrder); +export default BuyOrder; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/components/Order/components/SellOrder/SellOrder.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/components/Order/components/SellOrder/SellOrder.js index 7bb5f51..68ad7e5 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/components/Order/components/SellOrder/SellOrder.js +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Market/components/Order/components/SellOrder/SellOrder.js @@ -1,17 +1,336 @@ -import React from "react"; +import React, {useEffect, useState} from "react"; import classes from "../../Order.module.css"; -import {useTranslation} from "react-i18next"; +import {Trans, useTranslation} from "react-i18next"; +import {useNavigate} from "react-router-dom"; +import {useDispatch, useSelector} from "react-redux"; +import {useGetUserAccount} from "../../../../../../../../../../../../queries/hooks/useGetUserAccount"; +import {toast} from "react-hot-toast"; +import {setLastTransaction} from "../../../../../../../../../../../../store/actions/auth"; +import {BN, parsePriceString} from "../../../../../../../../../../../../utils/utils"; +import {createOrder} from "js-api-client"; +import {images} from "../../../../../../../../../../../../assets/images"; +import Icon from "../../../../../../../../../../../../components/Icon/Icon"; +import NumberInput from "../../../../../../../../../../../../components/NumberInput/NumberInput"; +import Button from "../../../../../../../../../../../../components/Button/Button"; + + const SellOrder = () => { + const navigate = useNavigate(); const {t} = useTranslation(); + const dispatch = useDispatch(); + const [isLoading, setIsLoading] = useState(false) - return ( - <div className={`column jc-between ${classes.content}`}> + const tradeFee = useSelector((state) => state.auth.tradeFee) + const isLogin = useSelector((state) => state.auth.isLogin) + const activePair = useSelector((state) => state.exchange.activePair) + const bestSellPrice = useSelector((state) => state.exchange.activePairOrders.bestSellPrice) + const selectedSellOrder = useSelector((state) => state.exchange.activePairOrders.selectedSellOrder) + + const {data: userAccount} = useGetUserAccount() + const base = userAccount?.wallets[activePair.baseAsset]?.free || 0; + const quote = userAccount?.wallets[activePair.quoteAsset]?.free || 0; + + const [alert, setAlert] = useState({ + reqAmount: null, + submit: false, + }); + + const [order, setOrder] = useState({ + tradeFee: new BN(0), + stopLimit: false, + stopMarket: false, + stopPrice: new BN(0), + reqAmount: new BN(0), + pricePerUnit: new BN(0), + totalPrice: new BN(0), + }); + + useEffect(() => { + if (alert.submit) { + setAlert({ + ...alert, submit: false + }) + } + }, [order]) + + useEffect(() => { + setOrder({ + tradeFee: new BN(0), + stopLimit: false, + stopMarket: false, + stopPrice: new BN(0), + reqAmount: new BN(0), + pricePerUnit: new BN(0), + totalPrice: new BN(0), + }) + setAlert({ + submit: false, + reqAmount: null, + totalPrice: null, + }) + }, [activePair]) + + + const currencyValidator = (key, val, rule) => { + if (!val.isZero() && val.isLessThan(rule.min)) { + return setAlert({ + ...alert, + [key]: ( + <Trans + i18nKey="orders.minOrder" + values={{ + min: activePair.baseRange.min, + currency: t("currency." + activePair.baseAsset), + }} + /> + ), + }); + } + if (val.isGreaterThan(rule.max)) { + return setAlert({ + ...alert, + [key]: + (<Trans + i18nKey="orders.maxOrder" + values={{ + max: activePair.baseRange.max, + currency: t("currency." + activePair.baseAsset), + }} + />) + }) + } + if (!val.mod(rule.step).isZero()) { + return setAlert({ + ...alert, + [key]: (<Trans + i18nKey="orders.divisibility" + values={{mod: rule.step.toString()}} + />) + }) + } + return setAlert({...alert, [key]: null}); + }; + + const sellPriceHandler = (value, key) => { + value = parsePriceString(value); + switch (key) { + case "reqAmount": + const reqAmount = new BN(value); + currencyValidator("reqAmount", reqAmount, activePair.baseRange); + setOrder({ + ...order, + reqAmount, + totalPrice: reqAmount.multipliedBy(order.pricePerUnit).decimalPlaces(activePair.quoteAssetPrecision), + tradeFee: reqAmount.multipliedBy(order.pricePerUnit).multipliedBy(tradeFee[activePair.quoteAsset]).decimalPlaces(activePair.baseAssetPrecision), + }); + break; + case "pricePerUnit": + const pricePerUnit = new BN(value); + setOrder({ + ...order, + pricePerUnit: pricePerUnit, + totalPrice: pricePerUnit.multipliedBy(order.reqAmount).decimalPlaces(activePair.quoteAssetPrecision), + tradeFee: pricePerUnit.multipliedBy(order.reqAmount).multipliedBy(tradeFee[activePair.quoteAsset]).decimalPlaces(activePair.baseAssetPrecision), + }); + break; + case "totalPrice": + const totalPrice = new BN(value); + const req = totalPrice.dividedBy(order.pricePerUnit).decimalPlaces(activePair.baseAssetPrecision); + setOrder({ + ...order, + reqAmount: req.isFinite() ? req : new BN(0), + totalPrice, + tradeFee: req.isFinite() ? totalPrice.multipliedBy(tradeFee[activePair.quoteAsset]).decimalPlaces(activePair.baseAssetPrecision) : new BN(0), + }); + currencyValidator("reqAmount", req, activePair.baseRange); + break; + default: + } + }; + useEffect(() => { + setOrder((prevState) => ({ + ...order, + tradeFee: prevState.totalPrice.multipliedBy(tradeFee[activePair.quoteAsset]).decimalPlaces(activePair.baseAssetPrecision), + })); + }, [tradeFee]); + + useEffect(() => { + sellPriceHandler( + bestSellPrice.toString(), + "pricePerUnit", + ); + }, [order.stopMarket]); + + useEffect(() => { + const reqAmount = new BN(selectedSellOrder.amount); + const pricePerUnit = new BN(selectedSellOrder.pricePerUnit); + setOrder({ + ...order, + reqAmount, + pricePerUnit: pricePerUnit, + totalPrice: reqAmount.multipliedBy(pricePerUnit).decimalPlaces(activePair.quoteAssetPrecision), + tradeFee: reqAmount.multipliedBy(tradeFee[activePair.quoteAsset]).decimalPlaces(activePair.baseAssetPrecision), + }); + currencyValidator("reqAmount", reqAmount, activePair.baseRange); + }, [selectedSellOrder]); + + const fillSellByWallet = () => { + if(order.pricePerUnit.isEqualTo(0) && bestSellPrice === 0 ) return toast.error(t("orders.hasNoOffer")); + if (order.pricePerUnit.isEqualTo(0)) { + const totalPrice = new BN(quote); + setOrder({ + ...order, + reqAmount: totalPrice.dividedBy(bestSellPrice).decimalPlaces(activePair.baseAssetPrecision), + pricePerUnit: new BN(bestSellPrice), + totalPrice, + tradeFee: totalPrice.multipliedBy(tradeFee[activePair.quoteAsset]).decimalPlaces(activePair.baseAssetPrecision), + }); + } else { + sellPriceHandler( + quote.toString(), + "totalPrice", + ); + } + }; + + const fillSellByBestPrice = () => { + sellPriceHandler( + bestSellPrice.toString(), + "pricePerUnit", + ); + }; + + useEffect(() => { + if (order.reqAmount.isGreaterThan(base)) { + return setAlert({ + ...alert, + reqAmount: t('orders.notEnoughBalance') + }) + } + return setAlert({ + ...alert, + reqAmount: null + }) + }, [order.reqAmount]); + + const submit = () => { + if (!isLogin) { + return false + } + if (isLoading) { + return false + } + setIsLoading(true) + createOrder(activePair.symbol, "SELL", order) + .then((res) => { + setOrder({ + tradeFee: new BN(0), + stopLimit: false, + stopMarket: false, + stopPrice: new BN(0), + reqAmount: new BN(0), + pricePerUnit: new BN(0), + totalPrice: new BN(0), + }) + toast.success(<Trans + i18nKey="orders.success" + values={{ + base: t("currency." + activePair.baseAsset), + quote: t("currency." + activePair.quoteAsset), + type: t("sell"), + reqAmount: order.reqAmount, + pricePerUnit: order.pricePerUnit, + }} + />); + dispatch(setLastTransaction(res.data.transactTime)) + }).catch(() => { + toast.error(t("orders.error")); + setAlert({ + ...alert, submit: true + }) + }).finally(() => { + setIsLoading(false) + }) + } + + const submitButtonTextHandler = () => { + if (isLoading) { + return <img className={`${classes.thisLoading}`} src={images.linearLoading} alt="linearLoading"/> + } + /*if (alert.submit) { + return <span>{t("login.loginError")}</span> + }*/ + if (isLogin) { + return t("sell") + } + return t("pleaseLogin") + } + + + return ( + <div className={`column jc-between ${classes.content} px-2 py-1`}> + <div className={`column`}> + <div className={`row jc-between ai-center fs-0-8`} onClick={() => {fillSellByWallet()}}> + <span>{t("orders.availableAmount")}:</span> + <span>{new BN(base).toFormat()}{" "}{t("currency." + activePair.baseAsset)}</span> + </div> + <div className={`row jc-between ai-center fs-0-8`} onClick={() => fillSellByBestPrice()}> + <span> {t("orders.bestOffer")}:</span> + <span> {new BN(bestSellPrice).toFormat()}{" "}{t("currency." + activePair.quoteAsset)}</span> + </div> + </div> + <NumberInput + lead={t("orders.amount")} + after={t("currency." + activePair.baseAsset)} + value={order.reqAmount.toString()} + maxDecimal={activePair.baseAssetPrecision} + onchange={(e) => sellPriceHandler(e.target.value, "reqAmount")} + alert={alert.reqAmount} + customClass={`${classes.smallInput} fs-0-8`} + /> + <NumberInput + lead={t("orders.pricePerUnit")} + after={t("currency." + activePair.quoteAsset)} + value={order.pricePerUnit.toString()} + maxDecimal={activePair.quoteAssetPrecision} + onchange={(e) => sellPriceHandler(e.target.value, "pricePerUnit")} + customClass={`${classes.smallInput} fs-0-8 my-05`} + /> + <NumberInput + lead={t("orders.totalPrice")} + value={order.totalPrice.toString()} + maxDecimal={activePair.quoteAssetPrecision} + after={t("currency." + activePair.quoteAsset)} + onchange={(e) => sellPriceHandler(e.target.value, "totalPrice")} + customClass={`${classes.smallInput} fs-0-8`} + /> + <div className={`row jc-between ai-center`}> + <div className="column jc-center fs-0-8"> + <p> + {t("orders.tradeFee")}:{" "} + {order.tradeFee.toFormat()}{" "} + {t("currency." + activePair.quoteAsset)} + </p> + <p> + {t("orders.getAmount")}:{" "} + {order.totalPrice.minus(order.tradeFee).decimalPlaces(activePair.baseAssetPrecision).toNumber()}{" "} + {t("currency." + activePair.quoteAsset)} + </p> + </div> + <Button + buttonClass={`${classes.thisButton} width-50 ${classes.sellOrder} ${isLoading ? "cursor-not-allowed" : "cursor-pointer"} flex jc-center ai-center`} + type="submit" + onClick={submit} + disabled={alert.reqAmount || order.reqAmount.isZero() || order.pricePerUnit.isZero() || !isLogin} + buttonTitle={submitButtonTextHandler()} + /> + </div> </div> ); }; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/Settings.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/Settings.js index 3a5942e..be67dd8 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/Settings.js +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/Settings.js @@ -1,18 +1,50 @@ import React from "react"; -import ToggleSwitch from "../../../../../../../../components/ToggleSwitch/ToggleSwitch"; import {setThemeInitiate} from "../../../../../../../../store/actions"; import {connect} from "react-redux"; -import {useTranslation} from "react-i18next"; +import {Navigate, Route, Routes, useParams} from "react-router-dom"; +import Profile from "./components/Profile/Profile"; +import Security from "./components/Security/Security"; +import Authentication from "./components/Authentication/Authentication"; +import APIKey from "./components/APIKey/APIKey"; +import * as RoutesName from "../../../../../../Routes/routes"; const Settings = (props) => { - const {t} = useTranslation(); + + const {path} = useParams() + + console.log(path) + + const content = () => { + + if (path === "profile") { + return <Profile/> + } + if (path === "security") { + return <Security/> + } + if (path === "authentication") { + return <Authentication/> + } + if (path === "api-key") { + return <APIKey/> + } + + } return ( - <div className={`width-100 column jc-around ai-center`} style={{height:"100%"}}> - <span>{t("comingSoon")}</span> - <ToggleSwitch onchange={(e) => props.onThemeChange(e.target.checked)} checked={props.isDark}/> + <div className={`width-100 flex ai-center jc-center height-100 px-3 py-1`}> + + + <Routes> + <Route path={RoutesName.Settings} element={<Navigate to={{pathname: `${RoutesName.Profile}`}} replace/>}/> + <Route path={RoutesName.ProfileRelative} element={<Profile/>}/> + <Route path={RoutesName.SecurityRelative} element={<Security/>}/> + <Route path={RoutesName.AuthenticationRelative} element={<Authentication/>}/> + <Route path={RoutesName.APIKeyRelative} element={<APIKey/>}/> + </Routes> + </div> ); }; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/APIKey/APIKey.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/APIKey/APIKey.js new file mode 100644 index 0000000..f064d8a --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/APIKey/APIKey.js @@ -0,0 +1,11 @@ +import React from 'react'; + +const APIKey = () => { + return ( + <div> + + </div> + ); +}; + +export default APIKey; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/APIKey/APIKey.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/APIKey/APIKey.module.css new file mode 100644 index 0000000..e69de29 diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/Authentication.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/Authentication.js new file mode 100644 index 0000000..f786c89 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/Authentication.js @@ -0,0 +1,120 @@ +import React, {useEffect, useState} from 'react'; +import ScrollBar from "../../../../../../../../../../components/ScrollBar"; +import {useTranslation} from "react-i18next"; +import {useSelector} from "react-redux"; +import HelpStep from "./components/HelpStep/HelpStep"; +import PersonalProfileStep from "./components/PersonalProfileStep/PersonalProfileStep"; +import SendPhotosStep from "./components/SendPhotosStep/SendPhotosStep"; +import SendToAdminStep from "./components/SendToAdminStep/SendToAdminStep"; + +const Authentication = () => { + + const {t} = useTranslation(); + const [step, setStep] = useState(1); + + const KYCStatus = useSelector(state => state.auth.kyc); + + useEffect(()=>{ + if (KYCStatus && KYCStatus !== "NOT_REQUESTED" ) { + setStep(4) + } + }, [KYCStatus]) + + const titleHandler = () => { + + if (step === 1) return t("Authentication.HelpStep") + if (step === 2) return t("Authentication.PersonalProfileStep") + if (step === 3) return t("Authentication.SendPhotosStep") + if (step === 4) return t("Authentication.SendToAdminStep") + + } + + const stepSwitch = (step) => { + switch (step) { + case 1: + return <HelpStep nextStep={() => setStep(2)}/>; + case 2: + return ( + <PersonalProfileStep + prevStep={() => setStep(1)} + nextStep={() => setStep(3)} + /> + ); + case 3: + return ( + <SendPhotosStep + prevStep={() => setStep(2)} + nextStep={() => setStep(4)} + /> + ); + case 4: + return <SendToAdminStep prevStep={() => setStep(3)}/>; + default: + return <HelpStep/>; + } + }; + + + return ( + <div className={`column width-100 height-100`}> + <div className={`width-100 column jc-center ai-center mb-3`}> + <span className={`font-weight-bold my-2`}>{titleHandler()}</span> + <div className="row card-bg card-border width-80" > + {step === 1 ? ( + <span className="col-25" + style={{ + backgroundColor: "var(--activeTab)", + height: "0.75vh", + borderBottomRightRadius: "15px", + borderTopRightRadius: "15px", + }} + /> + ) : ( + "" + )} + {step === 2 ? ( + <span className="col-50" + style={{ + backgroundColor: "var(--activeTab)", + height: "0.75vh", + borderBottomRightRadius: "15px", + borderTopRightRadius: "15px", + transition: "all 5s", + }} + /> + ) : ( + "" + )} + {step === 3 ? ( + <span className="col-75" + style={{ + backgroundColor: "var(--activeTab)", + height: "0.75vh", + borderBottomRightRadius: "15px", + borderTopRightRadius: "15px", + }} + /> + ) : ( + "" + )} + {step === 4 ? ( + <span className="col-100" + style={{ + backgroundColor: "var(--activeTab)", + height: "0.75vh", + borderRadius: "15px", + }} + /> + ) : ( + "" + )} + </div> + </div> + <ScrollBar> + {stepSwitch(step)} + </ScrollBar> + </div> + ); +}; + +export default Authentication; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/Authentication.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/Authentication.module.css new file mode 100644 index 0000000..e69de29 diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/HelpStep/HelpStep.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/HelpStep/HelpStep.js new file mode 100644 index 0000000..f8d4309 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/HelpStep/HelpStep.js @@ -0,0 +1,30 @@ +import React from 'react'; +import classes from "./HelpStep.module.css"; +import {useTranslation} from "react-i18next"; +import Button from "../../../../../../../../../../../../components/Button/Button"; + +const HelpStep = ({nextStep}) => { + const {t} = useTranslation(); + + return ( + <div className={`card-bg card-border column ${classes.container}`}> + <div className={`column border-bottom jc-center card-header-bg px-4 py-1 ${classes.header}`}> + <div className="row jc-start "> + <h4>{t("HelpStep.title")}</h4> + </div> + </div> + <div className={`column jc-between px-4 py-2 ${classes.content}`}> + <span>{t("HelpStep.content")}</span> + <div className="row jc-center"> + <Button + buttonClass={classes.thisButton} + onClick={nextStep} + buttonTitle={t("nextStep")} + /> + </div> + </div> + </div> + ); +}; + +export default HelpStep; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/HelpStep/HelpStep.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/HelpStep/HelpStep.module.css new file mode 100644 index 0000000..016a397 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/HelpStep/HelpStep.module.css @@ -0,0 +1,13 @@ +.container { + height: 100%; +} +.header { + height: 12%; +} +.content { + height: 88%; +} +.thisButton { + width: 30%; + background-color: var(--darkGreen); +} diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/PersonalProfileStep/PersonalProfileStep.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/PersonalProfileStep/PersonalProfileStep.js new file mode 100644 index 0000000..0cf4e4f --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/PersonalProfileStep/PersonalProfileStep.js @@ -0,0 +1,313 @@ +import React, {useEffect, useState} from 'react'; +import classes from "./PersonalProfileStep.module.css"; +import {Trans, useTranslation} from "react-i18next"; +import {useDispatch, useSelector} from "react-redux"; +import {getUserAttributes, setUserProfileAttributes} from "js-api-client"; +import {changeUserInfo} from "../../../../../../../../../../../../store/actions"; +import moment from "moment-jalaali"; +import {isValidNationalCode} from "../../../../../../../../../../../../utils/utils"; +import TextInput from "../../../../../../../../../../../../components/TextInput/TextInput"; +import Loading from "../../../../../../../../../../../../components/Loading/Loading"; +import Button from "../../../../../../../../../../../../components/Button/Button"; + +const PersonalProfileStep = (props) => { + + const {t} = useTranslation(); + const [loading, setLoading] = useState(true) + const [error, setError] = useState([]) + const dispatch = useDispatch(); + const email = useSelector((state) => state.auth.email) + + const [profile, setProfile] = useState({ + firstName: {value: "", error: []}, + lastName: {value: "", error: []}, + nationality: {value: "", error: []}, + residence: {value: "", error: []}, + birthday: {value: "", error: []}, + idNumber: {value: "", error: []}, + mobile: {value: "", error: []}, + postalCode: {value: "", error: []}, + address: {value: "", error: []}, + }); + const countries = [ + {value: "iran", label: t('country.iran')}, + {value: "germany", label: t('country.germany')}, + {value: "uk", label: t('country.uk')}, + {value: "turkey", label: t('country.turkey')}, + ] + + const convertUserInfoToState = (info) => { + const newState = {...profile} + for (const [key, value] of Object.entries(info)) { + newState[key] = {value: value, error: []} + } + setProfile(newState) + } + + const convertStateToUserInfo = () => { + const newState = {} + for (const [key, value] of Object.entries(profile)) { + newState[key] = value.value + } + return newState + } + + const getUser = () => { + setLoading(true) + setError([]) + getUserAttributes().then((res) => { + convertUserInfoToState(res.data) + }).catch(() => { + setError([t("PersonalProfileStep.serverError")]) + }).finally(() => { + setLoading(false) + }) + } + useEffect(() => { + getUser() + }, []) + + const sendProfile = async () => { + if (!isFormValid()) return + setLoading(true) + + const data = convertStateToUserInfo() + delete data.email; + delete data.username; + delete data.passportNumber; + delete data.birthdayG; + delete data.birthdayJ; + delete data.nationalId; + delete data.telephone; + delete data.selfiePath; + delete data.idCardPath; + delete data.acceptFormPath; + + + setUserProfileAttributes(data) + .then(() => { + setError([]) + dispatch(changeUserInfo(profile.firstName.value, profile.lastName.value)) + props.nextStep() + }) + .catch(() => { + setError([t("PersonalProfileStep.serverError")]) + }) + .finally(() => { + setLoading(false) + }) + } + + const inputHandler = (e) => { + let errorMessage = [] + let inputVal = e.target.value + if (typeof e.target.dataset?.min && inputVal.length < e.target.dataset.min) { + errorMessage.push(<Trans + i18nKey="PersonalProfileStep.minInput" + values={{ + name: t("PersonalProfile." + e.target.dataset.name), + min: e.target.dataset.min + }} + />) + } + if (typeof e.target.dataset?.max && inputVal.length >= e.target.dataset.max) { + errorMessage.push(<Trans + i18nKey="PersonalProfileStep.maxInput" + values={{ + name: t("PersonalProfile." + e.target.dataset.name), + max: e.target.dataset.max + }} + />) + } + if (e.target.dataset?.type === "dateJ" && (!moment(inputVal, "jYYYY/jMM/jDD").isValid() || moment(inputVal, "jYYYY/jMM/jDD").isAfter())) { + errorMessage.push(t("PersonalProfileStep.wrongDateJ")) + } + if (e.target.dataset?.type === "dateG" && (!moment(inputVal, ["YYYY/MM/DD", "YYYY/M/D"], true) || moment(inputVal, ["YYYY/MM/DD", "YYYY/M/D"], true).isAfter())) { + errorMessage.push(t("PersonalProfileStep.wrongDateG")) + } + if (e.target.dataset?.type === "nationalId" && !isValidNationalCode(inputVal)) { + inputVal = inputVal.replace(/[^0-9]+/g, "") + errorMessage.push(t("PersonalProfileStep.wrongNationalId")) + } + if (e.target.dataset?.type === "mobile" || e.target.dataset?.type === "telephone" || e.target.dataset?.type === "postalCode") { + inputVal = inputVal.replace(/[^0-9]+/g, "") + } + setProfile({ + ...profile, + [e.target.dataset.name]: {value: inputVal, error: errorMessage} + }) + } + + const isFormValid = () => { + let inputs = {...profile} + const hasError = Object.values(profile).find(input => input.error.length > 0) + if (hasError) return false + let isEmpty = false + for (const key in inputs) { + if (inputs[key].value.length === 0) { + isEmpty = true + inputs = { + ...inputs, + [key]: { + ...inputs[key], + error: [<Trans + i18nKey="PersonalProfileStep.emptyInput" + values={{ + name: t("PersonalProfile." + key), + }} + />] + } + } + } + } + setProfile(inputs); + return !isEmpty; + } + + + return ( + <div className={`card-bg card-border column ${classes.container}`}> + <div className={`column border-bottom jc-center card-header-bg px-4 py-2 ${classes.header}`}> + <div className="row jc-start "> + <h3>{t("PersonalProfileStep.title")}</h3> + </div> + </div> + {loading ? <div className={`my-20`}><Loading/></div> : + <div className={`column jc-between ai-center px-4 py-2 ${classes.content}`}> + <TextInput + lead={t('PersonalProfile.firstName')} + type="text" + value={profile.firstName.value} + customClass={`${classes.thisInput} width-100 my-1`} + data-name="firstName" + data-type="input" + data-min={2} + onchange={(e) => inputHandler(e)} + alerts={profile.firstName.error} + /> + <TextInput + lead={t('PersonalProfile.lastName')} + type="text" + value={profile.lastName.value} + customClass={`${classes.thisInput} width-100 my-1`} + data-name="lastName" + data-type="input" + data-min={2} + onchange={(e) => inputHandler(e)} + alerts={profile.lastName.error} + /> + <TextInput + select={true} + placeholder={t('PersonalProfile.select')} + customClass={`${classes.thisInput} width-100 my-1`} + options={countries} + defaultValue={countries.filter((v) => v.value === profile.nationality.value)} + lead={t('PersonalProfile.nationality')} + type="select" + onchange={(e) => setProfile({...profile, nationality: {value: e.value, error: []}})} + alerts={profile.nationality.error} + /> + <TextInput + select={true} + placeholder={t('PersonalProfile.select')} + customClass={`${classes.thisInput} width-100 my-1`} + lead={t('PersonalProfile.residence')} + defaultValue={countries.filter((v) => v.value === profile.residence.value)} + type="select" + options={countries} + onchange={(e) => setProfile({...profile, residence: {value: e.value, error: []}})} + alerts={profile.residence.error} + /> + + + <TextInput + lead={t('PersonalProfile.birthday')} + type="text" + placeholder={t('PersonalProfileStep.yy/mm//dd')} + customClass={`${classes.thisInput} width-100 my-1`} + ltr={true} + value={profile.birthday.value} + data-name="birthday" + data-type="birthday" + onchange={(e) => inputHandler(e)} + alerts={profile.birthday.error} + /> + <TextInput + lead={t('PersonalProfile.idNumber')} + placeholder={t('PersonalProfile.idNumberPlaceHolder')} + type="text" + value={profile.idNumber.value} + customClass={`${classes.thisInput} width-100 fs-0-9 my-1`} + data-name="idNumber" + data-type="idNumber" + onchange={(e) => inputHandler(e)} + alerts={profile.idNumber.error} + //maxLength="10" + /> + + <TextInput + lead={t('PersonalProfile.mobile')} + type="text" + customClass={`${classes.thisInput} width-100 my-1`} + ltr={true} + value={profile.mobile.value} + data-name="mobile" + data-type="mobile" + onchange={(e) => inputHandler(e)} + alerts={profile.mobile.error} + /> + <TextInput + lead={t('PersonalProfile.postalCode')} + type="text" + customClass={`${classes.thisInput} width-100 my-1`} + ltr={true} + value={profile.postalCode.value} + data-name="postalCode" + data-type="postalCode" + onchange={(e) => inputHandler(e)} + alerts={profile.postalCode.error} + /> + <TextInput + lead={t('PersonalProfile.email')} + type="email" + disabled={true} + value={email} + customClass={`${classes.email} ${classes.thisInput} width-100 my-1`} + alerts={[]} + /> + <TextInput + lead={t('PersonalProfile.address')} + type="text" + customClass={`${classes.thisInput} width-100 my-1`} + ltr={true} + value={profile.address.value} + data-name="address" + data-type="address" + onchange={(e) => inputHandler(e)} + alerts={profile.address.error} + /> + <div className="width-100 column pt-2 jc-between"> + <div className={` flex jc-center my-2`}> + <span className={` text-red fs-0-8 cursor-pointer`} onClick={getUser}>{error.length !== 0 && error}</span> + </div> + <div className={`width-100 row jc-center ai-center mt-1`}> + <Button + buttonClass={`${classes.thisButton} ${classes.prev} ml-2`} + onClick={props.prevStep} + buttonTitle={t("prevStep")} + /> + <Button + buttonClass={`${classes.thisButton} ${classes.next} mr-2`} + onClick={sendProfile} + buttonTitle={t("nextStep")} + /> + </div> + </div> + </div> + } + + </div> + ); +}; + +export default PersonalProfileStep; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/PersonalProfileStep/PersonalProfileStep.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/PersonalProfileStep/PersonalProfileStep.module.css new file mode 100644 index 0000000..f2e9035 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/PersonalProfileStep/PersonalProfileStep.module.css @@ -0,0 +1,34 @@ +.container { + min-height: 65vh; +} + +.content :global(.row) { + width: 100%; +} +.addressInput :global(.lead) { + width: 24.5%; +} +.addressInput :global(input) { + width: 75.5%; +} +.thisButton { + width: 30%; +} +.thisButton.prev{ + background-color: var(--orange); +} +.thisButton.next{ + background-color: var(--darkGreen); +} +.email :global(input){ + background-color: var(--cardHeader); + cursor: not-allowed; +} + +.thisInput :global(.lead) { + width: 40%; +} +.thisInput :global(input) { + width: 60%; +} + diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/SendPhotosStep/SendPhotosStep.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/SendPhotosStep/SendPhotosStep.js new file mode 100644 index 0000000..ae97454 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/SendPhotosStep/SendPhotosStep.js @@ -0,0 +1,125 @@ +import React, {useState} from 'react'; +import classes from "./SendPhotosStep.module.css"; +import {sendFileToUserStorage, setKycFileToUserAttributes} from "js-api-client"; +import {toast} from "react-hot-toast"; +import {useTranslation} from "react-i18next"; +import {useSelector} from "react-redux"; +import ImageInput from "../../../../../../../../../../../../components/ImageInput/ImageInput"; +import Button from "../../../../../../../../../../../../components/Button/Button"; + +const SendPhotosStep = (props) => { + + const {t} = useTranslation(); + + const [sending, setSending] = useState(false); + const [images, setImages] = useState({ + img1: "", + img2: "", + img3: "", + }); + const id = useSelector(state => state.auth.id); + + const sendImageHandler = async () => { + if (images.img1 === "") { + toast.error(t("SendPhotosStep.acceptFormEmpty")); + return; + } + if (images.img2 === "") { + toast.error(t("SendPhotosStep.selfieEmpty")); + return; + } + if (images.img3 === "") { + toast.error(t("SendPhotosStep.idCardEmpty")); + return; + } + setSending(true) + const acceptForm = await sendFileToUserStorage(id, images.img1) + const selfie = await sendFileToUserStorage(id, images.img2) + const idCard = await sendFileToUserStorage(id, images.img3) + if (acceptForm.status === 200 && selfie.status === 200 && idCard.status === 200) { + const paths = { + selfiePath: `${selfie.data.path}`, + idCardPath: `${idCard.data.path}`, + acceptFormPath: `${acceptForm.data.path}` + } + setKycFileToUserAttributes(paths) + .then(() => { + setSending(false) + props.nextStep() + }).catch(() => { + toast.error(t("SendPhotosStep.serverError")); + setImages({...images}) + }) + } else { + toast.error(t("SendPhotosStep.serverError")); + } + setSending(false) + } + + return ( + <div className={`card-bg card-border column ${classes.container}`}> + <div className={`column border-bottom jc-center card-header-bg px-4 py-2 ${classes.header}`}> + <div className="row jc-start "> + <h3>{t("SendPhotosStep.title")}</h3> + </div> + </div> + <div className={`width-100 column jc-between px-4 py-2 ${classes.content}`}> + <div className="column"> + <span className={`mb-2`}>{t("SendPhotosStep.content")}</span> + <span>{t("SendPhotosStep.acceptForm")}{" "}<span + className="cursor-pointer hover-text">{" "}{t("SendPhotosStep.acceptFormLink")}</span></span> + <span>{t("SendPhotosStep.selfie")}{" "}<span + className="cursor-pointer hover-text">{" "}{t("SendPhotosStep.selfieLink")}</span></span> + <span>{t("SendPhotosStep.idCard")}{" "}<span className="cursor-pointer hover-text"> + {" "}{t("SendPhotosStep.idCardLink")}</span> + </span> + <div className={`column jc-between ai-start mt-2`}> + {sending ? + <div className={`flex jc-center ai-center width-100`} style={{height: "30vh"}}> + <span className={`flashit`}>{t("SendPhotosStep.sendingData")}</span> + </div> + : + <> + <ImageInput + zoneCustomClass={classes.zoneBox} + title={t("SendPhotosStep.acceptFormDropzone")} + onchange={(url) => setImages({...images, img1: url})} + /> + <ImageInput + zoneCustomClass={classes.zoneBox} + title={t("SendPhotosStep.selfieDropzone")} + onchange={(url) => setImages({...images, img2: url})} + /> + <ImageInput + zoneCustomClass={classes.zoneBox} + title={t("SendPhotosStep.idCardDropzone")} + onchange={(url) => setImages({...images, img3: url})} + /> + </> + } + </div> + </div> + <div className="column pt-1 jc-between"> + <div className={`column mb-2`}> + <span>{t("SendPhotosStep.imageAcceptedFormat")}</span> + <span>{t("SendPhotosStep.imageAcceptedSize")}</span> + </div> + <div className={`row jc-center ai-center mt-2`}> + <Button + buttonClass={`${classes.thisButton} ${classes.prev} ml-2`} + onClick={props.prevStep} + buttonTitle={t("prevStep")} + /> + <Button + buttonClass={`${classes.thisButton} ${classes.next} mr-2`} + onClick={sendImageHandler} + buttonTitle={t("nextStep")} + /> + </div> + </div> + </div> + </div> + ); +}; + +export default SendPhotosStep; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/SendPhotosStep/SendPhotosStep.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/SendPhotosStep/SendPhotosStep.module.css new file mode 100644 index 0000000..ec19fef --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/SendPhotosStep/SendPhotosStep.module.css @@ -0,0 +1,38 @@ +.container { + min-height: 65vh; +} +.header { + height: 12%; +} +.content { + height: 88%; +} +.thisButton { + width: 30%; +} +.thisButton.prev{ + background-color: var(--orange); +} +.thisButton.next{ + background-color: var(--darkGreen); +} + +.zoneBox { + width: 100%; + padding: 2vh 3vw; + border-radius: 10px; + border: 0.3vh dotted var(--cardBorder); +} +.cancel { + top: 1.2vh; + left: 2.1vw; +} +.zone { + padding: 2vh 5vw; + height: 40vh; + border-radius: 10px; + background-repeat: no-repeat; + background-position: center center; + background-size: cover; + background-color: var(--cardHeader); +} diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/SendToAdminStep/SendToAdminStep.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/SendToAdminStep/SendToAdminStep.js new file mode 100644 index 0000000..781f81f --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/SendToAdminStep/SendToAdminStep.js @@ -0,0 +1,74 @@ +import React, {useEffect} from 'react'; +import {useTranslation} from "react-i18next"; +import classes from "./SendToAdminStep.module.css"; +import {useDispatch, useSelector} from "react-redux"; +import {setKYCStatusInitiate} from "../../../../../../../../../../../../store/actions"; +import {images} from "../../../../../../../../../../../../assets/images"; +import Button from "../../../../../../../../../../../../components/Button/Button"; + +const SendToAdminStep = ({prevStep}) => { + + const {t} = useTranslation(); + const dispatch = useDispatch(); + const KYCStatus = useSelector(state => state.auth.kyc); + const KYCReason = useSelector(state => state.auth.kycReason); + + useEffect(() => { + dispatch(setKYCStatusInitiate()); + }, []); + + const content = () => { + if (KYCStatus === "REQUESTED") { + return <div className={`column jc-center ai-center`}> + <img className={`mb-2 floating`} src={images.pending} alt="kyc-pending"/> + <span className={`mt-2`}>{t("SendToAdminStep.pending")}</span> + </div> + } + if (KYCStatus === "ACCEPTED") { + return <div className={`column jc-center ai-center`}> + <img className={`mb-2 floating`} src={images.approve} alt="kyc-accepted"/> + <span className={`text-green mt-2`}>{t("SendToAdminStep.accepted")}</span> + </div> + } + if (KYCStatus === "REJECTED") { + return <div className={`column jc-center ai-center`}> + <img className={`mb-2 floating`} src={images.reject} alt="kyc-rejected"/> + <span className={`text-red mt-2`}>{t("SendToAdminStep.rejected")}</span> + <span className={`fs-0-8 mt-1`}>{t("SendToAdminStep.errorMessage")}: {KYCReason === undefined ? t("SendToAdminStep.noData") : KYCReason}</span> + + </div> + } + if (KYCStatus === "BLOCKED") { + return <div className={`column jc-center ai-center`}> + <img className={`mb-2 floating`} src={images.block} alt="kyc-rejected"/> + <span className={`text-red mt-2`}>{t("SendToAdminStep.blocked")}</span> + <span className={`fs-0-8 mt-1`}>{t("SendToAdminStep.errorMessage")}: {KYCReason}</span> + </div> + } + } + + return ( + <div className={`container card-bg card-border column ${classes.container}`}> + <div className={`column border-bottom jc-center card-header-bg px-4 py-1 ${classes.header}`}> + <div className="row jc-start "> + <h3>{t("SendToAdminStep.title")}</h3> + </div> + </div> + <div className={`container column jc-between px-4 py-2 ${classes.content}`}> + <span>{t("SendToAdminStep.content")}</span> + <div className={`column`}> + {content()} + </div> + <div className="row pt-1 jc-end"> + {KYCStatus === "REJECTED" && <Button + buttonClass={`${classes.thisButton} ${classes.prev}`} + onClick={prevStep} + buttonTitle={t("prevStep")} + />} + </div> + </div> + </div> + ); +}; + +export default SendToAdminStep; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/SendToAdminStep/SendToAdminStep.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/SendToAdminStep/SendToAdminStep.module.css new file mode 100644 index 0000000..07916e7 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Authentication/components/SendToAdminStep/SendToAdminStep.module.css @@ -0,0 +1,21 @@ +.container { + height: 100%; +} +.header { + height: 12%; +} +.content { + height: 88%; +} +.thisButton { + width: 10%; +} +.thisButton.prev{ + background-color: var(--orange); +} +.thisButton.submit{ + background-color: var(--darkGreen); +} +.content img{ + width: 25%; +} \ No newline at end of file diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Profile/Profile.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Profile/Profile.js new file mode 100644 index 0000000..4abac21 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Profile/Profile.js @@ -0,0 +1,15 @@ +import React from 'react'; +import ScrollBar from "../../../../../../../../../../components/ScrollBar"; +import PersonalProfile from "./components/PersonalProfile/PersonalProfile"; + +const Profile = () => { + return ( + <ScrollBar> + <PersonalProfile/> + + + </ScrollBar> + ); +}; + +export default Profile; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Profile/Profile.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Profile/Profile.module.css new file mode 100644 index 0000000..e69de29 diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Profile/components/PersonalProfile/PersonalProfile.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Profile/components/PersonalProfile/PersonalProfile.js new file mode 100644 index 0000000..179fca5 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Profile/components/PersonalProfile/PersonalProfile.js @@ -0,0 +1,150 @@ +import React from 'react'; +import classes from './PersonalProfile.module.css' +import {useTranslation} from "react-i18next"; +import {useNavigate} from "react-router-dom"; +import {useSelector} from "react-redux"; +import {useGetUserAttributes} from "../../../../../../../../../../../../queries"; +import Loading from "../../../../../../../../../../../../components/Loading/Loading"; +import TextInput from "../../../../../../../../../../../../components/TextInput/TextInput"; +import * as RoutesName from "../../../../../../../../../../Routes/routes"; +import Button from "../../../../../../../../../../../../components/Button/Button"; +import {images} from "../../../../../../../../../../../../assets/images"; + +const PersonalProfile = () => { + + const {t} = useTranslation(); + const navigate = useNavigate(); + const KYCStatus = useSelector(state => state.auth.kyc); + const KYCReason = useSelector(state => state.auth.kycReason); + + const {data: profile, isLoading} = useGetUserAttributes() + + const content = () => { + if (isLoading) { + return <div className={`my-10`} ><Loading/></div> + } + if (KYCStatus === "REQUESTED") { + return <div className={`column jc-center ai-center py-2`}> + <img className={`mb-2 floating`} src={images.pending} alt="kyc-rejected"/> + <span className={`mt-5`}>{t('SendToAdminStep.pending')}</span> + </div> + } + if (KYCStatus === "REJECTED") { + return <div className={`column jc-center ai-center py-2`}> + <img className={`mb-2 floating`} src={images.reject} alt="kyc-rejected"/> + <span className={`mt-5`}>{t("SendToAdminStep.rejected")}</span> + <span className={`fs-0-8 mt-1`}>{t("SendToAdminStep.errorMessage")}: {KYCReason === undefined ? t("SendToAdminStep.noData") : KYCReason}</span> + <Button + buttonClass={`${classes.thisButton} mt-5`} + buttonTitle={t("PersonalProfile.doKYC")} + onClick={()=>navigate(RoutesName.Authentication)} + type="button" + /> + </div> + } + if (KYCStatus === "BLOCKED") { + return <div className={`column jc-center ai-center py-2`}> + <img className={`mb-2 floating`} src={images.block} alt="kyc-rejected"/> + <span className={`mt-5`}>{t('SendToAdminStep.blocked')}</span> + <span className={`fs-0-8 mt-1`}>{t("SendToAdminStep.errorMessage")}: {KYCReason}</span> + </div> + } + if (KYCStatus === "ACCEPTED") { + return <> + <span className={`text-green text-center my-2 fs-0-8`}>{t("PersonalProfile.cantEdit")}</span> + <TextInput + lead={t('PersonalProfile.firstName')} + type="text" + disabled={true} + value={profile.firstName} + customClass={`${classes.thisInput} my-1`} + /> + <TextInput + lead={t('PersonalProfile.lastName')} + type="text" + disabled={true} + value={profile.lastName} + customClass={`${classes.thisInput} my-1`} + /> + <TextInput + value={t("country." + profile.nationality)} + type="text" + lead={t('PersonalProfile.nationality')} + isDisabled={true} + customClass={`${classes.thisInput} my-1`} + /> + <TextInput + lead={t('PersonalProfile.residence')} + type="text" + value={t("country." + profile.residence)} + isDisabled={true} + customClass={`${classes.thisInput} my-1`} + /> + <TextInput + lead={t('PersonalProfile.birthday')} + type="text" + disabled={true} + value={profile.birthday} + customClass={`${classes.thisInput} my-1`} + /> + <TextInput + lead={t('PersonalProfile.idNumber')} + type="text" + disabled={true} + value={profile.idNumber} + customClass={`${classes.thisInput} my-1`} + /> + <TextInput + lead={t('PersonalProfile.mobile')} + type="text" + disabled={true} + value={profile.mobile} + customClass={`${classes.thisInput} my-1`} + /> + <TextInput + lead={t('PersonalProfile.postalCode')} + type="text" + disabled={true} + value={profile.postalCode} + customClass={`${classes.thisInput} my-1`} + /> + <TextInput + lead={t('PersonalProfile.email')} + type="email" + disabled={true} + value={profile.email} + customClass={`${classes.thisInput} my-1`} + /> + <TextInput + lead={t('PersonalProfile.address')} + customClass={`${classes.thisInput} my-1`} + type="text" + disabled={true} + value={profile.address} + /> + </> + } + return <div className={`column jc-center ai-center py-2`}> + <span className={`mb-5`}>{t('PersonalProfile.noKYC')}</span> + <Button + buttonClass={`${classes.thisButton} mt-5`} + buttonTitle={t("PersonalProfile.doKYC")} + onClick={()=>navigate(RoutesName.Authentication)} + type="button" + /> + </div> + } + + return ( + <div className={`${classes.container} width-100 column card-bg card-border rounded-8`}> + <div className={`flex jc-start ai-center border-bottom card-header-bg px-5 py-2 ${classes.header}`}> + <h4>{t("PersonalProfile.title")}</h4> + </div> + <div className={`column container ${classes.content} px-4 py-1`}> + {content()} + </div> + </div> + ); +}; + +export default PersonalProfile; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Profile/components/PersonalProfile/PersonalProfile.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Profile/components/PersonalProfile/PersonalProfile.module.css new file mode 100644 index 0000000..4049a02 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Profile/components/PersonalProfile/PersonalProfile.module.css @@ -0,0 +1,24 @@ +.container { + /*min-height: 100%;*/ +} +.header { + height: 15%; +} +.content { + height: 85%; +} + +.thisInput :global(.lead) { + width: 40%; +} +.thisInput :global(input) { + width: 60%; +} + +.thisButton { + width: 35%; + background-color: var(--darkGreen); +} +.content img{ + width: 25%; +} diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/Security.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/Security.js new file mode 100644 index 0000000..f8b1019 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/Security.js @@ -0,0 +1,17 @@ +import React from 'react'; +import ScrollBar from "../../../../../../../../../../components/ScrollBar"; +import ActiveSessions from "./components/ActiveSessions/ActiveSessions"; +import ChangePassword from "./components/ChangePassword/ChangePassword"; +import SetTwoStepVerification from "./components/SetTwoStepVerification/SetTwoStepVerification"; + +const Security = () => { + return ( + <ScrollBar> + <ActiveSessions/> + <ChangePassword/> + <SetTwoStepVerification/> + </ScrollBar> + ); +}; + +export default Security; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/Security.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/Security.module.css new file mode 100644 index 0000000..e69de29 diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/ActiveSessions.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/ActiveSessions.js new file mode 100644 index 0000000..8102928 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/ActiveSessions.js @@ -0,0 +1,84 @@ +import React from 'react'; +import classes from './ActiveSessions.module.css' +import {useTranslation} from "react-i18next"; +import {useGetUserActiveSessions} from "../../../../../../../../../../../../queries"; +import {expireAllSessionsExceptCurrent} from "js-api-client"; +import {toast} from "react-hot-toast"; +import Icon from "../../../../../../../../../../../../components/Icon/Icon"; +import ScrollBar from "../../../../../../../../../../../../components/ScrollBar"; +import Error from "../../../../../../../../../../../../components/Error/Error"; +import Loading from "../../../../../../../../../../../../components/Loading/Loading"; +import moment from "moment-jalaali"; +import Session from "./components/Session/Session"; + +const ActiveSessions = () => { + + const {t} = useTranslation(); + const {data: activeSessions, isLoading, error, refetch} = useGetUserActiveSessions() + + const expireAllSessions = () => { + expireAllSessionsExceptCurrent() + .then(() => { + toast.success(t("ActiveSessions.logOutAllSuccess")); + refetch() + }).catch(() => { + toast.error(t("ActiveSessions.logOutAllError")); + }) + } + + const content = () => { + if (isLoading) return <Loading/> + + if (error) return <Error/> + + const current = activeSessions.filter((s) => s.inUse)[0] + const other = activeSessions.filter((s) => !s.inUse) + + return <> + <div className={`column ai-end ${classes.thisSession}`}> + <span className={`text-orange mb-05 fs-0-8 width-100 text-center py-05`} style={{backgroundColor: 'var(--tableHeader)'}}>{t("ActiveSessions.thisSession")}</span> + <div className={`row jc-between width-100 py-05 px-2`}> + <div className={`col-40 column jc-center ai-start pr-05`}> + <span>{moment(current?.lastAccess * 1000).format("HH:mm:ss , jYY/jMM/jDD")}</span> + {other.length > 0 ? + <span className={`cursor-pointer text-red fs-0-7`} onClick={expireAllSessions}> + {t("ActiveSessions.closeOtherSessions")}</span> : ""} + </div> + <div className={`col-60`}> + <div className={`row jc-end ai-center text-gray`}> + <span className={`ml-05`}>{current?.ipAddress}</span> + <Icon iconName="icon-globe fs-01"/> + </div> + <div className={`row jc-end ai-center text-gray`}> + <span className={`ml-05`}>{current?.agent}</span> + <Icon iconName="icon-info fs-01"/> + </div> + </div> + </div> + <div className={` width-100 text-center py-05 text-orange fs-0-8`} style={{backgroundColor: 'var(--tableHeader)'}}> + {t("ActiveSessions.otherSession")} + </div> + </div> + <ScrollBar> + {other.length > 0 ? other.map((list) => <Session list={list} key={list.id} reloadSessionsList={refetch}/>) + : <div className={`flex jc-center ai-center height-100 fs-0-8`}> + <span>{t("ActiveSessions.noData")}</span> + </div> + } + </ScrollBar> + </> + } + + return ( + <div className={`${classes.container} width-100 column card-bg card-border rounded-8`}> + <div className={`flex jc-start ai-center border-bottom card-header-bg px-5 py-2 ${classes.header}`}> + <h4>{t("ActiveSessions.title")}</h4> + </div> + <div className={`column container ${classes.content} position-relative`}> + {content()} + </div> + </div> + ); +}; + +export default ActiveSessions; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/ActiveSessions.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/ActiveSessions.module.css new file mode 100644 index 0000000..d424cfc --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/ActiveSessions.module.css @@ -0,0 +1,16 @@ +.container { + height: 52vh; +} +.header { + height: 15%; +} +.content { + height: 85%; +} + + +.thisSession { + background: var(--cardHeaderAlpha); +} + + diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/components/Details/Details.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/components/Details/Details.js new file mode 100644 index 0000000..c3287de --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/components/Details/Details.js @@ -0,0 +1,44 @@ +import React, {useEffect, useState} from "react" +import classes from "./Details.module.css"; +import {browserName, deviceType, fullBrowserVersion} from "react-device-detect"; + + +const Details = ({details, setWrapper}) => { + const [close, setClose] = useState(false); + useEffect(() => { + setClose(false) + }, []) + + const clickHandler = () => { + setWrapper(false) + setClose(true) + } + + + return ( + <>{details ? <div className={`${classes.wrapper}`} onClick={clickHandler}/> : ""} + <div + className={`${classes.container} column jc-center ai-center ${details ? classes.expand : ""} ${close ? classes.close : ""} card-border`}> + {!details ? "" : + <> + <div className={`border-bottom column jc-center ai-center`}> + <span className={``}>نوع</span> + <span className={``}>{deviceType}</span> + </div> + <div className={`border-bottom column jc-center ai-center`}> + <span className={``}>نام</span> + <span className={``}>{browserName}</span> + </div> + + <div className={`border-bottom column jc-center ai-center`}> + <span className={``}>نسخه</span> + <span className={``}>{fullBrowserVersion}</span> + </div> + </> + } + </div> + </> + ); +}; + +export default Details; \ No newline at end of file diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/components/Details/Details.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/components/Details/Details.module.css new file mode 100644 index 0000000..56445f8 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/components/Details/Details.module.css @@ -0,0 +1,76 @@ +.container { + width: 30%; + background-color: var(--popupAlpha); + height: 0; + position: absolute; + top: 29%; + right: 7%; + border: none; + +} + +.container.expand { + animation: TopToBottom ease 0.5s forwards; + -webkit-animation: TopToBottom ease 0.5s forwards; + -moz-animation: TopToBottom ease 0.5s forwards; + -o-animation: TopToBottom ease 0.5s forwards; + -ms-animation: TopToBottom ease 0.5s forwards; + + border: 0.3vh solid var(--cardBorder); + border-radius: 9px; +} + +.container.close { + animation: BottomToTop ease 0.5s forwards; + -webkit-animation: BottomToTop ease 0.5s forwards; + -moz-animation: BottomToTop ease 0.5s forwards; + -o-animation: BottomToTop ease 0.5s forwards; + -ms-animation: BottomToTop ease 0.5s forwards; + + +} + +.wrapper { + position: absolute; + width: 100%; + height: 100%; + top: 0; + background-color: #00000000; +}+ + + +@-webkit-keyframes TopToBottom { + 0% { + height: 0%; + } + 100% { + height: 60%; + } +} + +@keyframes TopToBottom { + 0% { + height: 0%; + } + 100% { + height: 60%; + } +} + +@-webkit-keyframes BottomToTop { + 0% { + height: 60%; + } + 100% { + height: 0%; + } +} + +@keyframes BottomToTop { + 0% { + height: 60%; + } + 100% { + height: 0%; + } +} \ No newline at end of file diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/components/Session/Session.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/components/Session/Session.js new file mode 100644 index 0000000..4ead7c0 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/components/Session/Session.js @@ -0,0 +1,65 @@ +import React, {useState} from "react" +import classes from "./Session.module.css"; +import Icon from "../../../../../../../../../../../../../../components/Icon/Icon"; +import moment from "moment-jalaali"; +import {Trans, useTranslation} from "react-i18next"; +import {images} from "../../../../../../../../../../../../../../assets/images"; +import {toast} from "react-hot-toast"; +import {expireSessionById} from "js-api-client"; + +const Session = ({list, reloadSessionsList}) => { + const {t} = useTranslation(); + const [isLoading, setIsLoading] = useState(false) + + const expireSession = async () => { + if (isLoading) return; + setIsLoading(true) + expireSessionById(list?.id) + .then(() => { + toast.success(<Trans + i18nKey="ActiveSessions.success" + values={{location: list?.ipAddress,}} + />); + reloadSessionsList() + }).catch(() => { + toast.error(<Trans + i18nKey="ActiveSessions.failed" + values={{location: list?.ipAddress,}} + />); + }).finally(() => { + setIsLoading(false) + }) + } + + return ( + <div className={`width-100 ${classes.striped} py-1 px-2`}> + <div className={`column ai-end`}> + <div className={`row jc-between width-100`}> + <div className={`col-40 column jc-center ai-start pr-05`}> + <span>{moment(list?.lastAccess * 1000).format("HH:mm:ss , jYY/jMM/jDD")}</span> + <span className={`cursor-pointer text-red fs-0-7`} onClick={expireSession}> + {isLoading ? + <img className={`${classes.thisLoading}`} + src={images.linearLoadingBgOrange} + alt="linearLoading"/> + : + t("ActiveSessions.closeSession")} + </span> + </div> + <div className={`col-60`}> + <div className={`row jc-end ai-center text-gray`}> + <span className={`ml-05`}>{list?.ipAddress}</span> + <Icon iconName="icon-globe fs-01"/> + </div> + <div className={`row jc-end ai-center text-gray`}> + <span className={`ml-05`}>{list?.agent}</span> + <Icon iconName="icon-info fs-01"/> + </div> + </div> + </div> + </div> + </div> + ); +}; + +export default Session; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/components/Session/Session.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/components/Session/Session.module.css new file mode 100644 index 0000000..a914990 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ActiveSessions/components/Session/Session.module.css @@ -0,0 +1,10 @@ +.striped:nth-child(even){ + background-color: var(--tableRow); + -webkit-transition: background-color 0.4s; + -o-transition: background-color 0.4s; + transition: background-color 0.4s; +} + +.thisLoading{ + width: 5vw; +} \ No newline at end of file diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ChangePassword/ChangePassword.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ChangePassword/ChangePassword.js new file mode 100644 index 0000000..51ab3c9 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ChangePassword/ChangePassword.js @@ -0,0 +1,211 @@ +import React, {useState} from 'react'; +import classes from "./ChangePassword.module.css"; +import {Trans, useTranslation} from "react-i18next"; +import Loading from "../../../../../../../../../../../../components/Loading/Loading"; +import Error from "../../../../../../../../../../../../components/Error/Error"; +import {requestForChangePassword} from "js-api-client"; +import {toast} from "react-hot-toast"; +import TextInput from "../../../../../../../../../../../../components/TextInput/TextInput"; +import Icon from "../../../../../../../../../../../../components/Icon/Icon"; +import Button from "../../../../../../../../../../../../components/Button/Button"; + +const ChangePassword = () => { + const {t} = useTranslation(); + const [error, setError] = useState(false); + const [isLoading, setLoading] = useState(false); + const [userInputs, setInputs] = useState({ + newPassword: {value: "", error: []}, + confirmation: {value: "", error: []}, + currentPassword: {value: "", error: []}, + }); + const [isInputVisible, setIsInputVisible] = useState({ + newPassword: false, + confirmation: false, + currentPassword: false, + }); + + const inputHandler = (e) => { + let errorMessage = [] + if (typeof e.target.dataset.min !== undefined && e.target.value.length < e.target.dataset.min) { + errorMessage.push(<Trans + i18nKey="ChangePassword.minInput" + values={{ + name: t("ChangePassword." + e.target.dataset.name), + min: e.target.dataset.min + }} + />) + } + setInputs({ + ...userInputs, + [e.target.dataset.name]: {value: e.target.value, error: errorMessage} + }) + } + + const isFormValid = () => { + let inputs = {...userInputs} + const hasError = Object.values(inputs).find(input => input.error.length > 0) + if (hasError) return false + let isEmpty = false + for (const key in inputs) { + if (inputs[key].value.length === 0) { + isEmpty = true + inputs = { + ...inputs, + [key]: { + ...inputs[key], + error: [<Trans + i18nKey="ChangePassword.emptyInput" + values={{ + name: t("ChangePassword." + key), + }} + />] + } + } + } + } + setInputs(inputs); + return !isEmpty; + } + const changePassword = async (e) => { + e.preventDefault(); + if (!isFormValid()) return + + if (userInputs.newPassword.value !== userInputs.confirmation.value) { + setInputs({ + ...userInputs, + confirmation: {...userInputs.confirmation, error: [t("ChangePassword.confirmationError")]} + }) + return + } + setLoading(true) + const data = { + password: userInputs.currentPassword.value, + newPassword: userInputs.newPassword.value, + confirmation: userInputs.confirmation.value, + } + requestForChangePassword(data) + .then(() => { + setInputs({ + newPassword: {value: "", error: []}, + confirmation: {value: "", error: []}, + currentPassword: {value: "", error: []}, + }) + toast.success(t("ChangePassword.success")); + }) + .catch((err) => { + if (err.response.status === 403) { + setInputs({ + newPassword: {...userInputs.newPassword, error: []}, + confirmation: {...userInputs.confirmation, error: []}, + currentPassword: { + ...userInputs.currentPassword, + error: [t("ChangePassword.currentPasswordError")] + }, + }) + toast.error(t("ChangePassword.error")); + } else { + setError(true) + } + }) + .finally(() => { + setLoading(false) + }); + } + + + const content = () => { + if (isLoading) return <Loading/> + + if (error) return <Error retryFunc={() => setError(false)}/> + + + return <form onSubmit={changePassword} className={`column jc-between ai-center height-100 px-1 py-2`}> + <div className={`col-80 width-90 column jc-center`}> + <TextInput customClass={`${classes.passwordInput}`} + lead={t("ChangePassword.currentPassword")} + after={ + <Icon + iconName={`${isInputVisible.currentPassword ? ' icon-eye-2' : 'icon-eye-off'} fs-02 flex`} + onClick={() => setIsInputVisible({ + ...isInputVisible, + currentPassword: !isInputVisible.currentPassword + })} + /> + } + autoComplete="off" + type={isInputVisible.currentPassword ? "text" : "password"} + value={userInputs.currentPassword.value} + data-name="currentPassword" + data-type="input" + data-min={8} + onchange={(e) => inputHandler(e)} + alerts={userInputs.currentPassword.error} + /> + <div className={`my-1`}> + <TextInput + customClass={`${classes.passwordInput}`} + lead={t("ChangePassword.newPassword")} + after={ + <Icon + iconName={`${isInputVisible.newPassword ? ' icon-eye-2' : 'icon-eye-off'} fs-02 flex`} + onClick={() => setIsInputVisible({ + ...isInputVisible, + newPassword: !isInputVisible.newPassword + })} + /> + } + autoComplete="off" + type={isInputVisible.newPassword ? "text" : "password"} + value={userInputs.newPassword.value} + data-name="newPassword" + data-type="input" + data-min={8} + onchange={(e) => inputHandler(e)} + alerts={userInputs.newPassword.error} + /> + </div> + <TextInput + customClass={`${classes.passwordInput}`} + lead={t("ChangePassword.confirmation")} + after={ + <Icon + iconName={`${isInputVisible.confirmation ? ' icon-eye-2' : 'icon-eye-off'} fs-02 flex`} + onClick={() => setIsInputVisible({ + ...isInputVisible, + confirmation: !isInputVisible.confirmation + })} + /> + } + autoComplete="off" + type={isInputVisible.confirmation ? "text" : "password"} + value={userInputs.confirmation.value} + data-name="confirmation" + data-type="input" + data-min={8} + onchange={(e) => inputHandler(e)} + alerts={userInputs.confirmation.error} + /> + </div> + <div className={`col-20 width-100 flex jc-center ai-center`}> + <Button + buttonClass={`${classes.thisButton}`} + buttonTitle={t("submit")} + /> + </div> + </form> + } + + + return ( + <div className={`${classes.container} width-100 column card-bg card-border rounded-8 my-2`}> + <div className={`flex jc-start ai-center border-bottom card-header-bg px-5 py-2 ${classes.header}`}> + <h4>{t("ChangePassword.title")}</h4> + </div> + <div className={`column container ${classes.content} position-relative`}> + {content()} + </div> + </div> + ); +}; + +export default ChangePassword; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ChangePassword/ChangePassword.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ChangePassword/ChangePassword.module.css new file mode 100644 index 0000000..d8ab585 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/ChangePassword/ChangePassword.module.css @@ -0,0 +1,27 @@ +.container { + height: 52vh; +} +.header { + height: 15%; +} +.content { + height: 85%; +} +.thisButton { + width: 25%; + background-color: var(--darkGreen); +} +.passwordInput :global(.lead) { + width: 50%; + cursor: pointer; +} +.passwordInput :global(.after) { + width: 10%; + cursor: pointer; +} +.passwordInput :global(input) { + width: 40% !important; +} + + + diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/SetTwoStepVerification/SetTwoStepVerification.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/SetTwoStepVerification/SetTwoStepVerification.js new file mode 100644 index 0000000..5b5fc52 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/SetTwoStepVerification/SetTwoStepVerification.js @@ -0,0 +1,35 @@ +import React from 'react'; +import classes from './SetTwoStepVerification.module.css' +import {useTranslation} from "react-i18next"; +import {useSelector} from "react-redux"; +import {useGetUserOtpStatus} from "../../../../../../../../../../../../queries"; +import Loading from "../../../../../../../../../../../../components/Loading/Loading"; +import Error from "../../../../../../../../../../../../components/Error/Error"; +import DeActiveOTP from "./components/DeActiveOTP"; +import ActivateOTP from "./components/ActivateOTP"; + +const SetTwoStepVerification = () => { + + const {t} = useTranslation(); + const username = useSelector(state => state.auth.username); + const {data: otp, isLoading, error,refetch : refetchOtp} = useGetUserOtpStatus(username) + + const content = () => { + if (isLoading) return <Loading/> + if (error) return <Error/> + return otp ? <DeActiveOTP refetchOtp={refetchOtp}/> : <ActivateOTP refetchOtp={refetchOtp}/> + } + + return ( + <div className={`${classes.container} width-100 column card-bg card-border rounded-8`}> + <div className={`flex jc-start ai-center border-bottom card-header-bg px-5 py-2 ${classes.header}`}> + <h4>{otp ? t("SetTwoStepVerification.!title") : t("SetTwoStepVerification.title")}</h4> + </div> + <div className={`column container ${classes.content} position-relative`}> + {content()} + </div> + </div> + ); +}; + +export default SetTwoStepVerification; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/SetTwoStepVerification/SetTwoStepVerification.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/SetTwoStepVerification/SetTwoStepVerification.module.css new file mode 100644 index 0000000..6800bdc --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/SetTwoStepVerification/SetTwoStepVerification.module.css @@ -0,0 +1,36 @@ +.container { + height: 62vh; +} +.header { + height: 13%; +} +.content { + height: 87%; +} +.thisLoading{ + width: 5vw; +} + +.thisButton { + width: 25%; + background-color: var(--darkGreen); +} +.submit{ + width: 20%; +} +.disableOtp{ + background-color: var(--darkRed); + width: 25%; +} + +.thisInput :global(.lead) { + width: 35%; +} +.thisInput :global(input) { + width: 75% !important; + letter-spacing: 1rem; +} +/*.thisInput :global(input) { + width: 85% !important; +}*/ + diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/SetTwoStepVerification/components/ActivateOTP.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/SetTwoStepVerification/components/ActivateOTP.js new file mode 100644 index 0000000..2610410 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/SetTwoStepVerification/components/ActivateOTP.js @@ -0,0 +1,108 @@ +import React, {useState} from 'react'; +import {useTranslation} from "react-i18next"; +import {requestForActivateOTP, sendInitialCodeToActivateOTP} from "js-api-client"; +import {toast} from "react-hot-toast"; +import Loading from "../../../../../../../../../../../../../components/Loading/Loading"; +import QRCode from "react-qr-code"; +import TextInput from "../../../../../../../../../../../../../components/TextInput/TextInput"; +import Button from "../../../../../../../../../../../../../components/Button/Button"; +import {images} from "../../../../../../../../../../../../../assets/images"; +import classes from "../SetTwoStepVerification.module.css"; + +const ActivateOTP = ({refetchOtp}) => { + + const {t} = useTranslation(); + + const [error, setError] = useState(false); + const [loading, setLoading] = useState(false); + const [isLoading, setIsLoading] = useState(false); + const [reqOTP, setReqOTP] = useState(); + const [alert, setAlert] = useState([]); + const [initialCode, setInitialCode] = useState(""); + + const OTPInputHandler = (value) => { + const userInput = value.replace(/[^0-9]+/g, "").slice(0, 6) + setInitialCode(userInput) + } + + + const sendReqActivateOTP = () => { + if (isLoading) return + setError(false) + setIsLoading(true) + requestForActivateOTP() + .then((res) => { + setReqOTP(res.data) + }) + .catch(() => { + setError(true) + }) + .finally(() => { + setIsLoading(false) + }) + } + const submitActivation = async (e) => { + e.preventDefault(); + if (initialCode.length !== 6) { + return setAlert([t("SetTwoStepVerification.initialCodeMin")]) + } + setAlert([]) + setLoading(true) + sendInitialCodeToActivateOTP(reqOTP.secret, initialCode) + .then(() => { + refetchOtp() + toast.success(t("SetTwoStepVerification.success")); + }) + .catch(() => { + setAlert([t("SetTwoStepVerification.initialCodeError")]) + }) + .finally(() => { + setLoading(false) + }); + } + + if (loading) return <Loading/> + + if (reqOTP?.uri) { + return <div className={`column width-100 jc-between ai-center height-100 px-3 py-2`}> + <span className={``}>{t("SetTwoStepVerification.QRdescription")}</span> + <QRCode + value={reqOTP.uri} + bgColor="var(--cardBody)" + fgColor="var(--textColor)" + level='L' + size={140} + /> + <form onSubmit={submitActivation} className={`column jc-between ai-center width-100`}> + <TextInput + lead={t("SetTwoStepVerification.code")} + value={initialCode} + alerts={alert} + customClass={`${classes.thisInput} width-75 mb-1`} + onchange={(e) => OTPInputHandler(e.target.value)} + type="text" + /> + <Button buttonClass={`${classes.thisButton} ${classes.submit} mt-1`} buttonTitle={t("submit")}/> + </form> + </div> + } + + return ( + <div className={`column width-100 jc-around ai-center height-100 px-3`}> + <span className={`text-center`}>{t("SetTwoStepVerification.description")}</span> + <div className={`width-100 column jc-center ai-center`}> + <Button + buttonClass={`${classes.thisButton} ${classes.withdrawal} ${isLoading ? "cursor-not-allowed" : "cursor-pointer"}`} + buttonTitle={isLoading ? <img className={`${classes.thisLoading}`} src={images.linearLoadingBgOrange} + alt="linearLoading"/> : t("SetTwoStepVerification.active")} + onClick={sendReqActivateOTP} + /> + <span className={`fs-0-7 text-red mt-1`}> + {error ? t("SetTwoStepVerification.serverError") : ""} + </span> + </div> + </div> + ); +}; + +export default ActivateOTP; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/SetTwoStepVerification/components/DeActiveOTP.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/SetTwoStepVerification/components/DeActiveOTP.js new file mode 100644 index 0000000..292f824 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Settings/components/Security/components/SetTwoStepVerification/components/DeActiveOTP.js @@ -0,0 +1,52 @@ +import React, {useState} from 'react'; +import classes from "../SetTwoStepVerification.module.css"; +import {toast} from "react-hot-toast"; +import {useTranslation} from "react-i18next"; +import {images} from "../../../../../../../../../../../../../assets/images"; +import Button from "../../../../../../../../../../../../../components/Button/Button"; +import {requestForDeActiveOTP} from "js-api-client"; + +const DeActiveOTP = ({refetchOtp}) => { + + const {t} = useTranslation(); + const [isLoading, setIsLoading] = useState(false); + const [error, setError] = useState(false); + + const disableOTPHandler = () => { + setIsLoading(true) + requestForDeActiveOTP() + .then(() => { + refetchOtp() + toast.success(t("SetTwoStepVerification.error")); + }) + .catch(() => { + setError(true) + }) + .finally(() => { + setIsLoading(false) + }) + } + return ( + <div className="width-100 column jc-center ai-center height-100"> + <div className={`flex jc-center ai-center`}> + <img src={images.security} alt="security" style={{width:"20%"}}/> + </div> + <span className={`my-4`}>{t("SetTwoStepVerification.isActive")}</span> + <Button + buttonClass={`${classes.thisButton} ${classes.disableOtp}`} + buttonTitle={isLoading ? + <img className={`${classes.thisLoading}`} src={images.linearLoadingBgOrange} + alt="linearLoading"/> + : + t("SetTwoStepVerification.deActive")} + onClick={disableOTPHandler} + /> + {error ? <span className={`fs-0-8 text-red mt-2`}> + {t("SetTwoStepVerification.serverError")} + </span> : ""} + + </div> + ); +}; + +export default DeActiveOTP; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/Wallet.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/Wallet.js index a95a357..110a3e7 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/Wallet.js +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/Wallet.js @@ -26,7 +26,7 @@ const Wallet = () => { } return ( - <div className={`width-100 flex ai-center jc-center`} style={{height:"100%"}}> + <div className={`width-100 flex ai-center jc-center height-100`}> {content()} </div> ); diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/Deposit.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/Deposit.js index b66fa51..dbe4eaa 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/Deposit.js +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/Deposit.js @@ -1,9 +1,182 @@ -import React from 'react'; +import React, {useEffect, useRef} from 'react'; import classes from './Deposit.module.css' +import QRCode from "react-qr-code"; +import {Trans, useTranslation} from "react-i18next"; +import TextInput from "../../../../../../../../../../components/TextInput/TextInput"; +import {useParams} from "react-router-dom"; +import {useGetDepositAddress} from "../../../../../../../../../../queries"; +import {toast} from "react-hot-toast"; +import Loading from "../../../../../../../../../../components/Loading/Loading"; +import Error from "../../../../../../../../../../components/Error/Error"; +import Icon from "../../../../../../../../../../components/Icon/Icon"; + + const Deposit = () => { - return ( - <div> + const {id} = useParams(); + const {t} = useTranslation(); + const addressRef = useRef(null); + + useEffect(() => { + toast.dismiss() + }, []) + + const copyToClipboard = () => { + addressRef.current.select(); + document.execCommand("copy"); + toast.success(<Trans + i18nKey="DepositWithdraw.success" + />); + }; + + const {data: address, isLoading, error, refetch} = useGetDepositAddress(id) + + useEffect(() => { + if (id !== "IRT") refetch() + }, [id]); + + const helpText = () => { + if (id === "TETH") { + return <div> + <span className={`text-red font-weight-bold`}>{t("DepositWithdraw.important")}: </span> + <div className={`mt-1`}> + <span>{t("DepositWithdraw.DepositTETHContentBefore")}</span> + <span className={`hover-text cursor-pointer`} + onClick={() => window.open('https://faucet.dimensions.network/')}>https://faucet.ropsten.be</span> + <span>{t("DepositWithdraw.DepositTETHContentAfter")}</span> + </div> + <div> + <Trans + i18nKey="DepositWithdraw.minDeposit" + values={{ + min: 0.001, + currency: t("currency." + id) + }} + /> + </div> + <div> + <Trans + i18nKey="DepositWithdraw.depositTime" + values={{ + time: 2 + }} + /> + </div> + </div> + } + if (id === "TBTC") { + return <div> + <span className={`text-red font-weight-bold`}>{t("DepositWithdraw.important")}: </span> + <div className={`mt-1`}> + <span>{t("DepositWithdraw.DepositTBTCContentBefore")}</span> + <span className={`hover-text cursor-pointer`} + onClick={() => window.open('https://testnet-faucet.com/btc-testnet')}>https://testnet-faucet.com/btc-testnet</span> + <span>{t("DepositWithdraw.DepositTBTCContentAfter")}</span> + </div> + <div> + <Trans + i18nKey="DepositWithdraw.minDeposit" + values={{ + min: 0.001, + currency: t("currency." + id) + }} + /> + </div> + <div> + <Trans + i18nKey="DepositWithdraw.depositTime" + values={{ + time: 10 + }} + /> + </div> + </div> + } + if (id === "TUSDT") { + return <div> + <span className={`text-red font-weight-bold`}>{t("DepositWithdraw.important")}: </span> + <div className={`mt-1`}> + <span>{t("DepositWithdraw.DepositTUSDTContentBefore")}</span> + <span className={`hover-text cursor-pointer`} + onClick={() => window.open('https://bit.ly/ROPTokens')}>https://bit.ly/ROPTokens</span> + <span>{t("DepositWithdraw.DepositTUSDTContentAfter")}</span> + </div> + <div> + <Trans + i18nKey="DepositWithdraw.minDeposit" + values={{ + min: 10, + currency: t("currency." + id) + }} + /> + </div> + <div> + <Trans + i18nKey="DepositWithdraw.depositTime" + values={{ + time: 2 + }} + /> + </div> + </div> + } + } + + + const lowestPrice = (id) => { + switch (id) { + case "BTC": + return 0.001; + case "ETH": + return 0.001; + case "USDT": + return 10; + default: + return 0; + } + }; + + + + // if (id === "IRT") return <IRTDeposit/> + if (id === "IRT") return <div className={`flex jc-center ai-center card-bg card-border height-98 width-95`}><h3>{t("comingSoon")}</h3></div> + if (isLoading) return <div className={`card-bg card-border height-98 width-95`}><Loading/></div> + if (error) return <div className={`card-bg card-border height-98 width-95`}><Error retryFunc={refetch}/></div> + + + return ( + <div className={`px-1 py-3 column jc-between ai-center text-center ${classes.content} card-bg card-border height-98 width-95`}> + <div className={`column ai-center`}> + <Trans + i18nKey="DepositWithdraw.minDepositText" + values={{ + min: lowestPrice(id), + currency: t("currency." + id) + }} + /> + <TextInput + after={ + <Icon + iconName="icon-copy fs-02" + onClick={() => copyToClipboard()} + customClass={`hover-text cursor-pointer`} + /> + } + customClass={`${classes.depositInput} my-3`} + readOnly={true} + type="text" + customRef={addressRef} + value={address.address} + /> + <QRCode + value={address.address} + bgColor="var(--cardBody)" + fgColor="var(--textColor)" + level='L' + size={110} + /> + </div> + { (id === "TETH" || id === "TUSDT" || id === "TBTC") && helpText() } </div> ); }; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/Deposit.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/Deposit.module.css index e69de29..5307d94 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/Deposit.module.css +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/Deposit.module.css @@ -0,0 +1,12 @@ +.depositInput { + width: 100%; +} +.depositInput :global(.after) { + width: 15%; + cursor: pointer; +} +.depositInput :global(input) { + width: 85% !important; + cursor: not-allowed; + font-family: 'Roboto', sans-serif; +} \ No newline at end of file diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/components/IRT/IRT.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/components/IRT/IRT.module.css new file mode 100644 index 0000000..e69de29 diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/components/IRT/IRTDeposit.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/components/IRT/IRTDeposit.js new file mode 100644 index 0000000..32fb268 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/components/IRT/IRTDeposit.js @@ -0,0 +1,219 @@ +import React, {useEffect, useState} from "react"; +import classes from "../../../../DepositWithdraw.module.css"; +import {useLocation, useParams} from "react-router-dom"; +import {useDispatch, useSelector} from "react-redux"; +import {Trans, useTranslation} from "react-i18next"; +import NumberInput from "../../../../../../../../../../../../../../components/NumberInput/NumberInput"; +import {BN, parsePriceString} from "../../../../../../../../../../../../../../utils/utils"; +import Button from "../../../../../../../../../../../../../../components/Button/Button"; +import QRCode from "react-qr-code"; +import moment from "moment-jalaali"; +import {toast} from "react-hot-toast"; +import Loading from "../../../../../../../../../../../../../../components/Loading/Loading"; +import Countdown from "react-countdown"; +import CallbackPage from "./components/CallbackPage/CallbackPage"; +import {setIPGInitiate} from "../../../../../../../../../../../../../../store/actions"; +import {useGetIpgOpenInvoice, useIPGDeposit} from "../../../../../../../../../../../../../../queries"; +import {cancelIPGDepositReq, sendIPGDepositReq} from "js-api-client"; +import Error from "../../../../../../../../../../../../../../components/Error/Error"; + + +const IRTDeposit = () => { + + const {t} = useTranslation(); + const dispatch = useDispatch(); + const KYCStatus = useSelector((state) => state.auth.kyc) + + + + const [sendIPGLoading, setIPGIsLoading] = useState(false) + + const params = new URLSearchParams(useLocation().search); + const paymentStatus = params.get("payment_status"); + + const [disable, setDisable] = useState(false); + const [req, setReq] = useState({amount: {value: "", error: []}}) + + const apiBaseUrl = window.env.REACT_APP_API_BASE_URL; + + const dataMin = 1000 + const dataMax = 50000000 + + const fund = useSelector((state) => state.auth.wallets.IRT.free) + const ipgLock = useSelector((state) => state.exchange.ipgLock) + + const {id} = useParams(); + + const {data: openInVoice, isLoading, refetch} = useGetIpgOpenInvoice() + const {refetch : refetchIPGInvoice} = useIPGDeposit() + + useEffect(() => { + refetch() + }, [fund]); + + + const cancelIPGInvoice = (reference) => { + setIPGIsLoading(true) + setReq({amount: {value: "", error: []}}) + cancelIPGDepositReq(reference) + .then(() => { + toast.error(t("DepositWithdrawTx.cancelPayment")) + refetchIPGInvoice() + refetch() + }).finally(() => setIPGIsLoading(false)); + } + + const submit = async (e) => { + e.preventDefault(); + const amount = new BN(parsePriceString(req.amount.value)).multipliedBy(10) + + if (amount.isGreaterThan(dataMax) || new BN(parsePriceString(req.amount.value)).isLessThan(dataMin)) return false + setIPGIsLoading(true) + sendIPGDepositReq(amount).then(() => { + toast.success(<Trans + i18nKey="DepositWithdrawTx.IRTsuccess" + values={{ + amount: req.amount.value, + }} + />) + refetchIPGInvoice() + refetch() + }).finally(() => setIPGIsLoading(false)); + }; + + const inputHandler = (e) => { + let errorMessage = [] + const min = parsePriceString(e.target.dataset.min) + const max = parsePriceString(e.target.dataset.max) + const value = parsePriceString(e.target.value) + + const amountValidator = () => { + if (typeof min === undefined || typeof max === undefined) { + return false; + } + if (value < min) { + return false; + } + return value <= max; + } + if (!amountValidator()) { + errorMessage.push(<Trans + i18nKey="DepositWithdraw.IRTAllowable" + values={{ + name: t(e.target.dataset.name), + min: min.toLocaleString(), + max: max.toLocaleString() + }} + />) + } + setReq({...req, [e.target.dataset.name]: {value: e.target.value, error: errorMessage}}) + } + + const openIPG = () => { + window.open(`${apiBaseUrl}/ipg/v1/payment/pay/${openInVoice[0].reference}`) + setDisable(true) + dispatch(setIPGInitiate(new Date().getTime() + 2 * 60 * 1000)) + } + + useEffect(() => { + if (ipgLock && new Date().getTime() < ipgLock) setDisable(true) + }, [ipgLock]); + + const payButtonTitle = (amount) => { + if (disable) { + return <span className={`flex row jc-between`}>{t('DepositWithdraw.pay')} ( <Countdown + date={ipgLock && new Date().getTime() < ipgLock ? new Date(parseInt(ipgLock)) : Date.now() + 120000} + renderer={props => <div>{props.minutes}:{props.seconds}</div>} + onComplete={() => setDisable(false)} + />)</span> + } + return <span>{t('DepositWithdraw.pay')} ({amount} {t("currency." + id)})</span> + } + + if (KYCStatus !== "ACCEPTED") return <Error errorMsg={t('errorPage.needKYC')}/> + + const content = () => { + if (isLoading || sendIPGLoading) { + return <div className={`px-1 py-2 column jc-between ${classes.content}`}> + <Loading/> + </div> + } + if (openInVoice?.length > 0) { + const amount = new BN(`${openInVoice[0].amount}`).multipliedBy(0.1).toFormat() + return <div className={`px-1 py-2 row jc-between ${classes.content}`}> + + <div className={`column col-70 jc-around ai-start`}> + <Trans + i18nKey="DepositWithdraw.IRTText" + values={{ + amount: amount, + date: `${moment(new Date(openInVoice[0].createDate).getTime() - new Date(openInVoice[0].createDate).getTimezoneOffset() * 60 * 1000).format("jYY/jMM/jDD")}`, + time: `${moment(new Date(openInVoice[0].createDate).getTime() - new Date(openInVoice[0].createDate).getTimezoneOffset() * 60 * 1000).format("HH:mm:ss")}`, + }} + /> + <div className={`row`}> + <Button + buttonClass={`${classes.pay} ${classes.disable} px-2 ml-05`} + buttonTitle={payButtonTitle(amount)} + onClick={openIPG} + disabled={disable} + + /> + <Button + buttonClass={`${classes.cancel} ${classes.disable} px-2 mr-05`} + buttonTitle={t('DepositWithdraw.cancel')} + onClick={() => cancelIPGInvoice(openInVoice[0].reference)} + disabled={disable} + /> + </div> + + </div> + <div className={`col-30 flex jc-center ai-center`}> + {!disable ? <QRCode + value={`${apiBaseUrl}/ipg/v1/payment/pay/${openInVoice[0].reference}`} + bgColor="var(--cardBody)" + fgColor="var(--textColor)" + level='L' + size={140} + /> : ""} + </div> + </div> + } + return <form onSubmit={(e) => submit(e)} className={`px-1 py-2 column jc-around ${classes.content}`}> + <Trans + i18nKey="DepositWithdraw.IRTFormText" + values={{ + min: dataMin.toLocaleString(), + max: dataMax.toLocaleString() + }} + /> + <NumberInput + lead={t("orders.amount")} + after={t("currency."+ id)} + value={req.amount.value} + data-name="amount" + data-type="input" + data-min={dataMin} + data-max={dataMax} + customClass={`${classes.depositIRTInput} width-50`} + onchange={(e) => inputHandler(e)} + alerts={req.amount.error} + /> + <Button + buttonClass={`${classes.IRTButton} ${classes.withdrawal}`} + buttonTitle={t("DepositWithdraw.submitPaymentReq")} + type="submit" + /> + </form> + } + + return ( + <> + {paymentStatus && <CallbackPage/> } + {content()} + </> + + ) +} + +export default IRTDeposit; \ No newline at end of file diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/components/IRT/components/CallbackPage/CallbackPage.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/components/IRT/components/CallbackPage/CallbackPage.js new file mode 100644 index 0000000..3e44914 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/components/IRT/components/CallbackPage/CallbackPage.js @@ -0,0 +1,66 @@ +import React, {useEffect, useState} from "react"; +import classes from "./CallbackPage.module.css"; +import {images} from "../../../../../../../../../../../../../../../../assets/images"; +import Button from "../../../../../../../../../../../../../../../../components/Button/Button"; +import {useTranslation} from "react-i18next"; +import * as Routes from "../../../../../../../../../../../../../../Routes/routes"; +import {Link, useLocation, useNavigate} from "react-router-dom"; +import Loading from "../../../../../../../../../../../../../../../../components/Loading/Loading"; +import {verifyIPGDepositReq} from "js-api-client"; + + +const CallbackPage = () => { + const params = new URLSearchParams(useLocation().search); + const paymentToken = params.get("token"); + const paymentStatus = params.get("payment_status"); + const errorCode = params.get("error_code"); + + const [status, setStatus] = useState() + const [noData, setNoData] = useState() + const [loading, setLoading] = useState(true); + + let navigate = useNavigate(); + const {t} = useTranslation(); + + useEffect(() => { + verifyIPGDepositReq(paymentToken, paymentStatus) + .finally(() => { + if (paymentStatus === "OK") setStatus(true) + if (paymentStatus === "FAILED") setStatus(false) + if (paymentStatus !== "OK" && paymentStatus !== "FAILED") setNoData(true) + setLoading(false) + }) + }, [paymentToken, paymentStatus]); + + return ( + <> + <div onClick={() => navigate(Routes.Wallet + "/IRT", {replace: true})} + className={`${classes.container} flex jc-center ai-center`}/> + {loading ? + <div className={`${classes.content} card-border`}><Loading/></div> + : + <div + className={`${classes.content} ${status ? "text-green" : "text-red"} card-border column jc-around ai-center py-2`}> + {noData ? <span className={`text-color`}>{t("CallbackPage.noData")}</span> : + <> + <img src={status ? images.approve : images.reject} alt={paymentStatus}/> + <div className={`column jc-center ai-center`}> + <span>{status ? t("CallbackPage.ok") : t("CallbackPage.failed")}</span> + {errorCode !== null && <span + className={`text-color fs-0-7`}>{t("CallbackPage.errorMessage")} : <span>{t("IPGErrorCode." + errorCode)}</span></span>} + </div> + </> + } + <Link to={Routes.Wallet + "/IRT"}> + <Button + buttonClass={`${classes.thisButton} px-3`} + buttonTitle={t("close")} + /> + </Link> + </div> + } + </> + ); +}; + +export default CallbackPage; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/components/IRT/components/CallbackPage/CallbackPage.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/components/IRT/components/CallbackPage/CallbackPage.module.css new file mode 100644 index 0000000..30c7285 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/components/IRT/components/CallbackPage/CallbackPage.module.css @@ -0,0 +1,28 @@ +.container{ + width: 100%; + height: 100%; + position: fixed; + top: 0; + /*background-color: #0304038f;*/ + background-color: rgba(0, 0, 0, 0.66); + z-index: 6; + right: 0; +} +.content{ + position: fixed; + top: 27.5%; + left: 37.5%; + width: 25%; + height: 45%; + background-color: var(--cardBody); + z-index: 7; +} +.content img{ + width: 7vw; +} +.thisButton { + width: 100%; + background-color: var(--orange); + color: #000 !important; + +} \ No newline at end of file diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/components/Transfer.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/components/Transfer.js new file mode 100644 index 0000000..5ec71a4 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Deposit/components/Transfer.js @@ -0,0 +1,78 @@ +import classes from "../../../DepositWithdraw.module.css"; +import TextInput from "../../../../../../../../../../../../../components/TextInput/TextInput"; +import Button from "../../../../../../../../../../../../../components/Button/Button"; +import React, {useState} from "react"; + +const Transfer = () => { + const [transferInput, setTransferInput] = useState({ + amount: "", + destinationUserNumber: "", + }); + return <div className={`px-1 py-2 column jc-between ${classes.content}`}> + <div className="width-100 row jc-between"> + <div className="col-30 column jc-between"> + <TextInput + lead="مقدار بیتکوین" + value={transferInput.amount} + onchange={(e) => + setTransferInput({...transferInput, amount: e.target.value}) + } + type="text" + /> + <span className="pt-1"> + موجودی قابل برداشت: <span>0.05 بیتکوین</span> + </span> + <span> + سقف برداشت روزانه شما: <span>1 بیتکوین</span> + </span> + <span> + سقف برداشت ماهانه شما: <span>10 بیتکوین</span> + </span> + </div> + <div className="col-70 pr-1 column jc-between" style={{height: "20vh"}}> + <div className="column"> + <TextInput + lead="شماره کاربری مقصد" + customClass={classes.withdrawalInput} + type="text" + value={transferInput.destinationUserNumber} + onchange={(e) => + setTransferInput({ + ...transferInput, + destinationUserNumber: e.target.value, + }) + } + /> + <span className="pt-05 text-end"> + لطفا دقت کنید! ورود اشتباه آدرس می تواند به از دست رفتن سرمایه + منجر شود. + </span> + </div> + <div className="row jc-between ai-center"> + <div className="column"> + <span> + کارمزد: <span>...</span> + </span> + <span> + دریافتی شما: <span>...</span> + </span> + </div> + <Button + buttonClass={`${classes.thisButton} ${classes.transfer}`} + type="submit" + buttonTitle="ثبت درخواست انتقال" + /> + </div> + </div> + </div> + <div> + <span> + باتوجه به ملاحضات امنیتی ممکن است انتقال به حساب با کمی تاخیر صورت + بگیرد. می توانید وضعیت برداشت را در همین صفحه از بخش ترکنش های{" "} + <span className="text-orange">{`${t("DepositWithdraw.title")}`}</span>{" "} + ببینید. + </span> + </div> + </div> +} +export default Transfer; \ No newline at end of file diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Transaction/Transaction.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Transaction/Transaction.js index 12986f0..2565865 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Transaction/Transaction.js +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Transaction/Transaction.js @@ -1,9 +1,20 @@ import React from 'react'; +import classes from "../Deposit/Deposit.module.css"; +import {useParams} from "react-router-dom"; +import {useTranslation} from "react-i18next"; +import IRTTx from "./components/DepositWithdrawTx/components/IRTTx/IRTTx"; +import DepositWithdrawTx from "./components/DepositWithdrawTx/DepositWithdrawTx"; const Transaction = () => { + + const {id} = useParams(); + const {t} = useTranslation(); return ( - <div> - + <div className={`column jc-between ai-center text-center ${classes.content} card-bg card-border height-98 width-95`}> + <div className="flex jc-center ai-center card-header-bg py-2 px-1 width-100"> + <h3>{t("DepositWithdrawTx.title")}</h3> + </div> + {id === "IRT" ? <IRTTx/> : <DepositWithdrawTx/>} </div> ); }; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Transaction/components/DepositWithdrawTx/DepositWithdrawTx.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Transaction/components/DepositWithdrawTx/DepositWithdrawTx.js new file mode 100644 index 0000000..599c49b --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Transaction/components/DepositWithdrawTx/DepositWithdrawTx.js @@ -0,0 +1,41 @@ +import React, {useLayoutEffect, useState} from 'react'; +import {useParams} from "react-router-dom"; +import {useTranslation} from "react-i18next"; +import {useDepositTxs, useWithdrawTxs} from "../../../../../../../../../../../../queries"; +import Loading from "../../../../../../../../../../../../components/Loading/Loading"; +import Error from "../../../../../../../../../../../../components/Error/Error"; +import DepositWithdrawTxTables from "./components/DepositWithdrawTxTables/DepositWithdrawTxTables"; +import ScrollBar from "../../../../../../../../../../../../components/ScrollBar"; + +const DepositWithdrawTx = () => { + + const {id} = useParams(); + const {t} = useTranslation(); + const [txs, setTxs] = useState([]); + + const {data: deposit, isLoading: depositIsLoading, error: depositError} = useDepositTxs(id); + const {data: withdraw, isLoading: withdrawIsLoading, error: withdrawError} = useWithdrawTxs(id); + + useLayoutEffect(() => { + if (!deposit || !withdraw) { + return + } + const newTxs = [...deposit, ...withdraw]; + setTxs(newTxs.sort((a, b) => b.time - a.time)) + + }, [deposit, withdraw]); + + if (depositIsLoading || withdrawIsLoading) return <Loading/> + if (depositError || withdrawError) return <Error/> + + if (txs.length === 0) return <div className="width-100 height-100 flex ai-center jc-center">{t("noTx")}</div> + + + return ( + <ScrollBar> + <DepositWithdrawTxTables txs={txs} id={id}/> + </ScrollBar> + ); +}; + +export default DepositWithdrawTx; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Transaction/components/DepositWithdrawTx/DepositWithdrawTx.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Transaction/components/DepositWithdrawTx/DepositWithdrawTx.module.css new file mode 100644 index 0000000..070fcf2 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Transaction/components/DepositWithdrawTx/DepositWithdrawTx.module.css @@ -0,0 +1,7 @@ + +.doubleStriped div:nth-child(2n-1) div{ + background-color: var(--tableRow); + -webkit-transition: background-color 0.4s; + -o-transition: background-color 0.4s; + transition: background-color 0.4s; +} \ No newline at end of file diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Transaction/components/DepositWithdrawTx/components/DepositWithdrawTxTables/DepositWithdrawTxTables.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Transaction/components/DepositWithdrawTx/components/DepositWithdrawTxTables/DepositWithdrawTxTables.js new file mode 100644 index 0000000..333b7e3 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Transaction/components/DepositWithdrawTx/components/DepositWithdrawTxTables/DepositWithdrawTxTables.js @@ -0,0 +1,88 @@ +import React, {Fragment, useState} from 'react'; +import {Trans, useTranslation} from "react-i18next"; +import {toast} from "react-hot-toast"; +import Icon from "../../../../../../../../../../../../../../components/Icon/Icon"; +import classes from "../../DepositWithdrawTx.module.css" +import Date from "../../../../../../../../../../../../../../components/Date/Date"; +import moment from "moment-jalaali"; +import {BN} from "../../../../../../../../../../../../../../utils/utils"; + +const DepositWithdrawTxTables = ({txs, id}) => { + + const [openItem, setOpenItem] = useState(false); + const {t} = useTranslation(); + + const copyAddressToClipboard = (value) => { + navigator.clipboard.writeText(value) + toast.success(<Trans + i18nKey="DepositWithdraw.copy" + />); + } + + const txStatus = (status) => { + switch (status) { + case 0: + return t("orderStatus.NEW"); + case 1: + return t("orderStatus.FILLED"); + case 2: + return t("orderStatus.REJECTED"); + default: + return t("orderStatus.NEW"); + } + }; + + return <div className={`${classes.doubleStriped}`}> + {txs.map((tr, index) => ( + <div key={index}> + <div className={`row fs-0-9`}> + <div className={`width-43 column ai-start pr-3 pt-025 pb-025`}> + <span className={`mb-025`}><Date date={tr.time}/> | {moment(tr.time).format("HH:mm:ss")}</span> + <span className={`row ${tr.hasOwnProperty('withdrawOrderId') ? "text-red" : "text-green"} mt-025`} > + <span>{tr.hasOwnProperty('withdrawOrderId') ? t("withdrawal") : t("deposit")}</span> + <span className={`mx-2`}>{id}</span> + <span>{new BN(tr.amount).toFormat()}</span> + </span> + </div> + <div className={`width-43 column ai-end pt-025 pb-025`}> + <span>{txStatus(tr.status)}</span> + <span>{tr.network}</span> + </div> + <div className={`width-14 flex jc-end ai-center pl-3 pt-025 pb-025`} onClick={() => setOpenItem(openItem === index ? null : index)}> + <Icon iconName={`${openItem === index ? 'icon-up-open' : 'icon-down-open'} text-blue fs-0-7 cursor-pointer`} customClass={classes.iconBG}/> + </div> + </div> + <span style={{display: openItem === index ? "revert" : "none"}} className={`fs-0-9`}> + <div className={``}> + <div className="row jc-around ai-center px-3" style={{width: "100%"}}> + <p className="col-94 row jc-between"> + {t("DepositWithdrawTx.destination")} : + <span>{tr.address}</span> + </p> + <p className="col-03 row jc-end"> + <Icon iconName="icon-copy fs-01" customClass={`hover-text cursor-pointer`} + onClick={() => copyAddressToClipboard(tr.address)}/> + </p> + </div> + <div className="row jc-around ai-center px-3 pb-05" style={{width: "100%"}}> + <p className="col-94 row jc-between"> + {t("DepositWithdrawTx.transactionId")} : + <span>{id === "BTC" ? tr.txId.slice(0, tr.txId.indexOf("_")) : tr.txId}</span> + </p> + <p className="col-03 row jc-end"> + <Icon + iconName="icon-copy fs-01" + customClass={`hover-text cursor-pointer`} + onClick={() => copyAddressToClipboard(tr.txId)} + /> + </p> + </div> + </div> + </span> + + </div> + ))} + </div> +}; + +export default DepositWithdrawTxTables; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Transaction/components/DepositWithdrawTx/components/IRTTx/IRTTx.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Transaction/components/DepositWithdrawTx/components/IRTTx/IRTTx.js new file mode 100644 index 0000000..bd211b6 --- /dev/null +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/Transaction/components/DepositWithdrawTx/components/IRTTx/IRTTx.js @@ -0,0 +1,11 @@ +import React from 'react'; + +const IRTTx = () => { + return ( + <div> + <span>IRT Tx</span> + </div> + ); +}; + +export default IRTTx; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/withdrawal/withdrawal.js b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/withdrawal/withdrawal.js index 696cca1..4d01cab 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/withdrawal/withdrawal.js +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/withdrawal/withdrawal.js @@ -1,10 +1,280 @@ -import React from 'react'; +import React, {useEffect, useRef, useState} from 'react'; import classes from './withdrawal.module.css' +import {useParams} from "react-router-dom"; +import {Trans, useTranslation} from "react-i18next"; +import {useGetUserAccount} from "../../../../../../../../../../queries/hooks/useGetUserAccount"; +import { + useGetCurrencyInfo, + useGetUserAssets, + useGetUserAssetsEstimatedValue, + useWithdrawTxs +} from "../../../../../../../../../../queries"; +import {BN, parsePriceString} from "../../../../../../../../../../utils/utils"; +import {sendWithdrawReq} from "js-api-client"; +import {toast} from "react-hot-toast"; +import {images} from "../../../../../../../../../../assets/images"; +import ReactTooltip from "react-tooltip"; +import Loading from "../../../../../../../../../../components/Loading/Loading"; +import Error from "../../../../../../../../../../components/Error/Error"; +import NumberInput from "../../../../../../../../../../components/NumberInput/NumberInput"; +import TextInput from "../../../../../../../../../../components/TextInput/TextInput"; +import Button from "../../../../../../../../../../components/Button/Button"; +import Icon from "../../../../../../../../../../components/Icon/Icon"; const Withdrawal = () => { - return ( - <div> + const {t} = useTranslation(); + const {id} = useParams(); + + const [amount, setAmount] = useState({value: 0, error: []}); + const [networkName, setNetworkName] = useState({value: 0, error: []}); + const [address, setAddress] = useState({value: "", error: []}); + const [isLoading, setIsLoading] = useState(false) + + useEffect(() => { + toast.dismiss() + }, []) + + useEffect(() => { + setNetworkName({value: 0, error: []}) + setAmount({value: 0, error: []}) + setAddress({value: "", error: []}) + validation() + }, [id]); + + const {refetch: getUserAccount} = useGetUserAccount(); + const {refetch: getWithdrawTxs} = useWithdrawTxs(id); + const {refetch: getUserAssets} = useGetUserAssets("IRT"); + const {refetch: getUserAssetsEstimatedValue} = useGetUserAssetsEstimatedValue("IRT"); + + const {data: userAccount} = useGetUserAccount() + const freeAmount = userAccount?.wallets[id]?.free || 0 + + const {data:currencyInfo, isLoading:CILoading, error:CIError} = useGetCurrencyInfo(id) + + const tooltip = useRef() + const selectRef = useRef() + + + + + + const withdrawFee = new BN(currencyInfo?.chains[networkName.value]?.withdrawFee).toFormat() + + + const pasteFromClipboard = (e) => { + e.preventDefault(); + if (navigator.clipboard !== undefined) { + navigator.clipboard.readText() + .then(text => { + //console.log('Pasted content: ', text); + setAddress({...address, value: text}) + toast.success(t('DepositWithdraw.paste')); + }) + .catch(err => { + console.error('Failed to read clipboard contents: ', err); + }); + } + else return toast.error(t('error')); + + } + + const validation = () => { + if (new BN(amount.value).isGreaterThan(freeAmount)) { + return t('DepositWithdraw.noInventory') + + + + // return toast.error(t('DepositWithdraw.noInventory')); + } + if (new BN(amount.value).minus(withdrawFee).isLessThanOrEqualTo(0)) { + return t('DepositWithdraw.allowableWithdraw') + } + /*if (currencyInfo?.chains[networkName.value]) { + return t('DepositWithdraw.fillNetwork') + }*/ + if (address.value.length <= 0) { + return t('DepositWithdraw.fillAddress') + } + } + + const sendWithdrawHandler = async (e) => { + e.preventDefault() + if(isLoading) return + setIsLoading(true) + sendWithdrawReq(amount.value, id, address.value, withdrawFee, `${currencyInfo?.chains[networkName.value]?.network} - ${currencyInfo?.chains[networkName.value]?.currency}` ) + .then(() => { + setNetworkName({value: 0, error: []}) + setAmount({value: 0, error: []}) + setAddress({value: "", error: []}) + toast.success(<Trans + i18nKey="DepositWithdrawTx.success" + values={{ + asset: t("currency." + id), + amount: amount.value, + }} + />); + getUserAccount() + getWithdrawTxs() + getUserAssets() + getUserAssetsEstimatedValue() + }) + .catch(() => { + toast.error(t('error')); + }) + .finally(() => setIsLoading(false)) + } + + const submitButtonTextHandler = () => { + if (isLoading) return <img className={`${classes.thisLoading}`} src={images.linearLoadingBgOrange} + alt="linearLoading"/> + return t('DepositWithdrawTx.withdrawReqSubmit') + } + const fillByWallet = () => { + setAmount({ + value: freeAmount, + error: [] + }) + }; + const fillByMinWithdraw = () => { + setAmount({ + value: new BN(currencyInfo?.chains[networkName.value]?.minWithdraw).plus(withdrawFee).toString(), + error: [] + }) + }; + + const enableButton = !(new BN(amount.value).minus(withdrawFee).isGreaterThan(0)) || new BN(amount.value).isGreaterThan(freeAmount) || address.value.length <= 0 + + useEffect(() => { + ReactTooltip.rebuild(); + }, [enableButton]); + + useEffect(() => { + ReactTooltip.hide(tooltip.current) + }, [enableButton]); + + if (id === "IRT") { + return <div className={`flex jc-center ai-center card-bg card-border height-98 width-95`}><h3>{t("comingSoon")}</h3></div> + } + + const content = () => { + if (CILoading) return <Loading/> + if (CIError) return <Error/> + else return <form onSubmit={(e)=>sendWithdrawHandler(e)} className={`px-2 py-1 column jc-between height-100 ${classes.content}`}> + + <div className={`column mb-2`}> + <div className={`row jc-between ai-center`}> + <span className={`my-05`}>{t("DepositWithdrawTx.freeWallet")}: </span> + <span className={`hover-text cursor-pointer`} onClick={() => {fillByWallet()}}>{freeAmount} {t("currency." + id)}</span> + </div> + <div className={`row jc-between ai-center`}> + <span className={`my-05`}>{t('DepositWithdrawTx.minWithdraw')}: </span> + <span className={`hover-text cursor-pointer`} onClick={() => {fillByMinWithdraw()}}> {new BN(currencyInfo?.chains[networkName.value]?.minWithdraw).plus(withdrawFee).toString()} {t("currency." + id)} </span> + </div> + <div className={`row jc-between ai-center`}> + <span className={`my-05`}>{t('DepositWithdrawTx.maxWithdraw')}: </span> + <span>2 {t("currency." + id)}</span> + </div> + <div className={`row jc-between ai-center`}> + <span className={`my-05`}>{t('DepositWithdrawTx.maxMonthWithdraw')}: </span> + <span>2 {t("currency." + id)}</span> + </div> + </div> + + + <TextInput + select={true} + placeholder={t('DepositWithdraw.selectNetwork')} + options={currencyInfo?.chains.map((chain,index) => {return {value: index, label: `${chain.network} - ${chain.currency}` }})} + lead={t('DepositWithdraw.network')} + type="select" + value={currencyInfo?.chains[networkName.value] && {value: networkName.value, label: `${currencyInfo?.chains[networkName.value].network} - ${currencyInfo?.chains[networkName.value].currency}` }} + onchange={(e) => setNetworkName({value: e?.value || 0, error: []})} + customRef={selectRef} + alerts={networkName.error} + customClass={`${classes.withdrawalSmallInput} `} + /> + <NumberInput + lead={t('volume') + " " + t("currency." + id)} + value={amount.value.toString()} + alerts={amount.error} + customClass={`${classes.withdrawNumberInput} my-2`} + onchange={(e) => + setAmount({...amount, value: parsePriceString(e.target.value)}) + } + type="text" + /> + + <div className="column"> + <div className={`row jc-between mb-05`}> + <span>{t("DepositWithdrawTx.destAddress") + " " + t("currency." + id)}</span> + <Icon + iconName="icon-paste fs-02" + onClick={(e) => pasteFromClipboard(e)} + customClass={`hover-text cursor-pointer`} + /> + </div> + <TextInput + //lead={t("DepositWithdrawTx.destAddress") + " " + t("currency." + id)} + customClass={`${classes.withdrawalInput} `} + type="text" + value={address.value} + alerts={address.error} + onchange={(e) => setAddress({...address, value: e.target.value})} + /> + <span className="pt-05 text-end fs-0-7">{t('DepositWithdrawTx.withdrawWarn')}</span> + </div> + + + <div className={`column`}> + <div className={`row jc-between ai-center`}> + <span className={`my-05`}>{t('commission')}: </span> + <span> + <span className={`text-orange`}> {amount.value ? withdrawFee : 0} </span> + <span>{t("currency." + id)}</span> + </span> + + + </div> + <div className={`row jc-between ai-center`}> + <span className={`my-05`}>{t('DepositWithdrawTx.reqAmount')}: </span> + <span> + <span className={`text-green ml-1`}> {new BN(amount.value).minus(withdrawFee).isGreaterThan(0) ? new BN(amount.value).minus(withdrawFee).toFormat() : 0}</span> + <span>{t("currency." + id)}</span> + </span> + </div> + </div> + + + <div className="fs-0-7" style={{lineHeight:"2.5vh"}}> + <span>{t('DepositWithdraw.securityConsiderations')}</span> + </div> + + <span + ref={tooltip} + style={{width: "100%"}} + data-html={true} + data-place="top" + data-effect="float" + data-tip={enableButton ? `<span class="column jc-between col-100 text-red fs-01">${validation()}</span>` : ""} + > + <Button + buttonClass={`${classes.thisButton} ${classes.withdrawal} ${isLoading ? "cursor-not-allowed" : "cursor-pointer"} width-100`} + buttonTitle={submitButtonTextHandler()} + disabled={!(new BN(amount.value).minus(withdrawFee).isGreaterThan(0)) || new BN(amount.value).isGreaterThan(freeAmount) || address.value.length <= 0} + //onClick={} + type="submit" + /> + </span> + + </form> + } + + + + return ( + <div className={`card-bg card-border height-98 width-95`}> + {content()} </div> ); }; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/withdrawal/withdrawal.module.css b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/withdrawal/withdrawal.module.css index e69de29..3761599 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/withdrawal/withdrawal.module.css +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Content/components/Wallet/components/withdrawal/withdrawal.module.css @@ -0,0 +1,63 @@ +/*.withdrawalInput :global(.lead) { + width: 24%; +}*/ +.withdrawalInput :global(input) { + width: 100% !important; +} +.withdrawNumberInput :global(.lead) { + width: 40%; +} +.withdrawNumberInput :global(input) { + width: 60% !important; +} + +.withdrawalSmallInput :global(.lead) { + width: 40%; +} +.withdrawalSmallInput :global(.select) { + width: 60% !important; +} + +.thisButton { + width: 100%; +} +.IRTButton{ + width: 20%; +} +.IRTButton.withdrawal{ + background-color: var(--orange); + color: #000; +} +.thisButton.withdrawal{ + background-color: var(--orange); + color: #000; +} +.thisButton.transfer{ + background-color: var(--darkRed); +} + +.pay{ + background-color: var(--darkGreen); + +} +.cancel{ + background-color: var(--darkRed); +} +.disable:disabled,.button[disabled] { + border: 0.3vh solid var(--cardHeader); + background: var(--cardHeader); + color: var(--textColor); + cursor: not-allowed; +} + +.thisButton:disabled,.button[disabled] { + border: 0.3vh solid var(--cardHeader); + background: var(--cardHeader); + color: var(--textColor); + cursor: not-allowed; +} + + +.thisLoading{ + width: 10%; +} \ No newline at end of file diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Header/components/SettingsHeader/SettingsHeader.js b/src/main/Mobile/Pages/UserPanel/Secttions/Header/components/SettingsHeader/SettingsHeader.js index c638a9b..80cacd6 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/Header/components/SettingsHeader/SettingsHeader.js +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Header/components/SettingsHeader/SettingsHeader.js @@ -2,16 +2,26 @@ import React from 'react'; import Icon from "../../../../../../../../components/Icon/Icon"; import {useDispatch} from "react-redux"; import {activeActionSheet} from "../../../../../../../../store/actions/global"; +import {useLocation} from "react-router-dom"; +import {useTranslation} from "react-i18next"; +import * as RoutesName from "../../../../../../Routes/routes"; const SettingsHeader = () => { + const {t} = useTranslation() const dispatch = useDispatch(); + const location = useLocation() + const clickHandler = () => { + if (!(location.pathname.includes(RoutesName.SettingsRelative)) ) { + dispatch(activeActionSheet({subMenu: true})) + } + } return ( <> - <h3 className={`mr-2`} onClick={() => dispatch(activeActionSheet({subMenu: true}))}> - امنیت + <h3 className={`mr-2 text-orange`} onClick={() => clickHandler()}> + {t("routes." + location.pathname)} </h3> <Icon iconName="icon-settings fs-20 flex" onClick={() => dispatch(activeActionSheet({menu: true}))} diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/Menu/Menu.js b/src/main/Mobile/Pages/UserPanel/Secttions/Menu/Menu.js index b66ac25..8688efd 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/Menu/Menu.js +++ b/src/main/Mobile/Pages/UserPanel/Secttions/Menu/Menu.js @@ -6,6 +6,7 @@ import * as RoutesName from "../../../../Routes/routes"; import {activeActionSheet} from "../../../../../../store/actions/global"; import {useDispatch} from "react-redux"; import {useTranslation} from "react-i18next"; +import {Profile} from "../../../../Routes/routes"; const Menu = () => { @@ -44,15 +45,15 @@ const Menu = () => { <Icon iconName="icon-safe fs-20" customClass={`col-48 flex jc-end ai-center`}/> <span className={`col-48 ai-start`}>{t("wallet.title")}</span> </NavLink> - {/* <NavLink - to={RoutesName.Settings} + <NavLink + to={RoutesName.Profile} className={({ isActive }) => isActive ? `${classes.selected} width-50 row jc-between ai-center py-1` : "width-50 row jc-between ai-center py-1" } > <Icon iconName="icon-settings fs-20" customClass={`col-48 flex jc-end ai-center`}/> <span className={`col-48 ai-start`}>{t("settings.title")}</span> - </NavLink>*/} + </NavLink> </div> ); }; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/NavMenu/components/SettingsNavMenu/SettingsNavMenu.js b/src/main/Mobile/Pages/UserPanel/Secttions/NavMenu/components/SettingsNavMenu/SettingsNavMenu.js index 589c33e..7d3ae2b 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/NavMenu/components/SettingsNavMenu/SettingsNavMenu.js +++ b/src/main/Mobile/Pages/UserPanel/Secttions/NavMenu/components/SettingsNavMenu/SettingsNavMenu.js @@ -3,48 +3,52 @@ import classes from "../../NavMenu.module.css"; import {NavLink} from "react-router-dom"; import * as Routes from "../../../../../../Routes/routes"; import Icon from "../../../../../../../../components/Icon/Icon"; +import {useTranslation} from "react-i18next"; const SettingsNavMenu = () => { + + const {t} = useTranslation(); + return ( <div className={`width-100 ${classes.container} row ai-center jc-between`}> <NavLink - to={Routes.Overview} - className={({ isActive }) => + to={Routes.Profile} + className={({isActive}) => isActive ? `col-25 column jc-center ai-center ${classes.selected}` : `col-25 column jc-center ai-center` } > - <Icon iconName="icon-overview fs-06"/> - <span className={`fs-0-6`}>امنیت</span> + <Icon iconName="icon-username-icon fs-06"/> + <span className={`fs-0-6`}>{t("SettingsSubMenu.userProfile")}</span> </NavLink> <NavLink - to={Routes.OrderBook} - className={({ isActive }) => + to={Routes.Security} + className={({isActive}) => isActive ? `col-25 column jc-center ai-center ${classes.selected}` : `col-25 column jc-center ai-center` } > - <Icon iconName="icon-orderbook fs-06"/> - <span className={`fs-0-6`}>احراز هویت</span> + <Icon iconName="icon-privacy-icon-1 fs-06"/> + <span className={`fs-0-6`}>{t("SettingsSubMenu.security")}</span> </NavLink> <NavLink - to={Routes.Order} - className={({ isActive }) => + to={Routes.Authentication} + className={({isActive}) => isActive ? `col-25 column jc-center ai-center ${classes.selected}` : `col-25 column jc-center ai-center` } > - <Icon iconName="icon-order fs-06"/> + <Icon iconName="icon-file-user-icon fs-06"/> - <span className={`fs-0-6`}>مشخصات کاربری</span> + <span className={`fs-0-6`}>{t("SettingsSubMenu.authentication")}</span> </NavLink> <NavLink - to={Routes.Order} - className={({ isActive }) => + to={Routes.APIKey} + className={({isActive}) => isActive ? `col-25 column jc-center ai-center ${classes.selected}` : `col-25 column jc-center ai-center` } > - <Icon iconName="icon-order fs-06"/> + <Icon iconName="icon-user-key-icon fs-06"/> - <span className={`fs-0-6`}>شخصی سازی</span> + <span className={`fs-0-6`}> {t("APIKey.title")}</span> </NavLink> </div> ); diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/NavMenu/components/WalletNavMenu/WalletNavMenu.js b/src/main/Mobile/Pages/UserPanel/Secttions/NavMenu/components/WalletNavMenu/WalletNavMenu.js index 7ab3a81..3a31830 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/NavMenu/components/WalletNavMenu/WalletNavMenu.js +++ b/src/main/Mobile/Pages/UserPanel/Secttions/NavMenu/components/WalletNavMenu/WalletNavMenu.js @@ -1,9 +1,10 @@ -import React from 'react'; +import React, {useEffect} from 'react'; import classes from "../../NavMenu.module.css"; import {NavLink, useParams} from "react-router-dom"; import * as Routes from "../../../../../../Routes/routes"; import Icon from "../../../../../../../../components/Icon/Icon"; import {useTranslation} from "react-i18next"; +import {toast} from "react-hot-toast"; const WalletNavMenu = () => { @@ -12,6 +13,8 @@ const WalletNavMenu = () => { const {id} = useParams() + + return ( <div className={`width-100 ${classes.container} row ai-center jc-between`}> <NavLink @@ -40,7 +43,7 @@ const WalletNavMenu = () => { > <Icon iconName="icon-order fs-06"/> - <span className={`fs-0-8`}>{t("DepositWithdrawTx.title")}</span> + <span className={`fs-0-8`}>{t("DepositWithdrawTx.transactions")}</span> </NavLink> </div> ); diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/SubHeader/SubHeader.js b/src/main/Mobile/Pages/UserPanel/Secttions/SubHeader/SubHeader.js index 1557ae7..441bd5d 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/SubHeader/SubHeader.js +++ b/src/main/Mobile/Pages/UserPanel/Secttions/SubHeader/SubHeader.js @@ -1,52 +1,27 @@ -import React, {Fragment, useEffect, useState} from "react"; +import React, {useState} from "react"; import classes from "./SubHeader.module.css"; import Icon from "../../../../../../components/Icon/Icon"; -import {Route, Routes} from "react-router-dom"; +import {Route, Routes, useLocation} from "react-router-dom"; import * as RoutesName from "../../../../Routes/routes"; -import MarketHeader from "../Header/components/MarketHeader/MarketHeader"; import ProtectedRoute from "../../../../../../components/ProtectedRoute/ProtectedRoute"; -import WalletHeader from "../Header/components/WalletHeader/WalletHeader"; -import SettingsHeader from "../Header/components/SettingsHeader/SettingsHeader"; import MarketSubHeader from "./components/MarketSubHeader/MarketSubHeader"; import WalletSubHeader from "./components/WalletSubHeader/WalletSubHeader"; import SettingsSubHeader from "./components/SettingsSubHeader/SettingsSubHeader"; -import {activeOrderLayout} from "../../../../../../store/actions/global"; const SubHeader = (props) => { - const [expand, setExpand] = useState(false) + const location = useLocation() + - /*useEffect(() => { - return () => { + const clickHandler = () => { + if (!(location.pathname.includes(RoutesName.SettingsRelative)) ) { setExpand(true) } - }, []);*/ - - const content = () => { - /*if (expand) { - return <div className={`container column jc-between ai-center ${classes.container1} pt-1 px-5`}> - - - - - - - <Icon iconName="icon-dot-3 fs-01 flex" customClass={`${classes.thisIcon} py-05`} onClick={()=>setExpand(false)}/> - - </div> - }*/ - /* if (!expand) { - return <div className={`container flex ai-center jc-center ${classes.expand}`}> - <Icon iconName="icon-dot-3 fs-01 flex" customClass={`${classes.thisIcon}`} onClick={()=>setExpand(true)}/> - - - - </div> - }*/ - - return <div className={`width-100 column ai-center jc-center position-relative ${classes.container}`}> + } + return ( + <div className={`width-100 column ai-center jc-center position-relative ${classes.container}`}> {expand && <div className={`width-100 column position-absolute ${classes.content} py-1 px-3`}> <Routes> <Route path={RoutesName.MarketRelative + "/*"} element={ @@ -55,7 +30,6 @@ const SubHeader = (props) => { <Route element={<ProtectedRoute/>}> <Route path={RoutesName.WalletRelative+"/:id/:path/*"} element={ <WalletSubHeader/> - }/> <Route path={RoutesName.SettingsRelative+"/*"} element={ <SettingsSubHeader/> @@ -64,16 +38,9 @@ const SubHeader = (props) => { </Routes> <Icon iconName="icon-dot-3 fs-01 flex jc-center ai-center" customClass={`${classes.thisIcon} py-05`} onClick={()=>setExpand(false)}/> </div>} - - <Icon iconName="icon-dot-3 fs-01 flex" customClass={`${classes.thisIcon}`} onClick={()=>setExpand(true)}/> + <Icon iconName="icon-dot-3 fs-01 flex" customClass={`${classes.thisIcon}`} onClick={()=>clickHandler()}/> </div> - } - - - return ( - content() ); - }; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/SubHeader/components/SettingsSubHeader/SettingsSubHeader.js b/src/main/Mobile/Pages/UserPanel/Secttions/SubHeader/components/SettingsSubHeader/SettingsSubHeader.js index 3b7b35b..d3f8abf 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/SubHeader/components/SettingsSubHeader/SettingsSubHeader.js +++ b/src/main/Mobile/Pages/UserPanel/Secttions/SubHeader/components/SettingsSubHeader/SettingsSubHeader.js @@ -3,7 +3,7 @@ import React from 'react'; const SettingsSubHeader = () => { return ( <div> - settings + </div> ); }; diff --git a/src/main/Mobile/Pages/UserPanel/Secttions/SubMenu/components/WalletSubMenu/components/WalletListItem/WalletListItem.js b/src/main/Mobile/Pages/UserPanel/Secttions/SubMenu/components/WalletSubMenu/components/WalletListItem/WalletListItem.js index ebf89da..9d47c1e 100644 --- a/src/main/Mobile/Pages/UserPanel/Secttions/SubMenu/components/WalletSubMenu/components/WalletListItem/WalletListItem.js +++ b/src/main/Mobile/Pages/UserPanel/Secttions/SubMenu/components/WalletSubMenu/components/WalletListItem/WalletListItem.js @@ -21,8 +21,6 @@ const WalletListItem = ({assetName, showZero}) => { if (showZero && free === 0) return <></> - console.log("asset: ", assetName) - return ( <NavLink className={({isActive}) => diff --git a/src/main/Mobile/Routes/routes.js b/src/main/Mobile/Routes/routes.js index 637068a..fc6571c 100644 --- a/src/main/Mobile/Routes/routes.js +++ b/src/main/Mobile/Routes/routes.js @@ -27,7 +27,8 @@ export const Personalization = "/panel/settings/personalization"; export const PersonalizationRelative = "personalization"; export const Authentication = "/panel/settings/authentication"; export const AuthenticationRelative = "/authentication"; - +export const APIKey = "/panel/settings/api-key"; +export const APIKeyRelative = "/api-key"; export const Overview = "/panel/market/overview"; diff --git a/src/main/Mobile/Styles/Mobille.css b/src/main/Mobile/Styles/Mobille.css index bbdd292..e321f2c 100644 --- a/src/main/Mobile/Styles/Mobille.css +++ b/src/main/Mobile/Styles/Mobille.css @@ -53,8 +53,8 @@ font-size: 0.8rem; } - .fs-0-8 { - font-size: 0.8rem; + .fs-0-9 { + font-size: 0.9rem; } .fs-01 {