diff --git a/src/gui/qt-daemon/html/assets/i18n/af.json b/src/gui/qt-daemon/html/assets/i18n/af.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/af.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/ar.json b/src/gui/qt-daemon/html/assets/i18n/ar.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/ar.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/ca.json b/src/gui/qt-daemon/html/assets/i18n/ca.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/ca.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/cs.json b/src/gui/qt-daemon/html/assets/i18n/cs.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/cs.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/da.json b/src/gui/qt-daemon/html/assets/i18n/da.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/da.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/de.json b/src/gui/qt-daemon/html/assets/i18n/de.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/de.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/el.json b/src/gui/qt-daemon/html/assets/i18n/el.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/el.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/en.json b/src/gui/qt-daemon/html/assets/i18n/en.json index 47e688ec..2bebce57 100644 --- a/src/gui/qt-daemon/html/assets/i18n/en.json +++ b/src/gui/qt-daemon/html/assets/i18n/en.json @@ -1,10 +1,11 @@ { - "LOGIN" : { + "LOGIN": { "SETUP_MASTER_PASS": "Setup master password", "SETUP_CONFIRM_PASS": "Confirm the password", "MASTER_PASS": "Master password", "BUTTON_NEXT": "Next", "BUTTON_SKIP": "Skip", + "BUTTON_RESET": "Reset", "INCORRECT_PASSWORD": "Invalid password", "FORM_ERRORS": { "PASS_REQUIRED": "Password is required", @@ -124,8 +125,8 @@ }, "SEED_PHRASE": { "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", - "BUTTON_CREATE_ACCOUNT" : "Create wallet", - "BUTTON_COPY" : "Copy" + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" }, "PROGRESS": { "ADD_WALLET": "Add wallet", diff --git a/src/gui/qt-daemon/html/assets/i18n/es.json b/src/gui/qt-daemon/html/assets/i18n/es.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/es.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/fi.json b/src/gui/qt-daemon/html/assets/i18n/fi.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/fi.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/fr.json b/src/gui/qt-daemon/html/assets/i18n/fr.json index 63275d82..62fab79d 100644 --- a/src/gui/qt-daemon/html/assets/i18n/fr.json +++ b/src/gui/qt-daemon/html/assets/i18n/fr.json @@ -1,15 +1,524 @@ { + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, "SIDEBAR": { - "TITLE": "Accounts2", - "ADD_NEW": "+ Add new2", - "SETTINGS": "Settings2", - "LOG_OUT": "Log out2" + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } }, "MAIN": { - "TITLE": "Create or open the wallet to start using Zano2", - "BUTTON_NEW_WALLET": "Create new wallet2", - "BUTTON_OPEN_WALLET": "Open existing wallet2", - "BUTTON_RESTORE_BACKUP": "Restore from backup2", - "HELP": "How to create wallet?2" + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" } } diff --git a/src/gui/qt-daemon/html/assets/i18n/he.json b/src/gui/qt-daemon/html/assets/i18n/he.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/he.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/hu.json b/src/gui/qt-daemon/html/assets/i18n/hu.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/hu.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/it.json b/src/gui/qt-daemon/html/assets/i18n/it.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/it.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/ja.json b/src/gui/qt-daemon/html/assets/i18n/ja.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/ja.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/ko.json b/src/gui/qt-daemon/html/assets/i18n/ko.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/ko.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/nl.json b/src/gui/qt-daemon/html/assets/i18n/nl.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/nl.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/no.json b/src/gui/qt-daemon/html/assets/i18n/no.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/no.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/pl.json b/src/gui/qt-daemon/html/assets/i18n/pl.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/pl.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/pt.json b/src/gui/qt-daemon/html/assets/i18n/pt.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/pt.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/ro.json b/src/gui/qt-daemon/html/assets/i18n/ro.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/ro.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/ru.json b/src/gui/qt-daemon/html/assets/i18n/ru.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/ru.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/sr.json b/src/gui/qt-daemon/html/assets/i18n/sr.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/sr.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/sv.json b/src/gui/qt-daemon/html/assets/i18n/sv.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/sv.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/tr.json b/src/gui/qt-daemon/html/assets/i18n/tr.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/tr.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/uk.json b/src/gui/qt-daemon/html/assets/i18n/uk.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/uk.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/vi.json b/src/gui/qt-daemon/html/assets/i18n/vi.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/vi.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/i18n/zh.json b/src/gui/qt-daemon/html/assets/i18n/zh.json new file mode 100644 index 00000000..62fab79d --- /dev/null +++ b/src/gui/qt-daemon/html/assets/i18n/zh.json @@ -0,0 +1,524 @@ +{ + "LOGIN": { + "SETUP_MASTER_PASS": "Setup master password", + "SETUP_CONFIRM_PASS": "Confirm the password", + "MASTER_PASS": "Master password", + "BUTTON_NEXT": "Next", + "BUTTON_SKIP": "Skip", + "INCORRECT_PASSWORD": "Invalid password", + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "CONFIRM_REQUIRED": "Confirmation is required", + "MISMATCH": "Mismatch" + } + }, + "COMMON": { + "BACK": "Go back" + }, + "BREADCRUMBS": { + "ADD_WALLET": "Add wallet", + "CREATE_WALLET": "Create new wallet", + "SAVE_PHRASE": "Save your seed phrase", + "OPEN_WALLET": "Open existing wallet", + "RESTORE_WALLET": "Restore from backup", + "WALLET_DETAILS": "Wallet details", + "ASSIGN_ALIAS": "Assign alias", + "EDIT_ALIAS": "Edit alias", + "TRANSFER_ALIAS": "Transfer alias", + "CONTRACTS": "Contracts", + "NEW_PURCHASE": "New purchase", + "OLD_PURCHASE": "Purchase" + }, + "SIDEBAR": { + "TITLE": "Wallets", + "ADD_NEW": "+ Add", + "ACCOUNT": { + "STAKING": "Staking", + "MESSAGES": "New offers/Messages", + "SYNCING": "Syncing wallet" + }, + "SETTINGS": "Settings", + "LOG_OUT": "Log out", + "SYNCHRONIZATION": { + "OFFLINE": "Offline", + "ONLINE": "Online", + "ERROR": "System error", + "COMPLETE": "Completion", + "SYNCING": "Syncing blockchain", + "LOADING": "Loading blockchain data" + }, + "UPDATE": { + "STANDARD": "Update available", + "STANDARD_TOOLTIP": "Get new update.
Update is recommended!", + "IMPORTANT": "Update available", + "IMPORTANT_HINT": "Important update!", + "IMPORTANT_TOOLTIP": "Get new update.
Important update!", + "CRITICAL": "Update available", + "CRITICAL_HINT": "Critical update!", + "CRITICAL_TOOLTIP": "Critical update available.Update strongly recommended!", + "TIME": "System time differs from network", + "TIME_TOOLTIP": "Wrong system time!
Check and repair your system time." + } + }, + "MAIN": { + "TITLE": "Create or open the wallet to start using Zano", + "BUTTON_NEW_WALLET": "Create new wallet", + "BUTTON_OPEN_WALLET": "Open existing wallet", + "BUTTON_RESTORE_BACKUP": "Restore from backup", + "HELP": "How to create wallet?", + "CHOOSE_PATH": "Please choose a path" + }, + "CREATE_WALLET": { + "NAME": "Wallet name", + "PASS": "Set wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "TITLE_SAVE": "Save the wallet file.", + "ERROR_CANNOT_SAVE_TOP": "Existing wallet files cannot be replaced or overwritten", + "ERROR_CANNOT_SAVE_SYSTEM": "Wallet files cannot be saved to the OS partition", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match" + } + }, + "OPEN_WALLET": { + "NAME": "Wallet name", + "PASS": "Wallet password", + "BUTTON": "Open wallet", + "WITH_ADDRESS_ALREADY_OPEN": "A wallet with this address is already open", + "FILE_NOT_FOUND1": "Wallet file not found", + "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + }, + "MODAL": { + "TITLE": "Type wallet password", + "LABEL": "Password to this wallet", + "OPEN": "Open wallet", + "SKIP": "Skip", + "NOT_FOUND": "Not found" + } + }, + "RESTORE_WALLET": { + "LABEL_NAME": "Wallet name", + "LABEL_PHRASE_KEY": "Seed phrase / private key", + "PASS": "Wallet password", + "CONFIRM": "Confirm wallet password", + "BUTTON_SELECT": "Select wallet location", + "BUTTON_CREATE": "Create wallet", + "NOT_CORRECT_FILE_OR_PASSWORD": "Invalid wallet file or password does not match", + "CHOOSE_PATH": "Please choose a path", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached", + "CONFIRM_NOT_MATCH": "Confirm password not match", + "KEY_REQUIRED": "Key is required", + "KEY_NOT_VALID": "Key not valid" + } + }, + "SEED_PHRASE": { + "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", + "BUTTON_CREATE_ACCOUNT": "Create wallet", + "BUTTON_COPY": "Copy" + }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, + "SETTINGS": { + "TITLE": "Settings", + "DARK_THEME": "Dark theme", + "WHITE_THEME": "White theme", + "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, + "MASTER_PASSWORD": { + "TITLE": "Update master password", + "OLD": "Old password", + "NEW": "New password", + "CONFIRM": "New password confirmation", + "BUTTON": "Save" + }, + "FORM_ERRORS": { + "PASS_REQUIRED": "Password is required", + "PASS_NOT_MATCH": "Old password not match", + "CONFIRM_NOT_MATCH": "Confirm password not match" + }, + "LAST_BUILD": "Current build: {{value}}", + "APP_LOG_TITLE": "Log level:" + }, + "WALLET": { + "REGISTER_ALIAS": "Register an alias", + "DETAILS": "Details", + "LOCK": "Lock", + "AVAILABLE_BALANCE": "Available {{available}} {{currency}}", + "LOCKED_BALANCE": "Locked {{locked}} {{currency}}", + "LOCKED_BALANCE_LINK": "What does that mean?", + "TABS": { + "SEND": "Send", + "RECEIVE": "Receive", + "HISTORY": "History", + "CONTRACTS": "Contracts", + "MESSAGES": "Messages", + "STAKING": "Staking" + } + }, + "WALLET_DETAILS": { + "LABEL_NAME": "Wallet name", + "LABEL_FILE_LOCATION": "Wallet file location", + "LABEL_SEED_PHRASE": "Seed phrase", + "SEED_PHRASE_HINT": "Click to reveal the seed phrase", + "BUTTON_SAVE": "Save", + "BUTTON_REMOVE": "Close wallet", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_DUPLICATE": "Name is duplicate", + "MAX_LENGTH": "Maximum name length reached" + } + }, + "ASSIGN_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias", + "TOOLTIP": "An alias is a shortened form or your account. An alias can only include Latin letters, numbers and characters “.” and “-”. It must start with “@”." + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment", + "TOOLTIP": "The comment will be visible to anyone who wants to make a payment to your alias. You can provide details about your business, contacts, or include any text. Comments can be edited later." + }, + "COST": "Cost to create alias {{value}} {{currency}}", + "BUTTON_ASSIGN": "Assign", + "BUTTON_CANCEL": "Cancel", + "FORM_ERRORS": { + "NAME_REQUIRED": "Name is required", + "NAME_WRONG": "Alias has wrong name", + "NAME_LENGTH": "The alias must be 6-25 characters long", + "NAME_EXISTS": "Alias name already exists", + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "ONE_ALIAS": "You can create only one alias per wallet", + "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" + }, + "EDIT_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "FORM_ERRORS": { + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" + }, + "COST": "Cost to edit alias {{value}} {{currency}}", + "BUTTON_EDIT": "Edit", + "BUTTON_CANCEL": "Cancel" + }, + "TRANSFER_ALIAS": { + "NAME": { + "LABEL": "Unique name", + "PLACEHOLDER": "@ Enter alias" + }, + "COMMENT": { + "LABEL": "Comment", + "PLACEHOLDER": "Enter comment" + }, + "ADDRESS": { + "LABEL": "The account to which the alias will be transferred", + "PLACEHOLDER": "Enter wallet address" + }, + "FORM_ERRORS": { + "WRONG_ADDRESS": "No wallet with this account exists", + "ALIAS_EXISTS": "This account already has an alias", + "NO_MONEY": "You do not have enough funds to transfer this alias" + }, + "COST": "Cost to transfer alias {{value}} {{currency}}", + "BUTTON_TRANSFER": "Transfer", + "BUTTON_CANCEL": "Cancel", + "REQUEST_SEND_REG": "The alias will be transferred within 10 minutes" + }, + "SEND": { + "ADDRESS": "Address", + "AMOUNT": "Amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "MIXIN": "Mixin", + "FEE": "Fee", + "HIDE": "Hide your wallet address from recipient", + "BUTTON": "Send", + "SUCCESS_SENT": "Transaction sent", + "FORM_ERRORS": { + "ADDRESS_REQUIRED": "Address is required", + "ADDRESS_NOT_VALID": "Address not valid", + "ALIAS_NOT_VALID": "Alias not valid", + "AMOUNT_REQUIRED": "Amount is required", + "AMOUNT_ZERO": "Amount is zero", + "FEE_REQUIRED": "Fee is required", + "FEE_MINIMUM": "Minimum fee: {{fee}}", + "MAX_LENGTH": "Maximum comment length reached" + } + }, + "HISTORY": { + "STATUS": "Status", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", + "LOCK_TOOLTIP": "Locked till {{date}}", + "SEND": "Sent", + "RECEIVED": "Received", + "DATE": "Date", + "AMOUNT": "Amount", + "FEE": "Fee", + "ADDRESS": "Address", + "DETAILS": { + "PAYMENT_ID": "Payment ID", + "ID": "Transaction ID", + "SIZE": "Transaction size", + "SIZE_VALUE": "{{value}} bytes", + "HEIGHT": "Height", + "CONFIRMATION": "Confirmation", + "INPUTS": "Inputs", + "OUTPUTS": "Outputs", + "COMMENT": "Comment" + }, + "TYPE_MESSAGES": { + "HIDDEN": "hidden", + "UNDEFINED": "Undefined", + "COMPLETE_BUYER": "Contract completed", + "COMPLETE_SELLER": "Contract completed", + "CREATE_ALIAS": "Fee for assigning alias", + "UPDATE_ALIAS": "Fee for editing alias", + "POW_REWARD": "POW reward", + "POS_REWARD": "POS reward", + "CREATE_CONTRACT": "Contract proposal", + "PLEDGE_CONTRACT": "Contract deposit", + "NULLIFY_CONTRACT": "Burn deposits", + "PROPOSAL_CANCEL_CONTRACT": "Cancellation request", + "CANCEL_CONTRACT": "Cancel and return deposits" + } + }, + "CONTRACTS": { + "EMPTY": "No active contracts", + "CONTRACTS": "Contracts", + "PURCHASE": "Purchase", + "SELL": "Sell", + "DATE": "Date", + "AMOUNT": "Amount", + "STATUS": "Status", + "COMMENTS": "Comments", + "PURCHASE_BUTTON": "New Purchase", + "LISTING_BUTTON": "Create listing", + "TIME_LEFT": { + "REMAINING_LESS_ONE": "Less than an hour to respond", + "REMAINING_ONE": "{{time}} hour remains", + "REMAINING_MANY": "{{time}} hours remain", + "REMAINING_MANY_ALT": "{{time}} hours remain", + "REMAINING_ONE_RESPONSE": "{{time}} hour remains", + "REMAINING_MANY_RESPONSE": "{{time}} hours remain", + "REMAINING_MANY_ALT_RESPONSE": "{{time}} hours remain", + "REMAINING_ONE_WAITING": "Waiting for {{time}} hour", + "REMAINING_MANY_WAITING": "Waiting for {{time}} hours", + "REMAINING_MANY_ALT_WAITING": "Waiting for {{time}} hours" + }, + "STATUS_MESSAGES": { + "SELLER": { + "NEW_CONTRACT": "New contract proposal", + "IGNORED": "You ignored contract proposal", + "ACCEPTED": "Contract started", + "WAIT": "Waiting for contract confirmation", + "WAITING_BUYER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "PROPOSAL_CANCEL": "New proposal to cancel contract and return deposits", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "You ignored cancellation proposal", + "EXPIRED": "Contract proposal has expired" + }, + "BUYER": { + "WAITING": "Waiting for response", + "IGNORED": "Seller ignored your contract proposal", + "ACCEPTED": "Seller accepted your contract proposal", + "WAIT": "Waiting for deposits confirmation", + "WAITING_SELLER": "Waiting for delivery", + "COMPLETED": "Contract completed", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned", + "WAITING_CANCEL": "Waiting for contract cancellation", + "BEING_CANCELLED": "Cancellation in progress", + "CANCELLED": "Contract canceled", + "IGNORED_CANCEL": "The seller ignored your proposal to cancel the contract", + "EXPIRED": "The contract proposal has expired" + } + } + }, + "PURCHASE": { + "DESCRIPTION": "Description", + "SELLER": "Seller", + "AMOUNT": "Amount", + "YOUR_DEPOSIT": "Your deposit", + "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", + "SAME_AMOUNT": "Same amount", + "COMMENT": "Comment", + "DETAILS": "Additional details", + "SEND_BUTTON": "Send", + "FORM_ERRORS": { + "DESC_REQUIRED": "Description required", + "DESC_MAXIMUM": "Maximum field length reached", + "SELLER_REQUIRED": "Address required", + "SELLER_NOT_VALID": "Invalid address", + "ALIAS_NOT_VALID": "Invalid alias", + "AMOUNT_REQUIRED": "Amount required", + "AMOUNT_ZERO": "Amount cannot be zero", + "YOUR_DEPOSIT_REQUIRED": "Deposit required", + "SELLER_DEPOSIT_REQUIRED": "Seller deposit required", + "SELLER_SAME": "Use separate account", + "COMMENT_MAXIMUM": "Maximum field length reached" + }, + "PROGRESS_NEW": "New purchase", + "PROGRESS_WAIT": "Awaiting reply", + "PROGRESS_RECEIVE": "Reply received", + "PROGRESS_COMPLETE": "Completed", + "FEE": "Fee", + "PAYMENT": "Payment ID", + "STATUS_MESSAGES": { + "NEW_PURCHASE": "New purchase", + "WAITING_SELLER": "Waiting for response", + "WAITING_BUYER": "Contract proposal received", + "WAITING_CONFIRMATION": "Waiting for deposits confirmation", + "WAITING_DELIVERY": "Waiting for delivery", + "COMPLETED": "Contract completed", + "IGNORED_BUYER": "Contract proposal ignored", + "IGNORED_SELLER": "The seller ignored your contract proposal", + "PROPOSAL_CANCEL_SELLER": "Cancellation request sent", + "PROPOSAL_CANCEL_BUYER": "Cancellation request received", + "BEING_CANCELLED": "Cancellation in progress", + "IGNORED_CANCEL_SELLER": "The seller ignored your proposal to cancel the contract", + "IGNORED_CANCEL_BUYER": "Contract cancellation proposal ignored", + "CANCELLED": "Contract canceled", + "EXPIRED": "Contract proposal expired", + "NOT_RECEIVED": "Delivery failed", + "NULLIFIED": "All deposits burned" + }, + "ACCEPT_STATE_WAIT_BIG": "Contract started", + "IGNORED_ACCEPT": "Contract proposal ignored", + "BURN_PROPOSAL": "Deposits burned", + "SUCCESS_FINISH_PROPOSAL": "Contract completed", + "SEND_CANCEL_PROPOSAL": "Cancellation request sent", + "IGNORED_CANCEL": "Contract cancellation proposal ignored", + "DEALS_CANCELED_WAIT": "Cancellation in progress", + "WAITING_TIME": "Response time", + "NEED_MONEY": "Insufficient funds", + "BUTTON_MAKE_PLEDGE": "Accept and make deposit", + "BUTTON_IGNORE": "Ignore and hide offer", + "BUTTON_NULLIFY": "Terminate and burn deposits", + "BUTTON_RECEIVED": "Complete and release deposits", + "BUTTON_CANCEL_BUYER": "Cancel and return deposits", + "BUTTON_NOT_CANCEL": "Ignore request", + "BUTTON_CANCEL_SELLER": "Confirm and return deposits", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to burn both deposits?", + "BUTTON_NULLIFY_SHORT": "Burn", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" + }, + "MESSAGES": { + "ADDRESS": "Address", + "MESSAGE": "Message", + "SEND_PLACEHOLDER": "Type a message...", + "SEND_BUTTON": "Send" + }, + "MODALS": { + "ERROR": "Error", + "SUCCESS": "Success", + "INFO": "Information", + "OK": "OK" + }, + "STAKING": { + "TITLE": "Staking", + "TITLE_PENDING": "Pending", + "TITLE_TOTAL": "Total", + "TITLE_PERIOD": "Time period:", + "PERIOD": { + "WEEK1": "1 week", + "WEEK2": "2 week", + "MONTH1": "1 month", + "MONTH3": "3 month", + "MONTH6": "6 month", + "YEAR": "1 year", + "ALL": "All" + }, + "TITLE_GROUP": "Group:", + "GROUP": { + "DAY": "day", + "WEEK": "week", + "MONTH": "month" + }, + "SWITCH": { + "ON": "ON", + "OFF": "OFF" + } + }, + "ERRORS": { + "NO_MONEY": "Not enough money", + "NOT_ENOUGH_MONEY": "Insufficient funds in account", + "CORE_BUSY": "Internal error: core is busy", + "DAEMON_BUSY": "Internal error: daemon is busy", + "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", + "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", + "TRANSFER_ATTEMPT": "There is no connection to Zano network", + "ACCESS_DENIED": "Access denied", + "TRANSACTION_ERROR": "Error. Transaction not completed.", + "BAD_ARG": "Invalid argument", + "WALLET_WRONG_ID": "Invalid wallet ID", + "WRONG_PASSWORD": "Invalid password", + "FILE_RESTORED": "The wallet file was corrupted. We have recovered the keys and the wallet from the blockchain", + "FILE_NOT_FOUND": "File not found", + "FILE_EXIST": "A file with that name already exists. Enter another name to save the file under", + "FILE_NOT_SAVED": "You cannot save a wallet file in this folder. Please choose another folder.", + "TX_TYPE_NORMAL": "Error. The payment from the wallet", + "TX_TYPE_NORMAL_TO": "to", + "TX_TYPE_NORMAL_END": "was not completed.", + "TX_TYPE_NEW_ALIAS": "Error. Failed to register alias to safe", + "TX_TYPE_NEW_ALIAS_END": "Please try again.", + "TX_TYPE_UPDATE_ALIAS": "Error. Failed to change comment to alias in safe", + "TX_TYPE_COIN_BASE": "Error. The payment was not completed." + }, + "CONTEXT_MENU": { + "COPY": "copy", + "PASTE": "paste", + "SELECT": "select all" + }, + "BACKEND_LOCALIZATION": { + "QUIT": "Quit", + "IS_RECEIVED": "", + "IS_CONFIRMED": "", + "INCOME_TRANSFER_UNCONFIRMED": "Incoming payment (not confirmed)", + "INCOME_TRANSFER_CONFIRMED": "Payment received", + "MINED": "Mined", + "LOCKED": "Blocked", + "IS_MINIMIZE": "Zano application is minimized to the system tray", + "RESTORE": "You can recover it by clicking or using the context menu", + "TRAY_MENU_SHOW": "Resize", + "TRAY_MENU_MINIMIZE": "Minimize" + } +} diff --git a/src/gui/qt-daemon/html/assets/scss/base/_base.scss b/src/gui/qt-daemon/html/assets/scss/base/_base.scss index d7aebcc7..f0625dbf 100644 --- a/src/gui/qt-daemon/html/assets/scss/base/_base.scss +++ b/src/gui/qt-daemon/html/assets/scss/base/_base.scss @@ -20,7 +20,8 @@ button { padding: 0 1rem; height: 4.2rem; - &:disabled:not(.transparent-button) { + &:disabled:not(.transparent-button), + &.blue-button_reset{ @include themify($themes) { background-color: themed(disabledButtonBackgroundColor); diff --git a/src/gui/qt-daemon/html/main.js b/src/gui/qt-daemon/html/main.js index b53d066e..c9923a74 100644 --- a/src/gui/qt-daemon/html/main.js +++ b/src/gui/qt-daemon/html/main.js @@ -200,7 +200,7 @@ module.exports = "
\r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n {{ 'SIDEBAR.SYNCHRONIZATION.LOADING' | translate }}\r\n {{ 'SIDEBAR.SYNCHRONIZATION.ERROR' | translate }}\r\n {{ 'SIDEBAR.SYNCHRONIZATION.COMPLETE' | translate }}\r\n \r\n
\r\n
\r\n\r\n\r\n {{ 'CONTEXT_MENU.COPY' | translate }}\r\n {{ 'CONTEXT_MENU.PASTE' | translate }}\r\n {{ 'CONTEXT_MENU.SELECT' | translate }}\r\n\r\n\r\n\r\n {{ 'CONTEXT_MENU.COPY' | translate }}\r\n\r\n\r\n\r\n {{ 'CONTEXT_MENU.PASTE' | translate }}\r\n {{ 'CONTEXT_MENU.SELECT' | translate }}\r\n\r\n\r\n\r\n\r\n" +module.exports = "\r\n\r\n
\r\n \r\n
\r\n {{ 'SIDEBAR.SYNCHRONIZATION.LOADING' | translate }}\r\n {{ 'SIDEBAR.SYNCHRONIZATION.ERROR' | translate }}\r\n {{ 'SIDEBAR.SYNCHRONIZATION.COMPLETE' | translate }}\r\n \r\n
\r\n
\r\n\r\n {{ 'CONTEXT_MENU.COPY' | translate }}\r\n {{ 'CONTEXT_MENU.PASTE' | translate }}\r\n {{ 'CONTEXT_MENU.SELECT' | translate }}\r\n\r\n\r\n\r\n {{ 'CONTEXT_MENU.COPY' | translate }}\r\n\r\n\r\n\r\n {{ 'CONTEXT_MENU.PASTE' | translate }}\r\n {{ 'CONTEXT_MENU.SELECT' | translate }}\r\n\r\n\r\n\r\n\r\n" /***/ }), @@ -2704,7 +2711,7 @@ module.exports = "\r\n\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ".form-assign {\n margin: 2.4rem 0; }\n .form-assign .alias-name {\n width: 50%; }\n .form-assign .alias-cost {\n font-size: 1.3rem;\n margin-top: 2rem; }\n .form-assign .wrap-buttons {\n display: flex;\n justify-content: space-between;\n margin: 2.5rem -0.7rem; }\n .form-assign .wrap-buttons button {\n margin: 0 0.7rem;\n width: 15rem; }\n .assign-alias-tooltip {\n font-size: 1.3rem;\n line-height: 2rem;\n padding: 1rem 1.5rem;\n max-width: 46rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvYXNzaWduLWFsaWFzL0Q6XFxQcm9qZWN0c1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXGFzc2lnbi1hbGlhc1xcYXNzaWduLWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQTtFQUtsQjtFQUNFLGlCQUFpQjtFQUNqQixpQkFBaUI7RUFDakIsb0JBQW9CO0VBQ3BCLGdCQUFnQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvYXNzaWduLWFsaWFzL2Fzc2lnbi1hbGlhcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWFzc2lnbiB7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuXHJcbiAgLmFsaWFzLW5hbWUge1xyXG4gICAgd2lkdGg6IDUwJTtcclxuICB9XHJcblxyXG4gIC5hbGlhcy1jb3N0IHtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbWFyZ2luLXRvcDogMnJlbTtcclxuICB9XHJcblxyXG4gIC53cmFwLWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIG1hcmdpbjogMi41cmVtIC0wLjdyZW07XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAwIDAuN3JlbTtcclxuICAgICAgd2lkdGg6IDE1cmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmFzc2lnbi1hbGlhcy10b29sdGlwIHtcclxuICBmb250LXNpemU6IDEuM3JlbTtcclxuICBsaW5lLWhlaWdodDogMnJlbTtcclxuICBwYWRkaW5nOiAxcmVtIDEuNXJlbTtcclxuICBtYXgtd2lkdGg6IDQ2cmVtO1xyXG59XHJcbiJdfQ== */" +module.exports = ".form-assign {\n margin: 2.4rem 0; }\n .form-assign .alias-name {\n width: 50%; }\n .form-assign .alias-cost {\n font-size: 1.3rem;\n margin-top: 2rem; }\n .form-assign .wrap-buttons {\n display: flex;\n justify-content: space-between;\n margin: 2.5rem -0.7rem; }\n .form-assign .wrap-buttons button {\n margin: 0 0.7rem;\n width: 15rem; }\n .assign-alias-tooltip {\n font-size: 1.3rem;\n line-height: 2rem;\n padding: 1rem 1.5rem;\n max-width: 46rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvYXNzaWduLWFsaWFzL0U6XFxaYW5vXFxjaGVja1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXGFzc2lnbi1hbGlhc1xcYXNzaWduLWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQTtFQUtsQjtFQUNFLGlCQUFpQjtFQUNqQixpQkFBaUI7RUFDakIsb0JBQW9CO0VBQ3BCLGdCQUFnQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvYXNzaWduLWFsaWFzL2Fzc2lnbi1hbGlhcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWFzc2lnbiB7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuXHJcbiAgLmFsaWFzLW5hbWUge1xyXG4gICAgd2lkdGg6IDUwJTtcclxuICB9XHJcblxyXG4gIC5hbGlhcy1jb3N0IHtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbWFyZ2luLXRvcDogMnJlbTtcclxuICB9XHJcblxyXG4gIC53cmFwLWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIG1hcmdpbjogMi41cmVtIC0wLjdyZW07XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAwIDAuN3JlbTtcclxuICAgICAgd2lkdGg6IDE1cmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmFzc2lnbi1hbGlhcy10b29sdGlwIHtcclxuICBmb250LXNpemU6IDEuM3JlbTtcclxuICBsaW5lLWhlaWdodDogMnJlbTtcclxuICBwYWRkaW5nOiAxcmVtIDEuNXJlbTtcclxuICBtYXgtd2lkdGg6IDQ2cmVtO1xyXG59XHJcbiJdfQ== */" /***/ }), @@ -3815,7 +3822,7 @@ module.exports = "
\r\n\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ":host {\n position: relative; }\n\n.form-create {\n margin: 2.4rem 0;\n width: 50%; }\n\n.form-create .wrap-buttons {\n display: flex;\n margin: 2.5rem -0.7rem; }\n\n.form-create .wrap-buttons button {\n margin: 0 0.7rem; }\n\n.form-create .wrap-buttons button.transparent-button {\n flex-basis: 50%; }\n\n.form-create .wrap-buttons button.select-button {\n flex-basis: 60%; }\n\n.form-create .wrap-buttons button.create-button {\n flex: 1 1 50%; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY3JlYXRlLXdhbGxldC9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxjcmVhdGUtd2FsbGV0XFxjcmVhdGUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTs7QUFGWjtJQUtJLGFBQWE7SUFDYixzQkFBc0IsRUFBQTs7QUFOMUI7TUFTTSxnQkFBZ0IsRUFBQTs7QUFUdEI7UUFZUSxlQUFlLEVBQUE7O0FBWnZCO1FBZ0JRLGVBQWUsRUFBQTs7QUFoQnZCO1FBb0JRLGFBQWEsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2NyZWF0ZS13YWxsZXQvY3JlYXRlLXdhbGxldC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5mb3JtLWNyZWF0ZSB7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuICB3aWR0aDogNTAlO1xyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcblxyXG4gICAgICAmLnRyYW5zcGFyZW50LWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleC1iYXNpczogNTAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnNlbGVjdC1idXR0b24ge1xyXG4gICAgICAgIGZsZXgtYmFzaXM6IDYwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5jcmVhdGUtYnV0dG9uIHtcclxuICAgICAgICBmbGV4OiAxIDEgNTAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */" +module.exports = ":host {\n position: relative; }\n\n.form-create {\n margin: 2.4rem 0;\n width: 50%; }\n\n.form-create .wrap-buttons {\n display: flex;\n margin: 2.5rem -0.7rem; }\n\n.form-create .wrap-buttons button {\n margin: 0 0.7rem; }\n\n.form-create .wrap-buttons button.transparent-button {\n flex-basis: 50%; }\n\n.form-create .wrap-buttons button.select-button {\n flex-basis: 60%; }\n\n.form-create .wrap-buttons button.create-button {\n flex: 1 1 50%; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY3JlYXRlLXdhbGxldC9FOlxcWmFub1xcY2hlY2tcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxjcmVhdGUtd2FsbGV0XFxjcmVhdGUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTs7QUFGWjtJQUtJLGFBQWE7SUFDYixzQkFBc0IsRUFBQTs7QUFOMUI7TUFTTSxnQkFBZ0IsRUFBQTs7QUFUdEI7UUFZUSxlQUFlLEVBQUE7O0FBWnZCO1FBZ0JRLGVBQWUsRUFBQTs7QUFoQnZCO1FBb0JRLGFBQWEsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2NyZWF0ZS13YWxsZXQvY3JlYXRlLXdhbGxldC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5mb3JtLWNyZWF0ZSB7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuICB3aWR0aDogNTAlO1xyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcblxyXG4gICAgICAmLnRyYW5zcGFyZW50LWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleC1iYXNpczogNTAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnNlbGVjdC1idXR0b24ge1xyXG4gICAgICAgIGZsZXgtYmFzaXM6IDYwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5jcmVhdGUtYnV0dG9uIHtcclxuICAgICAgICBmbGV4OiAxIDEgNTAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */" /***/ }), @@ -4067,7 +4074,7 @@ module.exports = "
\r\n\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ".form-edit {\n margin: 2.4rem 0; }\n .form-edit .alias-name {\n width: 50%; }\n .form-edit .alias-cost {\n font-size: 1.3rem;\n margin-top: 2rem; }\n .form-edit .wrap-buttons {\n display: flex;\n justify-content: space-between;\n margin: 2.5rem -0.7rem; }\n .form-edit .wrap-buttons button {\n margin: 0 0.7rem;\n width: 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZWRpdC1hbGlhcy9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxlZGl0LWFsaWFzXFxlZGl0LWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQSIsImZpbGUiOiJzcmMvYXBwL2VkaXQtYWxpYXMvZWRpdC1hbGlhcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWVkaXQge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcblxyXG4gIC5hbGlhcy1uYW1lIHtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgfVxyXG5cclxuICAuYWxpYXMtY29zdCB7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbi10b3A6IDJyZW07XHJcbiAgfVxyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcbiAgICAgIHdpZHRoOiAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */" +module.exports = ".form-edit {\n margin: 2.4rem 0; }\n .form-edit .alias-name {\n width: 50%; }\n .form-edit .alias-cost {\n font-size: 1.3rem;\n margin-top: 2rem; }\n .form-edit .wrap-buttons {\n display: flex;\n justify-content: space-between;\n margin: 2.5rem -0.7rem; }\n .form-edit .wrap-buttons button {\n margin: 0 0.7rem;\n width: 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZWRpdC1hbGlhcy9FOlxcWmFub1xcY2hlY2tcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxlZGl0LWFsaWFzXFxlZGl0LWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQSIsImZpbGUiOiJzcmMvYXBwL2VkaXQtYWxpYXMvZWRpdC1hbGlhcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWVkaXQge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcblxyXG4gIC5hbGlhcy1uYW1lIHtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgfVxyXG5cclxuICAuYWxpYXMtY29zdCB7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbi10b3A6IDJyZW07XHJcbiAgfVxyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcbiAgICAgIHdpZHRoOiAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */" /***/ }), @@ -4181,7 +4188,7 @@ module.exports = "
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'LOGIN.FORM_ERRORS.MISMATCH' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n\r\n \r\n\r\n
\r\n\r\n\r\n" +module.exports = "
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'LOGIN.FORM_ERRORS.MISMATCH' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
" /***/ }), @@ -4295,7 +4302,7 @@ module.exports = "
\r\n\r\n
\r\ /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ":host {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%; }\n :host .content {\n display: flex; }\n :host .content .wrap-login {\n margin: auto;\n width: 100%;\n max-width: 40rem; }\n :host .content .wrap-login .logo {\n background: url('logo.svg') no-repeat center;\n width: 100%;\n height: 15rem; }\n :host .content .wrap-login .form-login {\n display: flex;\n flex-direction: column; }\n :host .content .wrap-login .form-login .wrap-button {\n display: flex;\n align-items: center;\n justify-content: space-between; }\n :host .content .wrap-login .form-login .wrap-button button {\n margin: 2.5rem 0; }\n :host .content .wrap-login .form-login button {\n margin: 2.5rem auto;\n width: 100%;\n max-width: 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbG9naW4vRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcbG9naW5cXGxvZ2luLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZUFBZTtFQUNmLE1BQU07RUFDTixPQUFPO0VBQ1AsV0FBVztFQUNYLFlBQVksRUFBQTtFQUxkO0lBUUksYUFBYSxFQUFBO0VBUmpCO01BV00sWUFBWTtNQUNaLFdBQVc7TUFDWCxnQkFBZ0IsRUFBQTtFQWJ0QjtRQWdCUSw0Q0FBNkQ7UUFDN0QsV0FBVztRQUNYLGFBQWEsRUFBQTtFQWxCckI7UUFzQlEsYUFBYTtRQUNiLHNCQUFzQixFQUFBO0VBdkI5QjtVQTBCVSxhQUFhO1VBQ2IsbUJBQW1CO1VBQ25CLDhCQUE4QixFQUFBO0VBNUJ4QztZQStCWSxnQkFBZ0IsRUFBQTtFQS9CNUI7VUFvQ1UsbUJBQW1CO1VBQ25CLFdBQVc7VUFDWCxnQkFBZ0IsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcblxyXG4gIC5jb250ZW50IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcblxyXG4gICAgLndyYXAtbG9naW4ge1xyXG4gICAgICBtYXJnaW46IGF1dG87XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBtYXgtd2lkdGg6IDQwcmVtO1xyXG5cclxuICAgICAgLmxvZ28ge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvbG9nby5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgaGVpZ2h0OiAxNXJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmZvcm0tbG9naW4ge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHJcbiAgICAgICAgLndyYXAtYnV0dG9uIHtcclxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cclxuICAgICAgICAgIGJ1dHRvbiB7XHJcbiAgICAgICAgICAgIG1hcmdpbjogMi41cmVtIDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBidXR0b24ge1xyXG4gICAgICAgICAgbWFyZ2luOiAyLjVyZW0gYXV0bztcclxuICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgbWF4LXdpZHRoOiAxNXJlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */" +module.exports = ":host {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%; }\n :host .content {\n display: flex; }\n :host .content .wrap-login {\n margin: auto;\n width: 100%;\n max-width: 40rem; }\n :host .content .wrap-login .logo {\n background: url('logo.svg') no-repeat center;\n width: 100%;\n height: 15rem; }\n :host .content .wrap-login .form-login {\n display: flex;\n flex-direction: column; }\n :host .content .wrap-login .form-login .wrap-button {\n display: flex;\n align-items: center;\n justify-content: space-between; }\n :host .content .wrap-login .form-login .wrap-button button {\n margin: 2.5rem 0; }\n :host .content .wrap-login .form-login button {\n margin: 2.5rem auto;\n width: 100%;\n max-width: 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbG9naW4vRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcbG9naW5cXGxvZ2luLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZUFBZTtFQUNmLE1BQU07RUFDTixPQUFPO0VBQ1AsV0FBVztFQUNYLFlBQVksRUFBQTtFQUxkO0lBUUksYUFBYSxFQUFBO0VBUmpCO01BV00sWUFBWTtNQUNaLFdBQVc7TUFDWCxnQkFBZ0IsRUFBQTtFQWJ0QjtRQWdCUSw0Q0FBNkQ7UUFDN0QsV0FBVztRQUNYLGFBQWEsRUFBQTtFQWxCckI7UUFzQlEsYUFBYTtRQUNiLHNCQUFzQixFQUFBO0VBdkI5QjtVQTBCVSxhQUFhO1VBQ2IsbUJBQW1CO1VBQ25CLDhCQUE4QixFQUFBO0VBNUJ4QztZQStCWSxnQkFBZ0IsRUFBQTtFQS9CNUI7VUFvQ1UsbUJBQW1CO1VBQ25CLFdBQVc7VUFDWCxnQkFBZ0IsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcblxyXG4gIC5jb250ZW50IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcblxyXG4gICAgLndyYXAtbG9naW4ge1xyXG4gICAgICBtYXJnaW46IGF1dG87XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBtYXgtd2lkdGg6IDQwcmVtO1xyXG5cclxuICAgICAgLmxvZ28ge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvbG9nby5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgaGVpZ2h0OiAxNXJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmZvcm0tbG9naW4ge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHJcbiAgICAgICAgLndyYXAtYnV0dG9uIHtcclxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cclxuICAgICAgICAgIGJ1dHRvbiB7XHJcbiAgICAgICAgICAgIG1hcmdpbjogMi41cmVtIDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBidXR0b24ge1xyXG4gICAgICAgICAgbWFyZ2luOiAyLjVyZW0gYXV0bztcclxuICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgbWF4LXdpZHRoOiAxNXJlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */" /***/ }), @@ -4362,10 +4369,12 @@ var LoginComponent = /** @class */ (function () { LoginComponent.prototype.onSubmitCreatePass = function () { var _this = this; if (this.regForm.valid) { - this.variablesService.appPass = this.regForm.get('password').value; - this.backend.storeSecureAppData(function (status, data) { + this.variablesService.appPass = this.regForm.get('password').value; //the pass what was written in input of login form by user + this.backend.setMasterPassword({ pass: this.variablesService.appPass }, function (status, data) { if (status) { + _this.backend.storeSecureAppData({ pass: _this.variablesService.appPass }); _this.variablesService.appLogin = true; + _this.variablesService.dataIsLoaded = true; _this.variablesService.startCountdown(); _this.ngZone.run(function () { _this.router.navigate(['/']); @@ -4385,85 +4394,109 @@ var LoginComponent = /** @class */ (function () { _this.router.navigate(['/']); }); }; + LoginComponent.prototype.dropSecureAppData = function () { + var _this = this; + this.backend.dropSecureAppData(function () { + _this.onSkipCreatePass(); + }); + }; LoginComponent.prototype.onSubmitAuthPass = function () { var _this = this; if (this.authForm.valid) { - var appPass_1 = this.authForm.get('password').value; - this.backend.getSecureAppData({ pass: appPass_1 }, function (status, data) { - if (!data.error_code) { - _this.variablesService.appLogin = true; - _this.variablesService.startCountdown(); - _this.variablesService.appPass = appPass_1; - if (_this.variablesService.wallets.length) { - _this.ngZone.run(function () { - _this.router.navigate(['/wallet/' + _this.variablesService.wallets[0].wallet_id]); - }); - return; - } - if (Object.keys(data).length !== 0) { - var openWallets_1 = 0; - var runWallets_1 = 0; - data.forEach(function (wallet, wallet_index) { - _this.backend.openWallet(wallet.path, wallet.pass, true, function (open_status, open_data, open_error) { - if (open_status || open_error === 'FILE_RESTORED') { - openWallets_1++; - _this.ngZone.run(function () { - var new_wallet = new _helpers_models_wallet_model__WEBPACK_IMPORTED_MODULE_6__["Wallet"](open_data.wallet_id, wallet.name, wallet.pass, open_data['wi'].path, open_data['wi'].address, open_data['wi'].balance, open_data['wi'].unlocked_balance, open_data['wi'].mined_total, open_data['wi'].tracking_hey); - new_wallet.alias = _this.backend.getWalletAlias(new_wallet.address); - if (wallet.staking) { - new_wallet.staking = true; - _this.backend.startPosMining(new_wallet.wallet_id); - } - else { - new_wallet.staking = false; - } - if (open_data.recent_history && open_data.recent_history.history) { - new_wallet.prepareHistory(open_data.recent_history.history); - } - _this.backend.getContracts(open_data.wallet_id, function (contracts_status, contracts_data) { - if (contracts_status && contracts_data.hasOwnProperty('contracts')) { - _this.ngZone.run(function () { - new_wallet.prepareContractsAfterOpen(contracts_data.contracts, _this.variablesService.exp_med_ts, _this.variablesService.height_app, _this.variablesService.settings.viewedContracts, _this.variablesService.settings.notViewedContracts); - }); - } - }); - _this.variablesService.wallets.push(new_wallet); - if (_this.variablesService.wallets.length === 1) { - _this.router.navigate(['/wallet/' + _this.variablesService.wallets[0].wallet_id]); - } - }); - _this.backend.runWallet(open_data.wallet_id, function (run_status) { - if (run_status) { - runWallets_1++; - } - else { - if (wallet_index === data.length - 1 && runWallets_1 === 0) { - _this.ngZone.run(function () { - _this.router.navigate(['/']); - }); - } - } - }); - } - else { - if (wallet_index === data.length - 1 && openWallets_1 === 0) { - _this.ngZone.run(function () { - _this.router.navigate(['/']); - }); - } - } - }); - }); - } - else { + this.variablesService.appPass = this.authForm.get('password').value; + if (this.variablesService.dataIsLoaded) { + this.backend.checkMasterPassword({ pass: this.variablesService.appPass }, function (status, data) { + if (status) { + _this.variablesService.appLogin = true; + _this.variablesService.startCountdown(); _this.ngZone.run(function () { _this.router.navigate(['/']); }); } - } - }); + }); + } + else { + this.getWalletData(this.variablesService.appPass); + } } }; + LoginComponent.prototype.getWalletData = function (appPass) { + var _this = this; + this.backend.getSecureAppData({ pass: appPass }, function (status, data) { + if (!data.error_code) { + _this.variablesService.appLogin = true; + _this.variablesService.dataIsLoaded = true; + _this.variablesService.startCountdown(); + _this.variablesService.appPass = appPass; + if (_this.variablesService.wallets.length) { + _this.ngZone.run(function () { + _this.router.navigate(['/wallet/' + _this.variablesService.wallets[0].wallet_id]); + }); + return; + } + if (Object.keys(data).length !== 0) { + var openWallets_1 = 0; + var runWallets_1 = 0; + data.forEach(function (wallet, wallet_index) { + _this.backend.openWallet(wallet.path, wallet.pass, true, function (open_status, open_data, open_error) { + if (open_status || open_error === 'FILE_RESTORED') { + openWallets_1++; + _this.ngZone.run(function () { + var new_wallet = new _helpers_models_wallet_model__WEBPACK_IMPORTED_MODULE_6__["Wallet"](open_data.wallet_id, wallet.name, wallet.pass, open_data['wi'].path, open_data['wi'].address, open_data['wi'].balance, open_data['wi'].unlocked_balance, open_data['wi'].mined_total, open_data['wi'].tracking_hey); + new_wallet.alias = _this.backend.getWalletAlias(new_wallet.address); + if (wallet.staking) { + new_wallet.staking = true; + _this.backend.startPosMining(new_wallet.wallet_id); + } + else { + new_wallet.staking = false; + } + if (open_data.recent_history && open_data.recent_history.history) { + new_wallet.prepareHistory(open_data.recent_history.history); + } + _this.backend.getContracts(open_data.wallet_id, function (contracts_status, contracts_data) { + if (contracts_status && contracts_data.hasOwnProperty('contracts')) { + _this.ngZone.run(function () { + new_wallet.prepareContractsAfterOpen(contracts_data.contracts, _this.variablesService.exp_med_ts, _this.variablesService.height_app, _this.variablesService.settings.viewedContracts, _this.variablesService.settings.notViewedContracts); + }); + } + }); + _this.variablesService.wallets.push(new_wallet); + if (_this.variablesService.wallets.length === 1) { + _this.router.navigate(['/wallet/' + _this.variablesService.wallets[0].wallet_id]); + } + }); + _this.backend.runWallet(open_data.wallet_id, function (run_status) { + if (run_status) { + runWallets_1++; + } + else { + if (wallet_index === data.length - 1 && runWallets_1 === 0) { + _this.ngZone.run(function () { + _this.router.navigate(['/']); + }); + } + } + }); + } + else { + if (wallet_index === data.length - 1 && openWallets_1 === 0) { + _this.ngZone.run(function () { + _this.router.navigate(['/']); + }); + } + } + }); + }); + } + else { + _this.ngZone.run(function () { + _this.router.navigate(['/']); + }); + } + } + }); + }; LoginComponent.prototype.ngOnDestroy = function () { this.queryRouting.unsubscribe(); }; @@ -4505,7 +4538,7 @@ module.exports = "
\r\n\r\n
\r\n\r\n
\r\n

{{ 'OPEN_WALLET /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ":host {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.25); }\n\n.modal {\n display: flex;\n flex-direction: column;\n background-position: center;\n background-size: 200%;\n padding: 2rem;\n width: 34rem; }\n\n.modal .title {\n font-size: 1.8rem;\n text-align: center; }\n\n.modal .open-form .wallet-path {\n font-size: 1.3rem;\n margin: 5rem 0 2rem; }\n\n.modal .open-form .wrap-button {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 2rem -2rem 0; }\n\n.modal .open-form .wrap-button button {\n flex: 1 0 0;\n margin: 0 2rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3Blbi13YWxsZXQtbW9kYWwvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcb3Blbi13YWxsZXQtbW9kYWxcXG9wZW4td2FsbGV0LW1vZGFsLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZUFBZTtFQUNmLE1BQU07RUFDTixTQUFTO0VBQ1QsT0FBTztFQUNQLFFBQVE7RUFDUixhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLHVCQUF1QjtFQUN2QixxQ0FBcUMsRUFBQTs7QUFHdkM7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLDJCQUEyQjtFQUMzQixxQkFBcUI7RUFDckIsYUFBYTtFQUNiLFlBQVksRUFBQTs7QUFOZDtJQVNJLGlCQUFpQjtJQUNqQixrQkFBa0IsRUFBQTs7QUFWdEI7SUFnQk0saUJBQWlCO0lBQ2pCLG1CQUFtQixFQUFBOztBQWpCekI7SUFxQk0sYUFBYTtJQUNiLG1CQUFtQjtJQUNuQiw4QkFBOEI7SUFDOUIsb0JBQW9CLEVBQUE7O0FBeEIxQjtNQTJCUSxXQUFXO01BQ1gsY0FBZSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvb3Blbi13YWxsZXQtbW9kYWwvb3Blbi13YWxsZXQtbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHRvcDogMDtcclxuICBib3R0b206IDA7XHJcbiAgbGVmdDogMDtcclxuICByaWdodDogMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTtcclxufVxyXG5cclxuLm1vZGFsIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xyXG4gIGJhY2tncm91bmQtc2l6ZTogMjAwJTtcclxuICBwYWRkaW5nOiAycmVtO1xyXG4gIHdpZHRoOiAzNHJlbTtcclxuXHJcbiAgLnRpdGxlIHtcclxuICAgIGZvbnQtc2l6ZTogMS44cmVtO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIH1cclxuXHJcbiAgLm9wZW4tZm9ybSB7XHJcblxyXG4gICAgLndhbGxldC1wYXRoIHtcclxuICAgICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICAgIG1hcmdpbjogNXJlbSAwIDJyZW07XHJcbiAgICB9XHJcblxyXG4gICAgLndyYXAtYnV0dG9uIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICBtYXJnaW46IDJyZW0gLTJyZW0gMDtcclxuXHJcbiAgICAgIGJ1dHRvbiB7XHJcbiAgICAgICAgZmxleDogMSAwIDA7XHJcbiAgICAgICAgbWFyZ2luOiAwIDJyZW0gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */" +module.exports = ":host {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.25); }\n\n.modal {\n display: flex;\n flex-direction: column;\n background-position: center;\n background-size: 200%;\n padding: 2rem;\n width: 34rem; }\n\n.modal .title {\n font-size: 1.8rem;\n text-align: center; }\n\n.modal .open-form .wallet-path {\n font-size: 1.3rem;\n margin: 5rem 0 2rem; }\n\n.modal .open-form .wrap-button {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 2rem -2rem 0; }\n\n.modal .open-form .wrap-button button {\n flex: 1 0 0;\n margin: 0 2rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3Blbi13YWxsZXQtbW9kYWwvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcb3Blbi13YWxsZXQtbW9kYWxcXG9wZW4td2FsbGV0LW1vZGFsLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZUFBZTtFQUNmLE1BQU07RUFDTixTQUFTO0VBQ1QsT0FBTztFQUNQLFFBQVE7RUFDUixhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLHVCQUF1QjtFQUN2QixxQ0FBcUMsRUFBQTs7QUFHdkM7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLDJCQUEyQjtFQUMzQixxQkFBcUI7RUFDckIsYUFBYTtFQUNiLFlBQVksRUFBQTs7QUFOZDtJQVNJLGlCQUFpQjtJQUNqQixrQkFBa0IsRUFBQTs7QUFWdEI7SUFnQk0saUJBQWlCO0lBQ2pCLG1CQUFtQixFQUFBOztBQWpCekI7SUFxQk0sYUFBYTtJQUNiLG1CQUFtQjtJQUNuQiw4QkFBOEI7SUFDOUIsb0JBQW9CLEVBQUE7O0FBeEIxQjtNQTJCUSxXQUFXO01BQ1gsY0FBZSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvb3Blbi13YWxsZXQtbW9kYWwvb3Blbi13YWxsZXQtbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHRvcDogMDtcclxuICBib3R0b206IDA7XHJcbiAgbGVmdDogMDtcclxuICByaWdodDogMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTtcclxufVxyXG5cclxuLm1vZGFsIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xyXG4gIGJhY2tncm91bmQtc2l6ZTogMjAwJTtcclxuICBwYWRkaW5nOiAycmVtO1xyXG4gIHdpZHRoOiAzNHJlbTtcclxuXHJcbiAgLnRpdGxlIHtcclxuICAgIGZvbnQtc2l6ZTogMS44cmVtO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIH1cclxuXHJcbiAgLm9wZW4tZm9ybSB7XHJcblxyXG4gICAgLndhbGxldC1wYXRoIHtcclxuICAgICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICAgIG1hcmdpbjogNXJlbSAwIDJyZW07XHJcbiAgICB9XHJcblxyXG4gICAgLndyYXAtYnV0dG9uIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICBtYXJnaW46IDJyZW0gLTJyZW0gMDtcclxuXHJcbiAgICAgIGJ1dHRvbiB7XHJcbiAgICAgICAgZmxleDogMSAwIDA7XHJcbiAgICAgICAgbWFyZ2luOiAwIDJyZW0gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */" /***/ }), @@ -4848,7 +4881,7 @@ module.exports = "
\r\n\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ".form-open {\n margin: 2.4rem 0;\n width: 50%; }\n .form-open .wrap-buttons {\n display: flex;\n margin: 2.5rem -0.7rem; }\n .form-open .wrap-buttons button {\n margin: 0 0.7rem; }\n .form-open .wrap-buttons button.create-button {\n flex: 1 1 50%; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3Blbi13YWxsZXQvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcb3Blbi13YWxsZXRcXG9wZW4td2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTtFQUZaO0lBS0ksYUFBYTtJQUNiLHNCQUFzQixFQUFBO0VBTjFCO01BU00sZ0JBQWdCLEVBQUE7RUFUdEI7UUFZUSxhQUFhLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9vcGVuLXdhbGxldC9vcGVuLXdhbGxldC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLW9wZW4ge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBtYXJnaW46IDAgMC43cmVtO1xyXG5cclxuICAgICAgJi5jcmVhdGUtYnV0dG9uIHtcclxuICAgICAgICBmbGV4OiAxIDEgNTAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */" +module.exports = ".form-open {\n margin: 2.4rem 0;\n width: 50%; }\n .form-open .wrap-buttons {\n display: flex;\n margin: 2.5rem -0.7rem; }\n .form-open .wrap-buttons button {\n margin: 0 0.7rem; }\n .form-open .wrap-buttons button.create-button {\n flex: 1 1 50%; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3Blbi13YWxsZXQvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcb3Blbi13YWxsZXRcXG9wZW4td2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTtFQUZaO0lBS0ksYUFBYTtJQUNiLHNCQUFzQixFQUFBO0VBTjFCO01BU00sZ0JBQWdCLEVBQUE7RUFUdEI7UUFZUSxhQUFhLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9vcGVuLXdhbGxldC9vcGVuLXdhbGxldC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLW9wZW4ge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBtYXJnaW46IDAgMC43cmVtO1xyXG5cclxuICAgICAgJi5jcmVhdGUtYnV0dG9uIHtcclxuICAgICAgICBmbGV4OiAxIDEgNTAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */" /***/ }), @@ -5030,7 +5063,7 @@ module.exports = "
\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ":host {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.head {\n flex: 0 0 auto;\n box-sizing: content-box;\n margin: -3rem -3rem 0; }\n\n.form-purchase {\n flex: 1 1 auto;\n margin: 1.5rem -3rem 0;\n padding: 0 3rem;\n overflow-y: overlay; }\n\n.form-purchase .input-blocks-row {\n display: flex; }\n\n.form-purchase .input-blocks-row .input-block {\n flex-basis: 50%; }\n\n.form-purchase .input-blocks-row .input-block:first-child {\n margin-right: 1.5rem; }\n\n.form-purchase .input-blocks-row .input-block:last-child {\n margin-left: 1.5rem; }\n\n.form-purchase .input-blocks-row .input-block .checkbox-block {\n display: flex; }\n\n.form-purchase .purchase-select {\n display: flex;\n align-items: center;\n background: transparent;\n border: none;\n font-size: 1.3rem;\n line-height: 1.3rem;\n margin: 1.5rem 0 0;\n padding: 0;\n width: 100%;\n max-width: 15rem;\n height: 1.3rem; }\n\n.form-purchase .purchase-select .arrow {\n margin-left: 1rem;\n width: 0.8rem;\n height: 0.8rem; }\n\n.form-purchase .purchase-select .arrow.down {\n -webkit-mask: url('arrow-down.svg') no-repeat center;\n mask: url('arrow-down.svg') no-repeat center; }\n\n.form-purchase .purchase-select .arrow.up {\n -webkit-mask: url('arrow-up.svg') no-repeat center;\n mask: url('arrow-up.svg') no-repeat center; }\n\n.form-purchase .additional-details {\n display: flex;\n margin-top: 1.5rem;\n padding: 0.5rem 0 2rem; }\n\n.form-purchase .additional-details > div {\n flex-basis: 25%; }\n\n.form-purchase .additional-details > div:first-child {\n padding-left: 1.5rem;\n padding-right: 1rem; }\n\n.form-purchase .additional-details > div:last-child {\n padding-left: 1rem;\n padding-right: 1.5rem; }\n\n.form-purchase .purchase-states {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n font-size: 1.2rem;\n line-height: 2.9rem; }\n\n.form-purchase .send-button {\n margin: 2.4rem 0;\n width: 100%;\n max-width: 15rem; }\n\n.form-purchase .purchase-buttons {\n display: flex;\n justify-content: flex-start;\n margin: 2.4rem -0.5rem; }\n\n.form-purchase .purchase-buttons button {\n flex: 0 1 33%;\n margin: 0 0.5rem; }\n\n.form-purchase .nullify-block-row {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center; }\n\n.form-purchase .nullify-block-row .nullify-block-buttons {\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 1rem 0;\n width: 100%; }\n\n.form-purchase .nullify-block-row .nullify-block-buttons button {\n flex: 0 1 25%;\n margin: 0 0.5rem; }\n\n.form-purchase .time-cancel-block-row {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center; }\n\n.form-purchase .time-cancel-block-row .time-cancel-block-question {\n margin-bottom: 1rem; }\n\n.form-purchase .time-cancel-block-row .input-block {\n width: 25%; }\n\n.form-purchase .time-cancel-block-row label {\n margin-bottom: 1rem; }\n\n.form-purchase .time-cancel-block-row .time-cancel-block-buttons {\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 1rem 0;\n width: 100%; }\n\n.form-purchase .time-cancel-block-row .time-cancel-block-buttons button {\n flex: 0 1 25%;\n margin: 0 0.5rem; }\n\n.progress-bar-container {\n position: absolute;\n bottom: 0;\n left: 0;\n padding: 0 3rem;\n width: 100%;\n height: 3rem; }\n\n.progress-bar-container .progress-bar {\n position: absolute;\n top: -0.7rem;\n left: 0;\n margin: 0 3rem;\n width: calc(100% - 6rem);\n height: 0.7rem; }\n\n.progress-bar-container .progress-bar .progress-bar-full {\n height: 0.7rem; }\n\n.progress-bar-container .progress-labels {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.2rem;\n height: 100%; }\n\n.progress-bar-container .progress-time {\n position: absolute;\n top: -3rem;\n left: 50%;\n transform: translateX(-50%);\n font-size: 1.2rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHVyY2hhc2UvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxccHVyY2hhc2VcXHB1cmNoYXNlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxjQUFjO0VBQ2QsdUJBQXVCO0VBQ3ZCLHFCQUFxQixFQUFBOztBQUd2QjtFQUNFLGNBQWM7RUFDZCxzQkFBc0I7RUFDdEIsZUFBZTtFQUNmLG1CQUFtQixFQUFBOztBQUpyQjtJQU9JLGFBQWEsRUFBQTs7QUFQakI7TUFVTSxlQUFlLEVBQUE7O0FBVnJCO1FBYVEsb0JBQW9CLEVBQUE7O0FBYjVCO1FBaUJRLG1CQUFtQixFQUFBOztBQWpCM0I7UUFxQlEsYUFBYSxFQUFBOztBQXJCckI7SUEyQkksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGNBQWMsRUFBQTs7QUFyQ2xCO01Bd0NNLGlCQUFpQjtNQUNqQixhQUFhO01BQ2IsY0FBYyxFQUFBOztBQTFDcEI7UUE2Q1Esb0RBQTREO2dCQUE1RCw0Q0FBNEQsRUFBQTs7QUE3Q3BFO1FBaURRLGtEQUEwRDtnQkFBMUQsMENBQTBELEVBQUE7O0FBakRsRTtJQXVESSxhQUFhO0lBQ2Isa0JBQWtCO0lBQ2xCLHNCQUFzQixFQUFBOztBQXpEMUI7TUE0RE0sZUFBZSxFQUFBOztBQTVEckI7UUErRFEsb0JBQW9CO1FBQ3BCLG1CQUFtQixFQUFBOztBQWhFM0I7UUFvRVEsa0JBQWtCO1FBQ2xCLHFCQUFxQixFQUFBOztBQXJFN0I7SUEyRUksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLGlCQUFpQjtJQUNqQixtQkFBbUIsRUFBQTs7QUFoRnZCO0lBb0ZJLGdCQUFnQjtJQUNoQixXQUFXO0lBQ1gsZ0JBQWdCLEVBQUE7O0FBdEZwQjtJQTBGSSxhQUFhO0lBQ2IsMkJBQTJCO0lBQzNCLHNCQUFzQixFQUFBOztBQTVGMUI7TUErRk0sYUFBYTtNQUNiLGdCQUFnQixFQUFBOztBQWhHdEI7SUFxR0ksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsdUJBQXVCLEVBQUE7O0FBeEczQjtNQTJHTSxhQUFhO01BQ2IsbUJBQW1CO01BQ25CLHVCQUF1QjtNQUN2QixjQUFjO01BQ2QsV0FBVyxFQUFBOztBQS9HakI7UUFrSFEsYUFBYTtRQUNiLGdCQUFnQixFQUFBOztBQW5IeEI7SUF5SEksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsdUJBQXVCLEVBQUE7O0FBNUgzQjtNQStITSxtQkFBbUIsRUFBQTs7QUEvSHpCO01BbUlNLFVBQVUsRUFBQTs7QUFuSWhCO01BdUlNLG1CQUFtQixFQUFBOztBQXZJekI7TUEySU0sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsY0FBYztNQUNkLFdBQVcsRUFBQTs7QUEvSWpCO1FBa0pRLGFBQWE7UUFDYixnQkFBZ0IsRUFBQTs7QUFPeEI7RUFDRSxrQkFBa0I7RUFDbEIsU0FBUztFQUNULE9BQU87RUFDUCxlQUFlO0VBQ2YsV0FBVztFQUNYLFlBQVksRUFBQTs7QUFOZDtJQVNJLGtCQUFrQjtJQUNsQixZQUFZO0lBQ1osT0FBTztJQUNQLGNBQWM7SUFDZCx3QkFBd0I7SUFDeEIsY0FBYyxFQUFBOztBQWRsQjtNQWlCTSxjQUFjLEVBQUE7O0FBakJwQjtJQXNCSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixpQkFBaUI7SUFDakIsWUFBWSxFQUFBOztBQTFCaEI7SUE4Qkksa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixTQUFTO0lBQ1QsMkJBQTJCO0lBQzNCLGlCQUFpQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvcHVyY2hhc2UvcHVyY2hhc2UuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uaGVhZCB7XHJcbiAgZmxleDogMCAwIGF1dG87XHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XHJcbiAgbWFyZ2luOiAtM3JlbSAtM3JlbSAwO1xyXG59XHJcblxyXG4uZm9ybS1wdXJjaGFzZSB7XHJcbiAgZmxleDogMSAxIGF1dG87XHJcbiAgbWFyZ2luOiAxLjVyZW0gLTNyZW0gMDtcclxuICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgb3ZlcmZsb3cteTogb3ZlcmxheTtcclxuXHJcbiAgLmlucHV0LWJsb2Nrcy1yb3cge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuXHJcbiAgICAuaW5wdXQtYmxvY2sge1xyXG4gICAgICBmbGV4LWJhc2lzOiA1MCU7XHJcblxyXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMS41cmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuY2hlY2tib3gtYmxvY2sge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wdXJjaGFzZS1zZWxlY3Qge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuM3JlbTtcclxuICAgIG1hcmdpbjogMS41cmVtIDAgMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgICBoZWlnaHQ6IDEuM3JlbTtcclxuXHJcbiAgICAuYXJyb3cge1xyXG4gICAgICBtYXJnaW4tbGVmdDogMXJlbTtcclxuICAgICAgd2lkdGg6IDAuOHJlbTtcclxuICAgICAgaGVpZ2h0OiAwLjhyZW07XHJcblxyXG4gICAgICAmLmRvd24ge1xyXG4gICAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9hcnJvdy1kb3duLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi51cCB7XHJcbiAgICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2Fycm93LXVwLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmFkZGl0aW9uYWwtZGV0YWlscyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luLXRvcDogMS41cmVtO1xyXG4gICAgcGFkZGluZzogMC41cmVtIDAgMnJlbTtcclxuXHJcbiAgICA+IGRpdiB7XHJcbiAgICAgIGZsZXgtYmFzaXM6IDI1JTtcclxuXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnB1cmNoYXNlLXN0YXRlcyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuOXJlbTtcclxuICB9XHJcblxyXG4gIC5zZW5kLWJ1dHRvbiB7XHJcbiAgICBtYXJnaW46IDIuNHJlbSAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gIH1cclxuXHJcbiAgLnB1cmNoYXNlLWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgIG1hcmdpbjogMi40cmVtIC0wLjVyZW07XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgZmxleDogMCAxIDMzJTtcclxuICAgICAgbWFyZ2luOiAwIDAuNXJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5udWxsaWZ5LWJsb2NrLXJvdyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHJcbiAgICAubnVsbGlmeS1ibG9jay1idXR0b25zIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIG1hcmdpbjogMXJlbSAwO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgIGJ1dHRvbiB7XHJcbiAgICAgICAgZmxleDogMCAxIDI1JTtcclxuICAgICAgICBtYXJnaW46IDAgMC41cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudGltZS1jYW5jZWwtYmxvY2stcm93IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cclxuICAgIC50aW1lLWNhbmNlbC1ibG9jay1xdWVzdGlvbiB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgICB9XHJcblxyXG4gICAgLmlucHV0LWJsb2NrIHtcclxuICAgICAgd2lkdGg6IDI1JTtcclxuICAgIH1cclxuXHJcbiAgICBsYWJlbCB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtY2FuY2VsLWJsb2NrLWJ1dHRvbnMge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgbWFyZ2luOiAxcmVtIDA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgICAgYnV0dG9uIHtcclxuICAgICAgICBmbGV4OiAwIDEgMjUlO1xyXG4gICAgICAgIG1hcmdpbjogMCAwLjVyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4ucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIGJvdHRvbTogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHBhZGRpbmc6IDAgM3JlbTtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDNyZW07XHJcblxyXG4gIC5wcm9ncmVzcy1iYXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAtMC43cmVtO1xyXG4gICAgbGVmdDogMDtcclxuICAgIG1hcmdpbjogMCAzcmVtO1xyXG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDZyZW0pO1xyXG4gICAgaGVpZ2h0OiAwLjdyZW07XHJcblxyXG4gICAgLnByb2dyZXNzLWJhci1mdWxsIHtcclxuICAgICAgaGVpZ2h0OiAwLjdyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAucHJvZ3Jlc3MtbGFiZWxzIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBmb250LXNpemU6IDEuMnJlbTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy10aW1lIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogLTNyZW07XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICBmb250LXNpemU6IDEuMnJlbTtcclxuICB9XHJcbn1cclxuIl19 */" +module.exports = ":host {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.head {\n flex: 0 0 auto;\n box-sizing: content-box;\n margin: -3rem -3rem 0; }\n\n.form-purchase {\n flex: 1 1 auto;\n margin: 1.5rem -3rem 0;\n padding: 0 3rem;\n overflow-y: overlay; }\n\n.form-purchase .input-blocks-row {\n display: flex; }\n\n.form-purchase .input-blocks-row .input-block {\n flex-basis: 50%; }\n\n.form-purchase .input-blocks-row .input-block:first-child {\n margin-right: 1.5rem; }\n\n.form-purchase .input-blocks-row .input-block:last-child {\n margin-left: 1.5rem; }\n\n.form-purchase .input-blocks-row .input-block .checkbox-block {\n display: flex; }\n\n.form-purchase .purchase-select {\n display: flex;\n align-items: center;\n background: transparent;\n border: none;\n font-size: 1.3rem;\n line-height: 1.3rem;\n margin: 1.5rem 0 0;\n padding: 0;\n width: 100%;\n max-width: 15rem;\n height: 1.3rem; }\n\n.form-purchase .purchase-select .arrow {\n margin-left: 1rem;\n width: 0.8rem;\n height: 0.8rem; }\n\n.form-purchase .purchase-select .arrow.down {\n -webkit-mask: url('arrow-down.svg') no-repeat center;\n mask: url('arrow-down.svg') no-repeat center; }\n\n.form-purchase .purchase-select .arrow.up {\n -webkit-mask: url('arrow-up.svg') no-repeat center;\n mask: url('arrow-up.svg') no-repeat center; }\n\n.form-purchase .additional-details {\n display: flex;\n margin-top: 1.5rem;\n padding: 0.5rem 0 2rem; }\n\n.form-purchase .additional-details > div {\n flex-basis: 25%; }\n\n.form-purchase .additional-details > div:first-child {\n padding-left: 1.5rem;\n padding-right: 1rem; }\n\n.form-purchase .additional-details > div:last-child {\n padding-left: 1rem;\n padding-right: 1.5rem; }\n\n.form-purchase .purchase-states {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n font-size: 1.2rem;\n line-height: 2.9rem; }\n\n.form-purchase .send-button {\n margin: 2.4rem 0;\n width: 100%;\n max-width: 15rem; }\n\n.form-purchase .purchase-buttons {\n display: flex;\n justify-content: flex-start;\n margin: 2.4rem -0.5rem; }\n\n.form-purchase .purchase-buttons button {\n flex: 0 1 33%;\n margin: 0 0.5rem; }\n\n.form-purchase .nullify-block-row {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center; }\n\n.form-purchase .nullify-block-row .nullify-block-buttons {\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 1rem 0;\n width: 100%; }\n\n.form-purchase .nullify-block-row .nullify-block-buttons button {\n flex: 0 1 25%;\n margin: 0 0.5rem; }\n\n.form-purchase .time-cancel-block-row {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center; }\n\n.form-purchase .time-cancel-block-row .time-cancel-block-question {\n margin-bottom: 1rem; }\n\n.form-purchase .time-cancel-block-row .input-block {\n width: 25%; }\n\n.form-purchase .time-cancel-block-row label {\n margin-bottom: 1rem; }\n\n.form-purchase .time-cancel-block-row .time-cancel-block-buttons {\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 1rem 0;\n width: 100%; }\n\n.form-purchase .time-cancel-block-row .time-cancel-block-buttons button {\n flex: 0 1 25%;\n margin: 0 0.5rem; }\n\n.progress-bar-container {\n position: absolute;\n bottom: 0;\n left: 0;\n padding: 0 3rem;\n width: 100%;\n height: 3rem; }\n\n.progress-bar-container .progress-bar {\n position: absolute;\n top: -0.7rem;\n left: 0;\n margin: 0 3rem;\n width: calc(100% - 6rem);\n height: 0.7rem; }\n\n.progress-bar-container .progress-bar .progress-bar-full {\n height: 0.7rem; }\n\n.progress-bar-container .progress-labels {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.2rem;\n height: 100%; }\n\n.progress-bar-container .progress-time {\n position: absolute;\n top: -3rem;\n left: 50%;\n transform: translateX(-50%);\n font-size: 1.2rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHVyY2hhc2UvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxccHVyY2hhc2VcXHB1cmNoYXNlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxjQUFjO0VBQ2QsdUJBQXVCO0VBQ3ZCLHFCQUFxQixFQUFBOztBQUd2QjtFQUNFLGNBQWM7RUFDZCxzQkFBc0I7RUFDdEIsZUFBZTtFQUNmLG1CQUFtQixFQUFBOztBQUpyQjtJQU9JLGFBQWEsRUFBQTs7QUFQakI7TUFVTSxlQUFlLEVBQUE7O0FBVnJCO1FBYVEsb0JBQW9CLEVBQUE7O0FBYjVCO1FBaUJRLG1CQUFtQixFQUFBOztBQWpCM0I7UUFxQlEsYUFBYSxFQUFBOztBQXJCckI7SUEyQkksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGNBQWMsRUFBQTs7QUFyQ2xCO01Bd0NNLGlCQUFpQjtNQUNqQixhQUFhO01BQ2IsY0FBYyxFQUFBOztBQTFDcEI7UUE2Q1Esb0RBQTREO2dCQUE1RCw0Q0FBNEQsRUFBQTs7QUE3Q3BFO1FBaURRLGtEQUEwRDtnQkFBMUQsMENBQTBELEVBQUE7O0FBakRsRTtJQXVESSxhQUFhO0lBQ2Isa0JBQWtCO0lBQ2xCLHNCQUFzQixFQUFBOztBQXpEMUI7TUE0RE0sZUFBZSxFQUFBOztBQTVEckI7UUErRFEsb0JBQW9CO1FBQ3BCLG1CQUFtQixFQUFBOztBQWhFM0I7UUFvRVEsa0JBQWtCO1FBQ2xCLHFCQUFxQixFQUFBOztBQXJFN0I7SUEyRUksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLGlCQUFpQjtJQUNqQixtQkFBbUIsRUFBQTs7QUFoRnZCO0lBb0ZJLGdCQUFnQjtJQUNoQixXQUFXO0lBQ1gsZ0JBQWdCLEVBQUE7O0FBdEZwQjtJQTBGSSxhQUFhO0lBQ2IsMkJBQTJCO0lBQzNCLHNCQUFzQixFQUFBOztBQTVGMUI7TUErRk0sYUFBYTtNQUNiLGdCQUFnQixFQUFBOztBQWhHdEI7SUFxR0ksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsdUJBQXVCLEVBQUE7O0FBeEczQjtNQTJHTSxhQUFhO01BQ2IsbUJBQW1CO01BQ25CLHVCQUF1QjtNQUN2QixjQUFjO01BQ2QsV0FBVyxFQUFBOztBQS9HakI7UUFrSFEsYUFBYTtRQUNiLGdCQUFnQixFQUFBOztBQW5IeEI7SUF5SEksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsdUJBQXVCLEVBQUE7O0FBNUgzQjtNQStITSxtQkFBbUIsRUFBQTs7QUEvSHpCO01BbUlNLFVBQVUsRUFBQTs7QUFuSWhCO01BdUlNLG1CQUFtQixFQUFBOztBQXZJekI7TUEySU0sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsY0FBYztNQUNkLFdBQVcsRUFBQTs7QUEvSWpCO1FBa0pRLGFBQWE7UUFDYixnQkFBZ0IsRUFBQTs7QUFPeEI7RUFDRSxrQkFBa0I7RUFDbEIsU0FBUztFQUNULE9BQU87RUFDUCxlQUFlO0VBQ2YsV0FBVztFQUNYLFlBQVksRUFBQTs7QUFOZDtJQVNJLGtCQUFrQjtJQUNsQixZQUFZO0lBQ1osT0FBTztJQUNQLGNBQWM7SUFDZCx3QkFBd0I7SUFDeEIsY0FBYyxFQUFBOztBQWRsQjtNQWlCTSxjQUFjLEVBQUE7O0FBakJwQjtJQXNCSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixpQkFBaUI7SUFDakIsWUFBWSxFQUFBOztBQTFCaEI7SUE4Qkksa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixTQUFTO0lBQ1QsMkJBQTJCO0lBQzNCLGlCQUFpQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvcHVyY2hhc2UvcHVyY2hhc2UuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uaGVhZCB7XHJcbiAgZmxleDogMCAwIGF1dG87XHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XHJcbiAgbWFyZ2luOiAtM3JlbSAtM3JlbSAwO1xyXG59XHJcblxyXG4uZm9ybS1wdXJjaGFzZSB7XHJcbiAgZmxleDogMSAxIGF1dG87XHJcbiAgbWFyZ2luOiAxLjVyZW0gLTNyZW0gMDtcclxuICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgb3ZlcmZsb3cteTogb3ZlcmxheTtcclxuXHJcbiAgLmlucHV0LWJsb2Nrcy1yb3cge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuXHJcbiAgICAuaW5wdXQtYmxvY2sge1xyXG4gICAgICBmbGV4LWJhc2lzOiA1MCU7XHJcblxyXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMS41cmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuY2hlY2tib3gtYmxvY2sge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wdXJjaGFzZS1zZWxlY3Qge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuM3JlbTtcclxuICAgIG1hcmdpbjogMS41cmVtIDAgMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgICBoZWlnaHQ6IDEuM3JlbTtcclxuXHJcbiAgICAuYXJyb3cge1xyXG4gICAgICBtYXJnaW4tbGVmdDogMXJlbTtcclxuICAgICAgd2lkdGg6IDAuOHJlbTtcclxuICAgICAgaGVpZ2h0OiAwLjhyZW07XHJcblxyXG4gICAgICAmLmRvd24ge1xyXG4gICAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9hcnJvdy1kb3duLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi51cCB7XHJcbiAgICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2Fycm93LXVwLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmFkZGl0aW9uYWwtZGV0YWlscyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luLXRvcDogMS41cmVtO1xyXG4gICAgcGFkZGluZzogMC41cmVtIDAgMnJlbTtcclxuXHJcbiAgICA+IGRpdiB7XHJcbiAgICAgIGZsZXgtYmFzaXM6IDI1JTtcclxuXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnB1cmNoYXNlLXN0YXRlcyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuOXJlbTtcclxuICB9XHJcblxyXG4gIC5zZW5kLWJ1dHRvbiB7XHJcbiAgICBtYXJnaW46IDIuNHJlbSAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gIH1cclxuXHJcbiAgLnB1cmNoYXNlLWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgIG1hcmdpbjogMi40cmVtIC0wLjVyZW07XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgZmxleDogMCAxIDMzJTtcclxuICAgICAgbWFyZ2luOiAwIDAuNXJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5udWxsaWZ5LWJsb2NrLXJvdyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHJcbiAgICAubnVsbGlmeS1ibG9jay1idXR0b25zIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIG1hcmdpbjogMXJlbSAwO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgIGJ1dHRvbiB7XHJcbiAgICAgICAgZmxleDogMCAxIDI1JTtcclxuICAgICAgICBtYXJnaW46IDAgMC41cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudGltZS1jYW5jZWwtYmxvY2stcm93IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cclxuICAgIC50aW1lLWNhbmNlbC1ibG9jay1xdWVzdGlvbiB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgICB9XHJcblxyXG4gICAgLmlucHV0LWJsb2NrIHtcclxuICAgICAgd2lkdGg6IDI1JTtcclxuICAgIH1cclxuXHJcbiAgICBsYWJlbCB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtY2FuY2VsLWJsb2NrLWJ1dHRvbnMge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgbWFyZ2luOiAxcmVtIDA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgICAgYnV0dG9uIHtcclxuICAgICAgICBmbGV4OiAwIDEgMjUlO1xyXG4gICAgICAgIG1hcmdpbjogMCAwLjVyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4ucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIGJvdHRvbTogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHBhZGRpbmc6IDAgM3JlbTtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDNyZW07XHJcblxyXG4gIC5wcm9ncmVzcy1iYXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAtMC43cmVtO1xyXG4gICAgbGVmdDogMDtcclxuICAgIG1hcmdpbjogMCAzcmVtO1xyXG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDZyZW0pO1xyXG4gICAgaGVpZ2h0OiAwLjdyZW07XHJcblxyXG4gICAgLnByb2dyZXNzLWJhci1mdWxsIHtcclxuICAgICAgaGVpZ2h0OiAwLjdyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAucHJvZ3Jlc3MtbGFiZWxzIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBmb250LXNpemU6IDEuMnJlbTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy10aW1lIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogLTNyZW07XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICBmb250LXNpemU6IDEuMnJlbTtcclxuICB9XHJcbn1cclxuIl19 */" /***/ }), @@ -5475,7 +5508,7 @@ module.exports = "
\r\n \\r\n\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ":host {\n position: relative; }\n\n.form-restore {\n margin: 2.4rem 0;\n width: 100%; }\n\n.form-restore .input-block.half-block {\n width: 50%; }\n\n.form-restore .wrap-buttons {\n display: flex;\n margin: 2.5rem -0.7rem;\n width: 50%; }\n\n.form-restore .wrap-buttons button {\n margin: 0 0.7rem; }\n\n.form-restore .wrap-buttons button.transparent-button {\n flex-basis: 50%; }\n\n.form-restore .wrap-buttons button.select-button {\n flex-basis: 60%; }\n\n.form-restore .wrap-buttons button.create-button {\n flex: 1 1 50%; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVzdG9yZS13YWxsZXQvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxccmVzdG9yZS13YWxsZXRcXHJlc3RvcmUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsZ0JBQWdCO0VBQ2hCLFdBQVcsRUFBQTs7QUFGYjtJQU9NLFVBQVUsRUFBQTs7QUFQaEI7SUFZSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLFVBQVUsRUFBQTs7QUFkZDtNQWlCTSxnQkFBZ0IsRUFBQTs7QUFqQnRCO1FBb0JRLGVBQWUsRUFBQTs7QUFwQnZCO1FBd0JRLGVBQWUsRUFBQTs7QUF4QnZCO1FBNEJRLGFBQWEsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3Jlc3RvcmUtd2FsbGV0L3Jlc3RvcmUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLmZvcm0tcmVzdG9yZSB7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgLmlucHV0LWJsb2NrIHtcclxuXHJcbiAgICAmLmhhbGYtYmxvY2sge1xyXG4gICAgICB3aWR0aDogNTAlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuICAgIHdpZHRoOiA1MCU7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAwIDAuN3JlbTtcclxuXHJcbiAgICAgICYudHJhbnNwYXJlbnQtYnV0dG9uIHtcclxuICAgICAgICBmbGV4LWJhc2lzOiA1MCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuc2VsZWN0LWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleC1iYXNpczogNjAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmNyZWF0ZS1idXR0b24ge1xyXG4gICAgICAgIGZsZXg6IDEgMSA1MCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */" +module.exports = ":host {\n position: relative; }\n\n.form-restore {\n margin: 2.4rem 0;\n width: 100%; }\n\n.form-restore .input-block.half-block {\n width: 50%; }\n\n.form-restore .wrap-buttons {\n display: flex;\n margin: 2.5rem -0.7rem;\n width: 50%; }\n\n.form-restore .wrap-buttons button {\n margin: 0 0.7rem; }\n\n.form-restore .wrap-buttons button.transparent-button {\n flex-basis: 50%; }\n\n.form-restore .wrap-buttons button.select-button {\n flex-basis: 60%; }\n\n.form-restore .wrap-buttons button.create-button {\n flex: 1 1 50%; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVzdG9yZS13YWxsZXQvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxccmVzdG9yZS13YWxsZXRcXHJlc3RvcmUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsZ0JBQWdCO0VBQ2hCLFdBQVcsRUFBQTs7QUFGYjtJQU9NLFVBQVUsRUFBQTs7QUFQaEI7SUFZSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLFVBQVUsRUFBQTs7QUFkZDtNQWlCTSxnQkFBZ0IsRUFBQTs7QUFqQnRCO1FBb0JRLGVBQWUsRUFBQTs7QUFwQnZCO1FBd0JRLGVBQWUsRUFBQTs7QUF4QnZCO1FBNEJRLGFBQWEsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3Jlc3RvcmUtd2FsbGV0L3Jlc3RvcmUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLmZvcm0tcmVzdG9yZSB7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgLmlucHV0LWJsb2NrIHtcclxuXHJcbiAgICAmLmhhbGYtYmxvY2sge1xyXG4gICAgICB3aWR0aDogNTAlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuICAgIHdpZHRoOiA1MCU7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAwIDAuN3JlbTtcclxuXHJcbiAgICAgICYudHJhbnNwYXJlbnQtYnV0dG9uIHtcclxuICAgICAgICBmbGV4LWJhc2lzOiA1MCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuc2VsZWN0LWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleC1iYXNpczogNjAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmNyZWF0ZS1idXR0b24ge1xyXG4gICAgICAgIGZsZXg6IDEgMSA1MCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */" /***/ }), @@ -5736,7 +5769,7 @@ module.exports = "
\r\n\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ":host {\n position: relative; }\n\n.seed-phrase-title {\n line-height: 2.2rem;\n padding: 2.2rem 0; }\n\n.seed-phrase-content {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n padding: 1.4rem;\n width: 100%;\n height: 12rem; }\n\n.seed-phrase-content .word {\n line-height: 2.2rem;\n max-width: 13rem; }\n\n.wrap-buttons {\n display: flex; }\n\n.wrap-buttons .seed-phrase-button {\n margin: 2.8rem 0;\n width: 25%;\n min-width: 1.5rem; }\n\n.wrap-buttons .copy-button {\n margin: 2.8rem 1rem;\n width: 25%;\n min-width: 1.5rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2VlZC1waHJhc2UvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcc2VlZC1waHJhc2VcXHNlZWQtcGhyYXNlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsbUJBQW1CO0VBQ25CLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsZUFBZTtFQUNmLGVBQWU7RUFDZixXQUFXO0VBQ1gsYUFBYSxFQUFBOztBQU5mO0lBU0ksbUJBQW1CO0lBQ25CLGdCQUFnQixFQUFBOztBQUlwQjtFQUNFLGFBQWEsRUFBQTs7QUFEZjtJQUlJLGdCQUFnQjtJQUNoQixVQUFVO0lBQ1YsaUJBQWlCLEVBQUE7O0FBTnJCO0lBVUksbUJBQW1CO0lBQ25CLFVBQVU7SUFDVixpQkFBaUIsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NlZWQtcGhyYXNlL3NlZWQtcGhyYXNlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLnNlZWQtcGhyYXNlLXRpdGxlIHtcclxuICBsaW5lLWhlaWdodDogMi4ycmVtO1xyXG4gIHBhZGRpbmc6IDIuMnJlbSAwO1xyXG59XHJcblxyXG4uc2VlZC1waHJhc2UtY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxuICBwYWRkaW5nOiAxLjRyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMnJlbTtcclxuXHJcbiAgLndvcmQge1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuMnJlbTtcclxuICAgIG1heC13aWR0aDogMTNyZW07XHJcbiAgfVxyXG59XHJcblxyXG4ud3JhcC1idXR0b25zIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG5cclxuICAuc2VlZC1waHJhc2UtYnV0dG9uIHtcclxuICAgIG1hcmdpbjogMi44cmVtIDA7XHJcbiAgICB3aWR0aDogMjUlO1xyXG4gICAgbWluLXdpZHRoOiAxLjVyZW07XHJcbiAgfVxyXG5cclxuICAuY29weS1idXR0b24ge1xyXG4gICAgbWFyZ2luOiAyLjhyZW0gMXJlbTtcclxuICAgIHdpZHRoOiAyNSU7XHJcbiAgICBtaW4td2lkdGg6IDEuNXJlbTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ== */" +module.exports = ":host {\n position: relative; }\n\n.seed-phrase-title {\n line-height: 2.2rem;\n padding: 2.2rem 0; }\n\n.seed-phrase-content {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n padding: 1.4rem;\n width: 100%;\n height: 12rem; }\n\n.seed-phrase-content .word {\n line-height: 2.2rem;\n max-width: 13rem; }\n\n.wrap-buttons {\n display: flex; }\n\n.wrap-buttons .seed-phrase-button {\n margin: 2.8rem 0;\n width: 25%;\n min-width: 1.5rem; }\n\n.wrap-buttons .copy-button {\n margin: 2.8rem 1rem;\n width: 25%;\n min-width: 1.5rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2VlZC1waHJhc2UvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcc2VlZC1waHJhc2VcXHNlZWQtcGhyYXNlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsbUJBQW1CO0VBQ25CLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsZUFBZTtFQUNmLGVBQWU7RUFDZixXQUFXO0VBQ1gsYUFBYSxFQUFBOztBQU5mO0lBU0ksbUJBQW1CO0lBQ25CLGdCQUFnQixFQUFBOztBQUlwQjtFQUNFLGFBQWEsRUFBQTs7QUFEZjtJQUlJLGdCQUFnQjtJQUNoQixVQUFVO0lBQ1YsaUJBQWlCLEVBQUE7O0FBTnJCO0lBVUksbUJBQW1CO0lBQ25CLFVBQVU7SUFDVixpQkFBaUIsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NlZWQtcGhyYXNlL3NlZWQtcGhyYXNlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLnNlZWQtcGhyYXNlLXRpdGxlIHtcclxuICBsaW5lLWhlaWdodDogMi4ycmVtO1xyXG4gIHBhZGRpbmc6IDIuMnJlbSAwO1xyXG59XHJcblxyXG4uc2VlZC1waHJhc2UtY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxuICBwYWRkaW5nOiAxLjRyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMnJlbTtcclxuXHJcbiAgLndvcmQge1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuMnJlbTtcclxuICAgIG1heC13aWR0aDogMTNyZW07XHJcbiAgfVxyXG59XHJcblxyXG4ud3JhcC1idXR0b25zIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG5cclxuICAuc2VlZC1waHJhc2UtYnV0dG9uIHtcclxuICAgIG1hcmdpbjogMi44cmVtIDA7XHJcbiAgICB3aWR0aDogMjUlO1xyXG4gICAgbWluLXdpZHRoOiAxLjVyZW07XHJcbiAgfVxyXG5cclxuICAuY29weS1idXR0b24ge1xyXG4gICAgbWFyZ2luOiAyLjhyZW0gMXJlbTtcclxuICAgIHdpZHRoOiAyNSU7XHJcbiAgICBtaW4td2lkdGg6IDEuNXJlbTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ== */" /***/ }), @@ -5885,7 +5918,7 @@ module.exports = "
\r\n\r\n
\r\n /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ".head {\n justify-content: flex-end; }\n\n.settings-title {\n font-size: 1.7rem; }\n\n.theme-selection {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n margin: 2.4rem 0;\n width: 50%; }\n\n.theme-selection .radio-block {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n font-size: 1.3rem;\n line-height: 2.7rem; }\n\n.lock-selection {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n margin: 2.4rem 0;\n width: 50%; }\n\n.lock-selection .lock-selection-title {\n display: flex;\n font-size: 1.5rem;\n line-height: 2.7rem;\n margin-bottom: 1rem; }\n\n.scale-selection {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 0 4rem;\n width: 50%;\n height: 0.5rem; }\n\n.scale-selection .button-block {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1 0 auto;\n margin: 0 0.2rem;\n padding: 0;\n height: 0.5rem; }\n\n.scale-selection .button-block .label {\n position: absolute;\n bottom: -1rem;\n left: 50%;\n transform: translate(-50%, 100%);\n font-size: 1rem;\n white-space: nowrap; }\n\n.master-password {\n width: 50%; }\n\n.master-password .master-password-title {\n display: flex;\n font-size: 1.5rem;\n line-height: 2.7rem;\n margin-bottom: 1rem; }\n\n.master-password button {\n margin: 2.5rem auto;\n width: 100%;\n max-width: 15rem; }\n\n.last-build {\n font-size: 1rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2V0dGluZ3MvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcc2V0dGluZ3NcXHNldHRpbmdzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UseUJBQXlCLEVBQUE7O0FBRzNCO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0Qix1QkFBdUI7RUFDdkIsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTs7QUFMWjtJQVFJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsMkJBQTJCO0lBQzNCLGlCQUFpQjtJQUNqQixtQkFBbUIsRUFBQTs7QUFJdkI7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLHVCQUF1QjtFQUN2QixnQkFBZ0I7RUFDaEIsVUFBVSxFQUFBOztBQUxaO0lBUUksYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsbUJBQW1CLEVBQUE7O0FBSXZCO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQiw4QkFBOEI7RUFDOUIsaUJBQWlCO0VBQ2pCLFVBQVU7RUFDVixjQUFjLEVBQUE7O0FBTmhCO0lBU0ksa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsVUFBVTtJQUNWLGNBQWMsRUFBQTs7QUFoQmxCO01BbUJNLGtCQUFrQjtNQUNsQixhQUFhO01BQ2IsU0FBUztNQUNULGdDQUFnQztNQUNoQyxlQUFlO01BQ2YsbUJBQW1CLEVBQUE7O0FBS3pCO0VBQ0UsVUFBVSxFQUFBOztBQURaO0lBSUksYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsbUJBQW1CLEVBQUE7O0FBUHZCO0lBV0ksbUJBQW1CO0lBQ25CLFdBQVc7SUFDWCxnQkFBZ0IsRUFBQTs7QUFJcEI7RUFDRSxlQUFlLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zZXR0aW5ncy9zZXR0aW5ncy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5oZWFkIHtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG59XHJcblxyXG4uc2V0dGluZ3MtdGl0bGUge1xyXG4gIGZvbnQtc2l6ZTogMS43cmVtO1xyXG59XHJcblxyXG4udGhlbWUtc2VsZWN0aW9uIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuICB3aWR0aDogNTAlO1xyXG5cclxuICAucmFkaW8tYmxvY2sge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAyLjdyZW07XHJcbiAgfVxyXG59XHJcblxyXG4ubG9jay1zZWxlY3Rpb24ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBtYXJnaW46IDIuNHJlbSAwO1xyXG4gIHdpZHRoOiA1MCU7XHJcblxyXG4gIC5sb2NrLXNlbGVjdGlvbi10aXRsZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICB9XHJcbn1cclxuXHJcbi5zY2FsZS1zZWxlY3Rpb24ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgcGFkZGluZzogMCAwIDRyZW07XHJcbiAgd2lkdGg6IDUwJTtcclxuICBoZWlnaHQ6IDAuNXJlbTtcclxuXHJcbiAgLmJ1dHRvbi1ibG9jayB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgZmxleDogMSAwIGF1dG87XHJcbiAgICBtYXJnaW46IDAgMC4ycmVtO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGhlaWdodDogMC41cmVtO1xyXG5cclxuICAgIC5sYWJlbCB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgYm90dG9tOiAtMXJlbTtcclxuICAgICAgbGVmdDogNTAlO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAxMDAlKTtcclxuICAgICAgZm9udC1zaXplOiAxcmVtO1xyXG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLm1hc3Rlci1wYXNzd29yZCB7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLm1hc3Rlci1wYXNzd29yZC10aXRsZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICB9XHJcblxyXG4gIGJ1dHRvbiB7XHJcbiAgICBtYXJnaW46IDIuNXJlbSBhdXRvO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmxhc3QtYnVpbGQge1xyXG4gIGZvbnQtc2l6ZTogMXJlbTtcclxufVxyXG4iXX0= */" +module.exports = ".head {\n justify-content: flex-end; }\n\n.settings-title {\n font-size: 1.7rem; }\n\n.theme-selection {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n margin: 2.4rem 0;\n width: 50%; }\n\n.theme-selection .radio-block {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n font-size: 1.3rem;\n line-height: 2.7rem; }\n\n.lock-selection {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n margin: 2.4rem 0;\n width: 50%; }\n\n.lock-selection .lock-selection-title {\n display: flex;\n font-size: 1.5rem;\n line-height: 2.7rem;\n margin-bottom: 1rem; }\n\n.scale-selection {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 0 4rem;\n width: 50%;\n height: 0.5rem; }\n\n.scale-selection .button-block {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1 0 auto;\n margin: 0 0.2rem;\n padding: 0;\n height: 0.5rem; }\n\n.scale-selection .button-block .label {\n position: absolute;\n bottom: -1rem;\n left: 50%;\n transform: translate(-50%, 100%);\n font-size: 1rem;\n white-space: nowrap; }\n\n.master-password {\n width: 50%; }\n\n.master-password .master-password-title {\n display: flex;\n font-size: 1.5rem;\n line-height: 2.7rem;\n margin-bottom: 1rem; }\n\n.master-password button {\n margin: 2.5rem auto;\n width: 100%;\n max-width: 15rem; }\n\n.last-build {\n font-size: 1rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2V0dGluZ3MvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcc2V0dGluZ3NcXHNldHRpbmdzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UseUJBQXlCLEVBQUE7O0FBRzNCO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0Qix1QkFBdUI7RUFDdkIsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTs7QUFMWjtJQVFJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsMkJBQTJCO0lBQzNCLGlCQUFpQjtJQUNqQixtQkFBbUIsRUFBQTs7QUFJdkI7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLHVCQUF1QjtFQUN2QixnQkFBZ0I7RUFDaEIsVUFBVSxFQUFBOztBQUxaO0lBUUksYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsbUJBQW1CLEVBQUE7O0FBSXZCO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQiw4QkFBOEI7RUFDOUIsaUJBQWlCO0VBQ2pCLFVBQVU7RUFDVixjQUFjLEVBQUE7O0FBTmhCO0lBU0ksa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsVUFBVTtJQUNWLGNBQWMsRUFBQTs7QUFoQmxCO01BbUJNLGtCQUFrQjtNQUNsQixhQUFhO01BQ2IsU0FBUztNQUNULGdDQUFnQztNQUNoQyxlQUFlO01BQ2YsbUJBQW1CLEVBQUE7O0FBS3pCO0VBQ0UsVUFBVSxFQUFBOztBQURaO0lBSUksYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsbUJBQW1CLEVBQUE7O0FBUHZCO0lBV0ksbUJBQW1CO0lBQ25CLFdBQVc7SUFDWCxnQkFBZ0IsRUFBQTs7QUFJcEI7RUFDRSxlQUFlLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zZXR0aW5ncy9zZXR0aW5ncy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5oZWFkIHtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG59XHJcblxyXG4uc2V0dGluZ3MtdGl0bGUge1xyXG4gIGZvbnQtc2l6ZTogMS43cmVtO1xyXG59XHJcblxyXG4udGhlbWUtc2VsZWN0aW9uIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuICB3aWR0aDogNTAlO1xyXG5cclxuICAucmFkaW8tYmxvY2sge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAyLjdyZW07XHJcbiAgfVxyXG59XHJcblxyXG4ubG9jay1zZWxlY3Rpb24ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBtYXJnaW46IDIuNHJlbSAwO1xyXG4gIHdpZHRoOiA1MCU7XHJcblxyXG4gIC5sb2NrLXNlbGVjdGlvbi10aXRsZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICB9XHJcbn1cclxuXHJcbi5zY2FsZS1zZWxlY3Rpb24ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgcGFkZGluZzogMCAwIDRyZW07XHJcbiAgd2lkdGg6IDUwJTtcclxuICBoZWlnaHQ6IDAuNXJlbTtcclxuXHJcbiAgLmJ1dHRvbi1ibG9jayB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgZmxleDogMSAwIGF1dG87XHJcbiAgICBtYXJnaW46IDAgMC4ycmVtO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGhlaWdodDogMC41cmVtO1xyXG5cclxuICAgIC5sYWJlbCB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgYm90dG9tOiAtMXJlbTtcclxuICAgICAgbGVmdDogNTAlO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAxMDAlKTtcclxuICAgICAgZm9udC1zaXplOiAxcmVtO1xyXG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLm1hc3Rlci1wYXNzd29yZCB7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLm1hc3Rlci1wYXNzd29yZC10aXRsZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICB9XHJcblxyXG4gIGJ1dHRvbiB7XHJcbiAgICBtYXJnaW46IDIuNXJlbSBhdXRvO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmxhc3QtYnVpbGQge1xyXG4gIGZvbnQtc2l6ZTogMXJlbTtcclxufVxyXG4iXX0= */" /***/ }), @@ -6275,10 +6308,21 @@ var SettingsComponent = /** @class */ (function () { this.backend.storeAppData(); }; SettingsComponent.prototype.onSubmitChangePass = function () { + var _this = this; if (this.changeForm.valid) { this.variablesService.appPass = this.changeForm.get('new_password').value; if (this.variablesService.appPass) { - this.backend.storeSecureAppData(); + this.backend.setMasterPassword({ pass: this.variablesService.appPass }, function (status, data) { + if (status) { + _this.backend.storeSecureAppData({ pass: _this.variablesService.appPass }); + _this.variablesService.appLogin = true; + _this.variablesService.dataIsLoaded = true; + _this.variablesService.startCountdown(); + } + else { + console.log(data['error_code']); + } + }); } else { this.backend.dropSecureAppData(); @@ -6336,7 +6380,7 @@ module.exports = "
\r\n
\r\n
\r\n /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ":host {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.chart-header {\n display: flex;\n flex: 0 0 auto; }\n\n.chart-header .general {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n flex-grow: 1;\n font-size: 1.3rem;\n margin: -0.5rem 0; }\n\n.chart-header .general > div {\n display: flex;\n align-items: center;\n margin: 0.5rem 0;\n height: 2rem; }\n\n.chart-header .general > div .label {\n display: inline-block;\n width: 9rem; }\n\n.chart-header .selected {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n justify-content: center;\n flex-grow: 1;\n font-size: 1.8rem; }\n\n.chart-header .selected span {\n line-height: 2.9rem; }\n\n.chart {\n position: relative;\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-height: 40rem; }\n\n.chart > div {\n position: absolute;\n width: 100%;\n height: 100%; }\n\n.chart-options {\n display: flex;\n align-items: center;\n height: 2.4rem;\n flex: 0 0 auto; }\n\n.chart-options .title {\n font-size: 1.3rem;\n padding: 0 1rem; }\n\n.chart-options .title:first-child {\n padding-left: 0; }\n\n.chart-options .options {\n display: flex;\n justify-content: space-between;\n flex-grow: 1;\n height: 100%; }\n\n.chart-options .options button {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1 1 auto;\n cursor: pointer;\n font-size: 1.3rem;\n margin: 0 0.1rem;\n padding: 0;\n height: 100%; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc3Rha2luZy9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxzdGFraW5nXFxzdGFraW5nLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxhQUFhO0VBQ2IsY0FBYyxFQUFBOztBQUZoQjtJQUtJLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsdUJBQXVCO0lBQ3ZCLHVCQUF1QjtJQUN2QixZQUFZO0lBQ1osaUJBQWlCO0lBQ2pCLGlCQUFpQixFQUFBOztBQVhyQjtNQWNNLGFBQWE7TUFDYixtQkFBbUI7TUFDbkIsZ0JBQWdCO01BQ2hCLFlBQVksRUFBQTs7QUFqQmxCO1FBb0JRLHFCQUFxQjtRQUNyQixXQUFXLEVBQUE7O0FBckJuQjtJQTJCSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLHFCQUFxQjtJQUNyQix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGlCQUFpQixFQUFBOztBQWhDckI7TUFtQ00sbUJBQW1CLEVBQUE7O0FBS3pCO0VBQ0Usa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsY0FBYztFQUNkLGlCQUFpQixFQUFBOztBQUxuQjtJQVFJLGtCQUFrQjtJQUNsQixXQUFXO0lBQ1gsWUFBWSxFQUFBOztBQUloQjtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsY0FBYztFQUNkLGNBQWMsRUFBQTs7QUFKaEI7SUFPSSxpQkFBaUI7SUFDakIsZUFBZSxFQUFBOztBQVJuQjtNQVdNLGVBQWUsRUFBQTs7QUFYckI7SUFnQkksYUFBYTtJQUNiLDhCQUE4QjtJQUM5QixZQUFZO0lBQ1osWUFBWSxFQUFBOztBQW5CaEI7TUFzQk0sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsY0FBYztNQUNkLGVBQWU7TUFDZixpQkFBaUI7TUFDakIsZ0JBQWdCO01BQ2hCLFVBQVU7TUFDVixZQUFZLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zdGFraW5nL3N0YWtpbmcuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uY2hhcnQtaGVhZGVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG5cclxuICAuZ2VuZXJhbCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbjogLTAuNXJlbSAwO1xyXG5cclxuICAgID4gZGl2IHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgbWFyZ2luOiAwLjVyZW0gMDtcclxuICAgICAgaGVpZ2h0OiAycmVtO1xyXG5cclxuICAgICAgLmxhYmVsIHtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgd2lkdGg6IDlyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zZWxlY3RlZCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gICAgZm9udC1zaXplOiAxLjhyZW07XHJcblxyXG4gICAgc3BhbiB7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjlyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uY2hhcnQge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZmxleDogMSAxIGF1dG87XHJcbiAgbWluLWhlaWdodDogNDByZW07XHJcblxyXG4gID4gZGl2IHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gIH1cclxufVxyXG5cclxuLmNoYXJ0LW9wdGlvbnMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBoZWlnaHQ6IDIuNHJlbTtcclxuICBmbGV4OiAwIDAgYXV0bztcclxuXHJcbiAgLnRpdGxlIHtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgcGFkZGluZzogMCAxcmVtO1xyXG5cclxuICAgICY6Zmlyc3QtY2hpbGR7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5vcHRpb25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICBtYXJnaW46IDAgMC4xcmVtO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */" +module.exports = ":host {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.chart-header {\n display: flex;\n flex: 0 0 auto; }\n\n.chart-header .general {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n flex-grow: 1;\n font-size: 1.3rem;\n margin: -0.5rem 0; }\n\n.chart-header .general > div {\n display: flex;\n align-items: center;\n margin: 0.5rem 0;\n height: 2rem; }\n\n.chart-header .general > div .label {\n display: inline-block;\n width: 9rem; }\n\n.chart-header .selected {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n justify-content: center;\n flex-grow: 1;\n font-size: 1.8rem; }\n\n.chart-header .selected span {\n line-height: 2.9rem; }\n\n.chart {\n position: relative;\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-height: 40rem; }\n\n.chart > div {\n position: absolute;\n width: 100%;\n height: 100%; }\n\n.chart-options {\n display: flex;\n align-items: center;\n height: 2.4rem;\n flex: 0 0 auto; }\n\n.chart-options .title {\n font-size: 1.3rem;\n padding: 0 1rem; }\n\n.chart-options .title:first-child {\n padding-left: 0; }\n\n.chart-options .options {\n display: flex;\n justify-content: space-between;\n flex-grow: 1;\n height: 100%; }\n\n.chart-options .options button {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1 1 auto;\n cursor: pointer;\n font-size: 1.3rem;\n margin: 0 0.1rem;\n padding: 0;\n height: 100%; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc3Rha2luZy9FOlxcWmFub1xcY2hlY2tcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxzdGFraW5nXFxzdGFraW5nLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxhQUFhO0VBQ2IsY0FBYyxFQUFBOztBQUZoQjtJQUtJLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsdUJBQXVCO0lBQ3ZCLHVCQUF1QjtJQUN2QixZQUFZO0lBQ1osaUJBQWlCO0lBQ2pCLGlCQUFpQixFQUFBOztBQVhyQjtNQWNNLGFBQWE7TUFDYixtQkFBbUI7TUFDbkIsZ0JBQWdCO01BQ2hCLFlBQVksRUFBQTs7QUFqQmxCO1FBb0JRLHFCQUFxQjtRQUNyQixXQUFXLEVBQUE7O0FBckJuQjtJQTJCSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLHFCQUFxQjtJQUNyQix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGlCQUFpQixFQUFBOztBQWhDckI7TUFtQ00sbUJBQW1CLEVBQUE7O0FBS3pCO0VBQ0Usa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsY0FBYztFQUNkLGlCQUFpQixFQUFBOztBQUxuQjtJQVFJLGtCQUFrQjtJQUNsQixXQUFXO0lBQ1gsWUFBWSxFQUFBOztBQUloQjtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsY0FBYztFQUNkLGNBQWMsRUFBQTs7QUFKaEI7SUFPSSxpQkFBaUI7SUFDakIsZUFBZSxFQUFBOztBQVJuQjtNQVdNLGVBQWUsRUFBQTs7QUFYckI7SUFnQkksYUFBYTtJQUNiLDhCQUE4QjtJQUM5QixZQUFZO0lBQ1osWUFBWSxFQUFBOztBQW5CaEI7TUFzQk0sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsY0FBYztNQUNkLGVBQWU7TUFDZixpQkFBaUI7TUFDakIsZ0JBQWdCO01BQ2hCLFVBQVU7TUFDVixZQUFZLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zdGFraW5nL3N0YWtpbmcuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uY2hhcnQtaGVhZGVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG5cclxuICAuZ2VuZXJhbCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbjogLTAuNXJlbSAwO1xyXG5cclxuICAgID4gZGl2IHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgbWFyZ2luOiAwLjVyZW0gMDtcclxuICAgICAgaGVpZ2h0OiAycmVtO1xyXG5cclxuICAgICAgLmxhYmVsIHtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgd2lkdGg6IDlyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zZWxlY3RlZCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gICAgZm9udC1zaXplOiAxLjhyZW07XHJcblxyXG4gICAgc3BhbiB7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjlyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uY2hhcnQge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZmxleDogMSAxIGF1dG87XHJcbiAgbWluLWhlaWdodDogNDByZW07XHJcblxyXG4gID4gZGl2IHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gIH1cclxufVxyXG5cclxuLmNoYXJ0LW9wdGlvbnMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBoZWlnaHQ6IDIuNHJlbTtcclxuICBmbGV4OiAwIDAgYXV0bztcclxuXHJcbiAgLnRpdGxlIHtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgcGFkZGluZzogMCAxcmVtO1xyXG5cclxuICAgICY6Zmlyc3QtY2hpbGR7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5vcHRpb25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICBtYXJnaW46IDAgMC4xcmVtO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */" /***/ }), @@ -6918,7 +6962,7 @@ module.exports = "
\r\n\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ".form-transfer {\n margin: 2.4rem 0; }\n .form-transfer .alias-name {\n width: 50%; }\n .form-transfer .alias-cost {\n font-size: 1.3rem;\n margin-top: 2rem; }\n .form-transfer .wrap-buttons {\n display: flex;\n justify-content: space-between;\n margin: 2.5rem -0.7rem; }\n .form-transfer .wrap-buttons button {\n margin: 0 0.7rem;\n width: 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdHJhbnNmZXItYWxpYXMvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcdHJhbnNmZXItYWxpYXNcXHRyYW5zZmVyLWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQSIsImZpbGUiOiJzcmMvYXBwL3RyYW5zZmVyLWFsaWFzL3RyYW5zZmVyLWFsaWFzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmZvcm0tdHJhbnNmZXIge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcblxyXG4gIC5hbGlhcy1uYW1lIHtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgfVxyXG5cclxuICAuYWxpYXMtY29zdCB7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbi10b3A6IDJyZW07XHJcbiAgfVxyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcbiAgICAgIHdpZHRoOiAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */" +module.exports = ".form-transfer {\n margin: 2.4rem 0; }\n .form-transfer .alias-name {\n width: 50%; }\n .form-transfer .alias-cost {\n font-size: 1.3rem;\n margin-top: 2rem; }\n .form-transfer .wrap-buttons {\n display: flex;\n justify-content: space-between;\n margin: 2.5rem -0.7rem; }\n .form-transfer .wrap-buttons button {\n margin: 0 0.7rem;\n width: 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdHJhbnNmZXItYWxpYXMvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcdHJhbnNmZXItYWxpYXNcXHRyYW5zZmVyLWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQSIsImZpbGUiOiJzcmMvYXBwL3RyYW5zZmVyLWFsaWFzL3RyYW5zZmVyLWFsaWFzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmZvcm0tdHJhbnNmZXIge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcblxyXG4gIC5hbGlhcy1uYW1lIHtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgfVxyXG5cclxuICAuYWxpYXMtY29zdCB7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbi10b3A6IDJyZW07XHJcbiAgfVxyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcbiAgICAgIHdpZHRoOiAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */" /***/ }), @@ -7079,7 +7123,7 @@ module.exports = "
\r\n
\r\n /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ":host {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.head {\n flex: 0 0 auto;\n box-sizing: content-box;\n margin: -3rem -3rem 0; }\n\n.messages-content {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n flex-grow: 1; }\n\n.messages-content .messages-list {\n display: flex;\n flex-direction: column;\n font-size: 1.3rem;\n margin: 1rem -3rem;\n padding: 0 3rem;\n overflow-y: overlay; }\n\n.messages-content .messages-list div {\n margin: 0.7rem 0; }\n\n.messages-content .messages-list div.date {\n text-align: center; }\n\n.messages-content .messages-list div.my, .messages-content .messages-list div.buddy {\n position: relative;\n padding: 1.8rem;\n max-width: 60%; }\n\n.messages-content .messages-list div.buddy {\n align-self: flex-end; }\n\n.messages-content .type-message {\n display: flex;\n flex: 0 0 auto;\n width: 100%;\n height: 4.2rem; }\n\n.messages-content .type-message .input-block {\n width: 100%; }\n\n.messages-content .type-message .input-block > textarea {\n min-height: 4.2rem; }\n\n.messages-content .type-message button {\n flex: 0 0 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdHlwaW5nLW1lc3NhZ2UvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcdHlwaW5nLW1lc3NhZ2VcXHR5cGluZy1tZXNzYWdlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxjQUFjO0VBQ2QsdUJBQXVCO0VBQ3ZCLHFCQUFxQixFQUFBOztBQUd2QjtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsOEJBQThCO0VBQzlCLFlBQVksRUFBQTs7QUFKZDtJQU9JLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixlQUFlO0lBQ2YsbUJBQW1CLEVBQUE7O0FBWnZCO01BZU0sZ0JBQWdCLEVBQUE7O0FBZnRCO1FBa0JRLGtCQUFrQixFQUFBOztBQWxCMUI7UUFzQlEsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixjQUFjLEVBQUE7O0FBeEJ0QjtRQTRCUSxvQkFBb0IsRUFBQTs7QUE1QjVCO0lBa0NJLGFBQWE7SUFDYixjQUFjO0lBQ2QsV0FBVztJQUNYLGNBQWMsRUFBQTs7QUFyQ2xCO01Bd0NNLFdBQVcsRUFBQTs7QUF4Q2pCO1FBMkNRLGtCQUFrQixFQUFBOztBQTNDMUI7TUFnRE0sZUFBZSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvdHlwaW5nLW1lc3NhZ2UvdHlwaW5nLW1lc3NhZ2UuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uaGVhZCB7XHJcbiAgZmxleDogMCAwIGF1dG87XHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XHJcbiAgbWFyZ2luOiAtM3JlbSAtM3JlbSAwO1xyXG59XHJcblxyXG4ubWVzc2FnZXMtY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBmbGV4LWdyb3c6IDE7XHJcblxyXG4gIC5tZXNzYWdlcy1saXN0IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBtYXJnaW46IDFyZW0gLTNyZW07XHJcbiAgICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgICBvdmVyZmxvdy15OiBvdmVybGF5O1xyXG5cclxuICAgIGRpdiB7XHJcbiAgICAgIG1hcmdpbjogMC43cmVtIDA7XHJcblxyXG4gICAgICAmLmRhdGUge1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5teSwgJi5idWRkeSB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIHBhZGRpbmc6IDEuOHJlbTtcclxuICAgICAgICBtYXgtd2lkdGg6IDYwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5idWRkeSB7XHJcbiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC50eXBlLW1lc3NhZ2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDQuMnJlbTtcclxuXHJcbiAgICAuaW5wdXQtYmxvY2sge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgID4gdGV4dGFyZWEge1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IDQuMnJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIGZsZXg6IDAgMCAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiJdfQ== */" +module.exports = ":host {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.head {\n flex: 0 0 auto;\n box-sizing: content-box;\n margin: -3rem -3rem 0; }\n\n.messages-content {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n flex-grow: 1; }\n\n.messages-content .messages-list {\n display: flex;\n flex-direction: column;\n font-size: 1.3rem;\n margin: 1rem -3rem;\n padding: 0 3rem;\n overflow-y: overlay; }\n\n.messages-content .messages-list div {\n margin: 0.7rem 0; }\n\n.messages-content .messages-list div.date {\n text-align: center; }\n\n.messages-content .messages-list div.my, .messages-content .messages-list div.buddy {\n position: relative;\n padding: 1.8rem;\n max-width: 60%; }\n\n.messages-content .messages-list div.buddy {\n align-self: flex-end; }\n\n.messages-content .type-message {\n display: flex;\n flex: 0 0 auto;\n width: 100%;\n height: 4.2rem; }\n\n.messages-content .type-message .input-block {\n width: 100%; }\n\n.messages-content .type-message .input-block > textarea {\n min-height: 4.2rem; }\n\n.messages-content .type-message button {\n flex: 0 0 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdHlwaW5nLW1lc3NhZ2UvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcdHlwaW5nLW1lc3NhZ2VcXHR5cGluZy1tZXNzYWdlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxjQUFjO0VBQ2QsdUJBQXVCO0VBQ3ZCLHFCQUFxQixFQUFBOztBQUd2QjtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsOEJBQThCO0VBQzlCLFlBQVksRUFBQTs7QUFKZDtJQU9JLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixlQUFlO0lBQ2YsbUJBQW1CLEVBQUE7O0FBWnZCO01BZU0sZ0JBQWdCLEVBQUE7O0FBZnRCO1FBa0JRLGtCQUFrQixFQUFBOztBQWxCMUI7UUFzQlEsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixjQUFjLEVBQUE7O0FBeEJ0QjtRQTRCUSxvQkFBb0IsRUFBQTs7QUE1QjVCO0lBa0NJLGFBQWE7SUFDYixjQUFjO0lBQ2QsV0FBVztJQUNYLGNBQWMsRUFBQTs7QUFyQ2xCO01Bd0NNLFdBQVcsRUFBQTs7QUF4Q2pCO1FBMkNRLGtCQUFrQixFQUFBOztBQTNDMUI7TUFnRE0sZUFBZSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvdHlwaW5nLW1lc3NhZ2UvdHlwaW5nLW1lc3NhZ2UuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uaGVhZCB7XHJcbiAgZmxleDogMCAwIGF1dG87XHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XHJcbiAgbWFyZ2luOiAtM3JlbSAtM3JlbSAwO1xyXG59XHJcblxyXG4ubWVzc2FnZXMtY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBmbGV4LWdyb3c6IDE7XHJcblxyXG4gIC5tZXNzYWdlcy1saXN0IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBtYXJnaW46IDFyZW0gLTNyZW07XHJcbiAgICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgICBvdmVyZmxvdy15OiBvdmVybGF5O1xyXG5cclxuICAgIGRpdiB7XHJcbiAgICAgIG1hcmdpbjogMC43cmVtIDA7XHJcblxyXG4gICAgICAmLmRhdGUge1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5teSwgJi5idWRkeSB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIHBhZGRpbmc6IDEuOHJlbTtcclxuICAgICAgICBtYXgtd2lkdGg6IDYwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5idWRkeSB7XHJcbiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC50eXBlLW1lc3NhZ2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDQuMnJlbTtcclxuXHJcbiAgICAuaW5wdXQtYmxvY2sge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgID4gdGV4dGFyZWEge1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IDQuMnJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIGZsZXg6IDAgMCAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiJdfQ== */" /***/ }), @@ -7146,7 +7190,7 @@ module.exports = "
\r\n\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ".form-details {\n margin-top: 1.8rem; }\n .form-details .input-block:first-child {\n width: 50%; }\n .form-details .seed-phrase {\n display: flex;\n font-size: 1.4rem;\n line-height: 1.5rem;\n padding: 1.4rem;\n width: 100%;\n height: 8.8rem; }\n .form-details .seed-phrase .seed-phrase-hint {\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n width: 100%;\n height: 100%; }\n .form-details .seed-phrase .seed-phrase-content {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n width: 100%;\n height: 100%; }\n .form-details .wallet-buttons {\n display: flex;\n align-items: center;\n justify-content: space-between; }\n .form-details .wallet-buttons button {\n margin: 2.9rem 0;\n width: 100%;\n max-width: 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvd2FsbGV0LWRldGFpbHMvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcd2FsbGV0LWRldGFpbHNcXHdhbGxldC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7RUFEcEI7SUFNTSxVQUFVLEVBQUE7RUFOaEI7SUFXSSxhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsV0FBVztJQUNYLGNBQWMsRUFBQTtFQWhCbEI7TUFtQk0sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsZUFBZTtNQUNmLFdBQVc7TUFDWCxZQUFZLEVBQUE7RUF4QmxCO01BNEJNLGFBQWE7TUFDYixzQkFBc0I7TUFDdEIsZUFBZTtNQUNmLFdBQVc7TUFDWCxZQUFZLEVBQUE7RUFoQ2xCO0lBcUNJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsOEJBQThCLEVBQUE7RUF2Q2xDO01BMENNLGdCQUFnQjtNQUNoQixXQUFXO01BQ1gsZ0JBQWdCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC93YWxsZXQtZGV0YWlscy93YWxsZXQtZGV0YWlscy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWRldGFpbHMge1xyXG4gIG1hcmdpbi10b3A6IDEuOHJlbTtcclxuXHJcbiAgLmlucHV0LWJsb2NrIHtcclxuXHJcbiAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgd2lkdGg6IDUwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zZWVkLXBocmFzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZm9udC1zaXplOiAxLjRyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xyXG4gICAgcGFkZGluZzogMS40cmVtO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDguOHJlbTtcclxuXHJcbiAgICAuc2VlZC1waHJhc2UtaGludCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlZWQtcGhyYXNlLWNvbnRlbnQge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAud2FsbGV0LWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAyLjlyZW0gMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0= */" +module.exports = ".form-details {\n margin-top: 1.8rem; }\n .form-details .input-block:first-child {\n width: 50%; }\n .form-details .seed-phrase {\n display: flex;\n font-size: 1.4rem;\n line-height: 1.5rem;\n padding: 1.4rem;\n width: 100%;\n height: 8.8rem; }\n .form-details .seed-phrase .seed-phrase-hint {\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n width: 100%;\n height: 100%; }\n .form-details .seed-phrase .seed-phrase-content {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n width: 100%;\n height: 100%; }\n .form-details .wallet-buttons {\n display: flex;\n align-items: center;\n justify-content: space-between; }\n .form-details .wallet-buttons button {\n margin: 2.9rem 0;\n width: 100%;\n max-width: 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvd2FsbGV0LWRldGFpbHMvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcd2FsbGV0LWRldGFpbHNcXHdhbGxldC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7RUFEcEI7SUFNTSxVQUFVLEVBQUE7RUFOaEI7SUFXSSxhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsV0FBVztJQUNYLGNBQWMsRUFBQTtFQWhCbEI7TUFtQk0sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsZUFBZTtNQUNmLFdBQVc7TUFDWCxZQUFZLEVBQUE7RUF4QmxCO01BNEJNLGFBQWE7TUFDYixzQkFBc0I7TUFDdEIsZUFBZTtNQUNmLFdBQVc7TUFDWCxZQUFZLEVBQUE7RUFoQ2xCO0lBcUNJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsOEJBQThCLEVBQUE7RUF2Q2xDO01BMENNLGdCQUFnQjtNQUNoQixXQUFXO01BQ1gsZ0JBQWdCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC93YWxsZXQtZGV0YWlscy93YWxsZXQtZGV0YWlscy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWRldGFpbHMge1xyXG4gIG1hcmdpbi10b3A6IDEuOHJlbTtcclxuXHJcbiAgLmlucHV0LWJsb2NrIHtcclxuXHJcbiAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgd2lkdGg6IDUwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zZWVkLXBocmFzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZm9udC1zaXplOiAxLjRyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xyXG4gICAgcGFkZGluZzogMS40cmVtO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDguOHJlbTtcclxuXHJcbiAgICAuc2VlZC1waHJhc2UtaGludCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlZWQtcGhyYXNlLWNvbnRlbnQge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAud2FsbGV0LWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAyLjlyZW0gMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0= */" /***/ }), @@ -7296,7 +7340,7 @@ module.exports = "
\r\n
\r\n

event.target).readOnly) {\r\n event.preventDefault();\r\n }\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, HostListener} from '@angular/core';\r\nimport {VariablesService} from '../../services/variables.service';\r\n\r\n@Directive({\r\n selector: '[appInputValidate]'\r\n})\r\nexport class InputValidateDirective {\r\n\r\n private type: string;\r\n\r\n constructor(private el: ElementRef, private variablesService: VariablesService) {\r\n }\r\n\r\n @Input('appInputValidate')\r\n public set defineInputType(type: string) {\r\n this.type = type;\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n handleInput(event: Event) {\r\n if ( this.type === 'money' ) {\r\n this.moneyValidation(event);\r\n } else if ( this.type === 'integer' ) {\r\n this.integerValidation(event);\r\n }\r\n }\r\n\r\n private moneyValidation(event: Event) {\r\n let currentValue = (event.target).value;\r\n const originalValue = currentValue;\r\n const OnlyD = /[^\\d\\.]/g;\r\n const _has_error = currentValue.match(OnlyD);\r\n if (_has_error && _has_error.length) {\r\n currentValue = currentValue.replace(',', '.').replace(OnlyD, '');\r\n }\r\n const _double_separator = currentValue.match(/\\./g);\r\n if (_double_separator && _double_separator.length > 1) {\r\n currentValue = currentValue.substr(0, currentValue.lastIndexOf('.'));\r\n }\r\n if (currentValue.indexOf('.') === 0) {\r\n currentValue = '0' + currentValue;\r\n }\r\n const _zero_fill = currentValue.split('.');\r\n if (_zero_fill[0].length > 7) {\r\n _zero_fill[0] = _zero_fill[0].substr(0, 7);\r\n }\r\n\r\n if (1 in _zero_fill && _zero_fill[1].length) {\r\n _zero_fill[1] = _zero_fill[1].substr(0, this.variablesService.digits);\r\n }\r\n currentValue = _zero_fill.join('.');\r\n if (currentValue !== originalValue) {\r\n const cursorPosition = (event.target).selectionEnd;\r\n (event.target).value = currentValue;\r\n (event.target).setSelectionRange(cursorPosition, cursorPosition);\r\n (event.target).dispatchEvent(new Event('input'));\r\n }\r\n }\r\n\r\n private integerValidation(event: Event) {\r\n let currentValue = (event.target).value;\r\n const originalValue = currentValue;\r\n const OnlyD = /[^\\d]/g;\r\n const _has_error = currentValue.match(OnlyD);\r\n if (_has_error && _has_error.length) {\r\n currentValue = currentValue.replace(OnlyD, '');\r\n }\r\n if (currentValue !== originalValue) {\r\n const cursorPosition = (event.target).selectionEnd;\r\n (event.target).value = currentValue;\r\n (event.target).setSelectionRange(cursorPosition, cursorPosition);\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n
\\r\\n {{title}}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\"","module.exports = \":host {\\n position: fixed;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: rgba(255, 255, 255, 0.25); }\\n\\n.modal {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n background-position: center;\\n background-size: 200%;\\n padding: 2rem;\\n width: 34rem; }\\n\\n.modal .content {\\n display: flex;\\n margin: 1.2rem 0; }\\n\\n.modal .content .icon {\\n flex: 0 0 auto;\\n width: 4.4rem;\\n height: 4.4rem; }\\n\\n.modal .content .icon.error {\\n -webkit-mask: url('modal-alert.svg') no-repeat center;\\n mask: url('modal-alert.svg') no-repeat center; }\\n\\n.modal .content .icon.success {\\n -webkit-mask: url('modal-success.svg') no-repeat center;\\n mask: url('modal-success.svg') no-repeat center; }\\n\\n.modal .content .icon.info {\\n -webkit-mask: url('modal-info.svg') no-repeat center;\\n mask: url('modal-info.svg') no-repeat center; }\\n\\n.modal .content .message-container {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n justify-content: center;\\n margin-left: 2rem; }\\n\\n.modal .content .message-container .title {\\n font-size: 1.8rem;\\n font-weight: 600;\\n line-height: 2.2rem; }\\n\\n.modal .content .message-container .message {\\n font-size: 1.3rem;\\n line-height: 1.8rem;\\n margin-top: 0.4rem; }\\n\\n.modal .action-button {\\n margin: 1.2rem auto 0.6rem;\\n width: 10rem;\\n height: 2.4rem; }\\n\\n.modal .close-button {\\n position: absolute;\\n top: 0;\\n right: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: transparent;\\n margin: 0;\\n padding: 0;\\n width: 2.4rem;\\n height: 2.4rem; }\\n\\n.modal .close-button .icon {\\n -webkit-mask: url('close.svg') no-repeat center;\\n mask: url('close.svg') no-repeat center;\\n width: 2.4rem;\\n height: 2.4rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy9tb2RhbC1jb250YWluZXIvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcX2hlbHBlcnNcXGRpcmVjdGl2ZXNcXG1vZGFsLWNvbnRhaW5lclxcbW9kYWwtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZUFBZTtFQUNmLE1BQU07RUFDTixTQUFTO0VBQ1QsT0FBTztFQUNQLFFBQVE7RUFDUixhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLHVCQUF1QjtFQUN2QixxQ0FBcUMsRUFBQTs7QUFFdkM7RUFDRSxrQkFBa0I7RUFDbEIsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QiwyQkFBMkI7RUFDM0IscUJBQXFCO0VBQ3JCLGFBQWE7RUFDYixZQUFZLEVBQUE7O0FBUGQ7SUFVSSxhQUFhO0lBQ2IsZ0JBQWdCLEVBQUE7O0FBWHBCO01BY00sY0FBYztNQUNkLGFBQWE7TUFDYixjQUFjLEVBQUE7O0FBaEJwQjtRQW1CUSxxREFBNkQ7Z0JBQTdELDZDQUE2RCxFQUFBOztBQW5CckU7UUF1QlEsdURBQStEO2dCQUEvRCwrQ0FBK0QsRUFBQTs7QUF2QnZFO1FBMkJRLG9EQUE0RDtnQkFBNUQsNENBQTRELEVBQUE7O0FBM0JwRTtNQWdDTSxhQUFhO01BQ2Isc0JBQXNCO01BQ3RCLHVCQUF1QjtNQUN2Qix1QkFBdUI7TUFDdkIsaUJBQWlCLEVBQUE7O0FBcEN2QjtRQXVDUSxpQkFBaUI7UUFDakIsZ0JBQWdCO1FBQ2hCLG1CQUFtQixFQUFBOztBQXpDM0I7UUE2Q1EsaUJBQWlCO1FBQ2pCLG1CQUFtQjtRQUNuQixrQkFBa0IsRUFBQTs7QUEvQzFCO0lBcURJLDBCQUEwQjtJQUMxQixZQUFZO0lBQ1osY0FBYyxFQUFBOztBQXZEbEI7SUEyREksa0JBQWtCO0lBQ2xCLE1BQU07SUFDTixRQUFRO0lBQ1IsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsdUJBQXVCO0lBQ3ZCLFNBQVM7SUFDVCxVQUFVO0lBQ1YsYUFBYTtJQUNiLGNBQWMsRUFBQTs7QUFyRWxCO01Bd0VNLCtDQUF1RDtjQUF2RCx1Q0FBdUQ7TUFDdkQsYUFBYTtNQUNiLGNBQWMsRUFBQSIsImZpbGUiOiJzcmMvYXBwL19oZWxwZXJzL2RpcmVjdGl2ZXMvbW9kYWwtY29udGFpbmVyL21vZGFsLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgdG9wOiAwO1xyXG4gIGJvdHRvbTogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHJpZ2h0OiAwO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpO1xyXG59XHJcbi5tb2RhbCB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XHJcbiAgYmFja2dyb3VuZC1zaXplOiAyMDAlO1xyXG4gIHBhZGRpbmc6IDJyZW07XHJcbiAgd2lkdGg6IDM0cmVtO1xyXG5cclxuICAuY29udGVudCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAxLjJyZW0gMDtcclxuXHJcbiAgICAuaWNvbiB7XHJcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgICB3aWR0aDogNC40cmVtO1xyXG4gICAgICBoZWlnaHQ6IDQuNHJlbTtcclxuXHJcbiAgICAgICYuZXJyb3Ige1xyXG4gICAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9tb2RhbC1hbGVydC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuc3VjY2VzcyB7XHJcbiAgICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL21vZGFsLXN1Y2Nlc3Muc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmluZm8ge1xyXG4gICAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9tb2RhbC1pbmZvLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5tZXNzYWdlLWNvbnRhaW5lciB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDJyZW07XHJcblxyXG4gICAgICAudGl0bGUge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMS44cmVtO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIuMnJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLm1lc3NhZ2Uge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjhyZW07XHJcbiAgICAgICAgbWFyZ2luLXRvcDogMC40cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWN0aW9uLWJ1dHRvbiB7XHJcbiAgICBtYXJnaW46IDEuMnJlbSBhdXRvIDAuNnJlbTtcclxuICAgIHdpZHRoOiAxMHJlbTtcclxuICAgIGhlaWdodDogMi40cmVtO1xyXG4gIH1cclxuXHJcbiAgLmNsb3NlLWJ1dHRvbiB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7XHJcbiAgICByaWdodDogMDtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICB3aWR0aDogMi40cmVtO1xyXG4gICAgaGVpZ2h0OiAyLjRyZW07XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvY2xvc2Uuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB3aWR0aDogMi40cmVtO1xyXG4gICAgICBoZWlnaHQ6IDIuNHJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef} from '@angular/core';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-modal-container',\r\n templateUrl: './modal-container.component.html',\r\n styleUrls: ['./modal-container.component.scss']\r\n})\r\nexport class ModalContainerComponent implements OnInit {\r\n\r\n public title: string;\r\n @Input() type: string;\r\n @Input() message: string;\r\n @Output() close = new EventEmitter();\r\n @ViewChild('btn') button: ElementRef;\r\n\r\n constructor(private translate: TranslateService) {}\r\n\r\n ngOnInit() {\r\n this.button.nativeElement.focus();\r\n switch (this.type) {\r\n case 'error': this.title = this.translate.instant('MODALS.ERROR'); break;\r\n case 'success': this.title = this.translate.instant('MODALS.SUCCESS'); break;\r\n case 'info': this.title = this.translate.instant('MODALS.INFO'); break;\r\n }\r\n }\r\n\r\n onClose() {\r\n this.close.emit();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{ label | translate }}\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \".progress-bar-container {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n padding: 0 3rem;\\n width: 100%;\\n height: 3rem; }\\n .progress-bar-container .progress-bar {\\n position: absolute;\\n top: -0.7rem;\\n left: 0;\\n margin: 0 3rem;\\n width: calc(100% - 6rem);\\n height: 0.7rem; }\\n .progress-bar-container .progress-bar .progress-bar-full {\\n height: 0.7rem; }\\n .progress-bar-container .progress-labels {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n font-size: 1.2rem;\\n height: 100%; }\\n .progress-bar-container .progress-labels span {\\n flex: 1 0 0;\\n text-align: center; }\\n .progress-bar-container .progress-labels span:first-child {\\n text-align: left; }\\n .progress-bar-container .progress-labels span:last-child {\\n text-align: right; }\\n .progress-bar-container .progress-time {\\n position: absolute;\\n top: -3rem;\\n left: 50%;\\n transform: translateX(-50%);\\n font-size: 1.2rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy9wcm9ncmVzcy1jb250YWluZXIvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcX2hlbHBlcnNcXGRpcmVjdGl2ZXNcXHByb2dyZXNzLWNvbnRhaW5lclxccHJvZ3Jlc3MtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCO0VBQ2xCLFNBQVM7RUFDVCxPQUFPO0VBQ1AsZUFBZTtFQUNmLFdBQVc7RUFDWCxZQUFZLEVBQUE7RUFOZDtJQVNJLGtCQUFrQjtJQUNsQixZQUFZO0lBQ1osT0FBTztJQUNQLGNBQWM7SUFDZCx3QkFBd0I7SUFDeEIsY0FBYyxFQUFBO0VBZGxCO01BaUJNLGNBQWMsRUFBQTtFQWpCcEI7SUFzQkksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQiw4QkFBOEI7SUFDOUIsaUJBQWlCO0lBQ2pCLFlBQVksRUFBQTtFQTFCaEI7TUE2Qk0sV0FBVztNQUNYLGtCQUFrQixFQUFBO0VBOUJ4QjtRQWlDUSxnQkFBZ0IsRUFBQTtFQWpDeEI7UUFxQ1EsaUJBQWlCLEVBQUE7RUFyQ3pCO0lBMkNJLGtCQUFrQjtJQUNsQixVQUFVO0lBQ1YsU0FBUztJQUNULDJCQUEyQjtJQUMzQixpQkFBaUIsRUFBQSIsImZpbGUiOiJzcmMvYXBwL19oZWxwZXJzL2RpcmVjdGl2ZXMvcHJvZ3Jlc3MtY29udGFpbmVyL3Byb2dyZXNzLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgYm90dG9tOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgcGFkZGluZzogMCAzcmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogM3JlbTtcclxuXHJcbiAgLnByb2dyZXNzLWJhciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IC0wLjdyZW07XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgbWFyZ2luOiAwIDNyZW07XHJcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gNnJlbSk7XHJcbiAgICBoZWlnaHQ6IDAuN3JlbTtcclxuXHJcbiAgICAucHJvZ3Jlc3MtYmFyLWZ1bGwge1xyXG4gICAgICBoZWlnaHQ6IDAuN3JlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy1sYWJlbHMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmb250LXNpemU6IDEuMnJlbTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuXHJcbiAgICBzcGFuIHtcclxuICAgICAgZmxleDogMSAwIDA7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy10aW1lIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogLTNyZW07XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICBmb250LXNpemU6IDEuMnJlbTtcclxuICB9XHJcbn1cclxuIl19 */\"","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-progress-container',\r\n templateUrl: './progress-container.component.html',\r\n styleUrls: ['./progress-container.component.scss']\r\n})\r\nexport class ProgressContainerComponent implements OnInit {\r\n\r\n @Input() width: string;\r\n @Input() labels: [];\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n}\r\n","module.exports = \"
\\r\\n {{ 'STAKING.SWITCH.ON' | translate }}\\r\\n \\r\\n {{ 'STAKING.SWITCH.OFF' | translate }}\\r\\n
\\r\\n\"","module.exports = \".switch {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n border-radius: 1rem;\\n cursor: pointer;\\n font-size: 1rem;\\n padding: 0.5rem;\\n width: 5rem;\\n height: 2rem; }\\n .switch .circle {\\n border-radius: 1rem;\\n width: 1.2rem;\\n height: 1.2rem; }\\n .switch .option {\\n margin: 0 0.2rem;\\n line-height: 1.2rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy9zdGFraW5nLXN3aXRjaC9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxfaGVscGVyc1xcZGlyZWN0aXZlc1xcc3Rha2luZy1zd2l0Y2hcXHN0YWtpbmctc3dpdGNoLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQiw4QkFBOEI7RUFDOUIsbUJBQW1CO0VBQ25CLGVBQWU7RUFDZixlQUFlO0VBQ2YsZUFBZTtFQUNmLFdBQVc7RUFDWCxZQUFZLEVBQUE7RUFUZDtJQVlJLG1CQUFtQjtJQUNuQixhQUFhO0lBQ2IsY0FBYyxFQUFBO0VBZGxCO0lBa0JJLGdCQUFnQjtJQUNoQixtQkFBbUIsRUFBQSIsImZpbGUiOiJzcmMvYXBwL19oZWxwZXJzL2RpcmVjdGl2ZXMvc3Rha2luZy1zd2l0Y2gvc3Rha2luZy1zd2l0Y2guY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuc3dpdGNoIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIGJvcmRlci1yYWRpdXM6IDFyZW07XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGZvbnQtc2l6ZTogMXJlbTtcclxuICBwYWRkaW5nOiAwLjVyZW07XHJcbiAgd2lkdGg6IDVyZW07XHJcbiAgaGVpZ2h0OiAycmVtO1xyXG5cclxuICAuY2lyY2xlIHtcclxuICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XHJcbiAgICB3aWR0aDogMS4ycmVtO1xyXG4gICAgaGVpZ2h0OiAxLjJyZW07XHJcbiAgfVxyXG5cclxuICAub3B0aW9uIHtcclxuICAgIG1hcmdpbjogMCAwLjJyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS4ycmVtO1xyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, OnInit, Input, Output, EventEmitter} from '@angular/core';\r\nimport {BackendService} from '../../services/backend.service';\r\nimport {VariablesService} from '../../services/variables.service';\r\n\r\n@Component({\r\n selector: 'app-staking-switch',\r\n templateUrl: './staking-switch.component.html',\r\n styleUrls: ['./staking-switch.component.scss']\r\n})\r\nexport class StakingSwitchComponent implements OnInit {\r\n\r\n @Input() wallet_id: boolean;\r\n @Input() staking: boolean;\r\n @Output() stakingChange = new EventEmitter();\r\n\r\n constructor(private backend: BackendService, private variablesService: VariablesService) {}\r\n\r\n ngOnInit() {}\r\n\r\n toggleStaking() {\r\n const wallet = this.variablesService.getWallet(this.wallet_id);\r\n if (wallet && wallet.loaded) {\r\n this.stakingChange.emit(!this.staking);\r\n if (!this.staking) {\r\n this.backend.startPosMining(this.wallet_id);\r\n } else {\r\n this.backend.stopPosMining(this.wallet_id);\r\n }\r\n }\r\n }\r\n}\r\n","import {Directive, Input, Output, ElementRef, HostListener, Renderer2, HostBinding, OnDestroy, EventEmitter} from '@angular/core';\r\nimport {ActivatedRoute} from '@angular/router';\r\n\r\n@Directive({\r\n selector: '[tooltip]'\r\n})\r\n\r\nexport class TooltipDirective implements OnDestroy {\r\n\r\n @HostBinding('style.cursor') cursor;\r\n\r\n @Input('tooltip') tooltipInner: any;\r\n @Input() placement: string;\r\n @Input() tooltipClass: string;\r\n @Input() timeout = 0;\r\n @Input() delay = 0;\r\n @Input() showWhenNoOverflow = true;\r\n @Output() onHide = new EventEmitter();\r\n tooltip: HTMLElement;\r\n private enter: (event: MouseEvent) => void;\r\n private leave: (event: MouseEvent) => void;\r\n\r\n removeTooltipTimeout;\r\n removeTooltipTimeoutInner;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2, private route: ActivatedRoute) {\r\n }\r\n\r\n @HostListener('mouseenter') onMouseEnter() {\r\n if (this.showWhenNoOverflow || (!this.showWhenNoOverflow && this.el.nativeElement.offsetWidth < this.el.nativeElement.scrollWidth)) {\r\n this.cursor = 'pointer';\r\n if (!this.tooltip) {\r\n this.show();\r\n } else {\r\n this.cancelHide();\r\n }\r\n }\r\n }\r\n\r\n @HostListener('mouseleave') onMouseLeave() {\r\n if (this.tooltip) {\r\n this.hide();\r\n }\r\n }\r\n\r\n show() {\r\n this.create();\r\n this.placement = this.placement === null ? 'top' : this.placement;\r\n this.setPosition(this.placement);\r\n }\r\n\r\n hide() {\r\n this.removeTooltipTimeout = setTimeout(() => {\r\n this.renderer.setStyle(this.tooltip, 'opacity', '0');\r\n this.removeTooltipTimeoutInner = setTimeout(() => {\r\n this.renderer.removeChild(document.body, this.tooltip);\r\n this.tooltip.removeEventListener('mouseenter', this.enter);\r\n this.tooltip.removeEventListener('mouseleave', this.leave);\r\n this.tooltip = null;\r\n this.onHide.emit(true);\r\n }, this.delay);\r\n }, this.timeout);\r\n }\r\n\r\n cancelHide() {\r\n clearTimeout(this.removeTooltipTimeout);\r\n clearTimeout(this.removeTooltipTimeoutInner);\r\n this.renderer.setStyle(this.tooltip, 'opacity', '1');\r\n }\r\n\r\n create() {\r\n this.tooltip = this.renderer.createElement('div');\r\n let innerBlock = this.renderer.createElement('div');\r\n if (typeof this.tooltipInner === 'string') {\r\n innerBlock.innerHTML = this.tooltipInner;\r\n } else {\r\n innerBlock = this.tooltipInner;\r\n }\r\n this.renderer.addClass(innerBlock, 'tooltip-inner');\r\n this.renderer.addClass(innerBlock, 'scrolled-content');\r\n this.renderer.appendChild(this.tooltip, innerBlock);\r\n this.renderer.appendChild(document.body, this.tooltip);\r\n\r\n this.enter = () => {\r\n this.cancelHide();\r\n };\r\n this.tooltip.addEventListener('mouseenter', this.enter);\r\n this.leave = () => {\r\n if (this.tooltip) {\r\n this.hide();\r\n }\r\n };\r\n this.tooltip.addEventListener('mouseleave', this.leave);\r\n\r\n this.renderer.setStyle(document.body, 'position', 'relative');\r\n this.renderer.setStyle(this.tooltip, 'position', 'absolute');\r\n if (this.tooltipClass !== null) {\r\n const classes = this.tooltipClass.split(' ');\r\n for (let i = 0; i < classes.length; i++) {\r\n this.renderer.addClass(this.tooltip, classes[i]);\r\n }\r\n }\r\n this.renderer.setStyle(this.tooltip, 'opacity', '0');\r\n this.renderer.setStyle(this.tooltip, '-webkit-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, '-moz-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, '-o-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, 'transition', `opacity ${this.delay}ms`);\r\n window.setTimeout(() => {\r\n this.renderer.setStyle(this.tooltip, 'opacity', '1');\r\n }, 0);\r\n }\r\n\r\n setPosition(placement) {\r\n const hostPos = this.el.nativeElement.getBoundingClientRect();\r\n this.renderer.addClass(this.tooltip, 'ng-tooltip-' + placement);\r\n const topExit = hostPos.top - this.tooltip.getBoundingClientRect().height - parseInt(getComputedStyle(this.tooltip).marginTop, 10) < 0;\r\n const bottomExit = window.innerHeight < hostPos.bottom + this.tooltip.getBoundingClientRect().height + parseInt(getComputedStyle(this.tooltip).marginTop, 10);\r\n\r\n switch (placement) {\r\n case 'top':\r\n if (topExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('bottom');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left + (hostPos.right - hostPos.left) / 2 - this.tooltip.getBoundingClientRect().width / 2 + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top - this.tooltip.getBoundingClientRect().height + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'top-left':\r\n if (topExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('bottom-left');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top - this.tooltip.getBoundingClientRect().height + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'top-right':\r\n if (topExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('bottom-right');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.right - this.tooltip.offsetWidth + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top - this.tooltip.getBoundingClientRect().height + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'bottom':\r\n if (bottomExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('top');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left + (hostPos.right - hostPos.left) / 2 - this.tooltip.getBoundingClientRect().width / 2 + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'bottom-left':\r\n if (bottomExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('top-left');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'bottom-right':\r\n if (bottomExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('top-right');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.right - this.tooltip.offsetWidth + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'left':\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left - this.tooltip.getBoundingClientRect().width + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top + (hostPos.bottom - hostPos.top) / 2 - this.tooltip.getBoundingClientRect().height / 2 + 'px');\r\n break;\r\n case 'left-top':\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left - this.tooltip.getBoundingClientRect().width + 'px');\r\n break;\r\n case 'left-bottom':\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left - this.tooltip.getBoundingClientRect().width + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom - this.tooltip.getBoundingClientRect().height + 'px');\r\n break;\r\n case 'right':\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.right + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top + (hostPos.bottom - hostPos.top) / 2 - this.tooltip.getBoundingClientRect().height / 2 + 'px');\r\n break;\r\n case 'right-top':\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.right + 'px');\r\n break;\r\n case 'right-bottom':\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.right + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom - this.tooltip.getBoundingClientRect().height + 'px');\r\n break;\r\n }\r\n }\r\n\r\n checkSides() {\r\n if (this.tooltip.getBoundingClientRect().left < 0) {\r\n this.renderer.setStyle(this.tooltip, 'left', 0);\r\n }\r\n if (this.tooltip.getBoundingClientRect().right > window.innerWidth) {\r\n this.renderer.setStyle(this.tooltip, 'left', window.innerWidth - this.tooltip.getBoundingClientRect().width + 'px');\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n clearTimeout(this.removeTooltipTimeout);\r\n clearTimeout(this.removeTooltipTimeoutInner);\r\n if (this.tooltip) {\r\n this.renderer.removeChild(document.body, this.tooltip);\r\n this.tooltip = null;\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.ID' | translate }}\\r\\n {{transaction.tx_hash}}\\r\\n {{ 'HISTORY.DETAILS.SIZE' | translate }}\\r\\n {{ 'HISTORY.DETAILS.SIZE_VALUE' | translate : {value: transaction.tx_blob_size} }}\\r\\n
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.HEIGHT' | translate }}\\r\\n {{transaction.height}}\\r\\n {{ 'HISTORY.DETAILS.CONFIRMATION' | translate }}\\r\\n {{transaction.height === 0 ? 0 : variablesService.height_app - transaction.height}}\\r\\n
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.INPUTS' | translate }}\\r\\n {{inputs.join(', ')}}\\r\\n {{ 'HISTORY.DETAILS.OUTPUTS' | translate }}\\r\\n {{outputs.join(', ')}}\\r\\n
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.PAYMENT_ID' | translate }}\\r\\n \\r\\n {{transaction.payment_id}}\\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.COMMENT' | translate }}\\r\\n \\r\\n {{transaction.comment}}\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%; }\\n\\n.table {\\n border-top: 0.2rem solid #ebebeb;\\n margin: 0 3rem;\\n padding: 0.5rem 0; }\\n\\n.table .row {\\n display: flex;\\n justify-content: flex-start;\\n align-items: center;\\n border-top: none;\\n line-height: 3rem;\\n margin: 0 -3rem;\\n width: 100%;\\n height: 3rem; }\\n\\n.table .row .cell {\\n flex-shrink: 0;\\n flex-grow: 0;\\n padding: 0 1rem;\\n overflow: hidden;\\n text-overflow: ellipsis; }\\n\\n.table .row .cell:first-child {\\n padding-left: 3rem; }\\n\\n.table .row .cell:last-child {\\n padding-right: 3rem; }\\n\\n.table .row .cell.key-value {\\n cursor: pointer; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy90cmFuc2FjdGlvbi1kZXRhaWxzL0Q6XFxQcm9qZWN0c1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXF9oZWxwZXJzXFxkaXJlY3RpdmVzXFx0cmFuc2FjdGlvbi1kZXRhaWxzXFx0cmFuc2FjdGlvbi1kZXRhaWxzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCO0VBQ2xCLE1BQU07RUFDTixPQUFPO0VBQ1AsV0FBVyxFQUFBOztBQUdiO0VBQ0UsZ0NBQWdDO0VBQ2hDLGNBQWM7RUFDZCxpQkFBaUIsRUFBQTs7QUFIbkI7SUFNSSxhQUFhO0lBQ2IsMkJBQTJCO0lBQzNCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGVBQWU7SUFDZixXQUFXO0lBQ1gsWUFBWSxFQUFBOztBQWJoQjtNQWdCTSxjQUFjO01BQ2QsWUFBWTtNQUNaLGVBQWU7TUFDZixnQkFBZ0I7TUFDaEIsdUJBQXVCLEVBQUE7O0FBcEI3QjtRQXVCUSxrQkFBa0IsRUFBQTs7QUF2QjFCO1FBMkJRLG1CQUFtQixFQUFBOztBQTNCM0I7UUErQlEsZUFBZSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy90cmFuc2FjdGlvbi1kZXRhaWxzL3RyYW5zYWN0aW9uLWRldGFpbHMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4udGFibGUge1xyXG4gIGJvcmRlci10b3A6IDAuMnJlbSBzb2xpZCAjZWJlYmViO1xyXG4gIG1hcmdpbjogMCAzcmVtO1xyXG4gIHBhZGRpbmc6IDAuNXJlbSAwO1xyXG5cclxuICAucm93IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgYm9yZGVyLXRvcDogbm9uZTtcclxuICAgIGxpbmUtaGVpZ2h0OiAzcmVtO1xyXG4gICAgbWFyZ2luOiAwIC0zcmVtO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDNyZW07XHJcblxyXG4gICAgLmNlbGwge1xyXG4gICAgICBmbGV4LXNocmluazogMDtcclxuICAgICAgZmxleC1ncm93OiAwO1xyXG4gICAgICBwYWRkaW5nOiAwIDFyZW07XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG5cclxuICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYua2V5LXZhbHVlIHtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, OnInit, OnDestroy, Input} from '@angular/core';\r\nimport {Transaction} from '../../models/transaction.model';\r\nimport {VariablesService} from '../../services/variables.service';\r\nimport {BackendService} from '../../services/backend.service';\r\nimport {IntToMoneyPipe} from '../../pipes/int-to-money.pipe';\r\n\r\n@Component({\r\n selector: 'app-transaction-details',\r\n templateUrl: './transaction-details.component.html',\r\n styleUrls: ['./transaction-details.component.scss']\r\n})\r\nexport class TransactionDetailsComponent implements OnInit, OnDestroy {\r\n\r\n @Input() transaction: Transaction;\r\n @Input() sizes: Array;\r\n inputs: Array = [];\r\n outputs: Array = [];\r\n\r\n constructor(public variablesService: VariablesService, private backendService: BackendService, private intToMoneyPipe: IntToMoneyPipe) {}\r\n\r\n ngOnInit() {\r\n for (const input in this.transaction.td['spn']) {\r\n if (this.transaction.td['spn'].hasOwnProperty(input)) {\r\n this.inputs.push(this.intToMoneyPipe.transform(this.transaction.td['spn'][input]));\r\n }\r\n }\r\n for (const output in this.transaction.td['rcv']) {\r\n if (this.transaction.td['rcv'].hasOwnProperty(output)) {\r\n this.outputs.push(this.intToMoneyPipe.transform(this.transaction.td['rcv'][output]));\r\n }\r\n }\r\n }\r\n\r\n openInBrowser(tr) {\r\n this.backendService.openUrlInBrowser('explorer.zano.org/transaction/' + tr);\r\n }\r\n\r\n ngOnDestroy() {}\r\n}\r\n","import {BigNumber} from 'bignumber.js';\r\n\r\nexport class Transaction {\r\n amount: BigNumber;\r\n comment: string;\r\n contract: any[];\r\n fee: BigNumber;\r\n height: number;\r\n is_income: boolean;\r\n is_mining: boolean;\r\n is_mixing: boolean;\r\n is_service: boolean;\r\n payment_id: string;\r\n show_sender: boolean;\r\n td: object;\r\n timestamp: number;\r\n tx_blob_size: number;\r\n tx_hash: string;\r\n tx_type: number;\r\n unlock_time: number;\r\n\r\n sortAmount?: BigNumber;\r\n sortFee?: BigNumber;\r\n}\r\n","import {Contract} from './contract.model';\r\nimport {Transaction} from './transaction.model';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\nexport class Wallet {\r\n wallet_id: number;\r\n name: string;\r\n pass: string;\r\n path: string;\r\n address: string;\r\n balance: BigNumber;\r\n unlocked_balance: BigNumber;\r\n mined_total: number;\r\n tracking_hey: string;\r\n alias_available: boolean;\r\n\r\n alias?: object;\r\n wakeAlias?: boolean;\r\n staking?: boolean;\r\n new_messages?: number;\r\n new_contracts?: number;\r\n\r\n history: Array = [];\r\n excluded_history: Array = [];\r\n\r\n contracts: Array = [];\r\n\r\n progress?: number;\r\n loaded?: boolean;\r\n\r\n send_data?: any = {\r\n address: null,\r\n amount: null,\r\n comment: null,\r\n mixin: null,\r\n fee: null,\r\n hide: null\r\n };\r\n\r\n constructor(id, name, pass, path, address, balance, unlocked_balance, mined = 0, tracking = '') {\r\n this.wallet_id = id;\r\n this.name = name;\r\n this.pass = pass;\r\n this.path = path;\r\n this.address = address;\r\n this.balance = balance;\r\n this.unlocked_balance = unlocked_balance;\r\n this.mined_total = mined;\r\n this.tracking_hey = tracking;\r\n\r\n this.alias = {};\r\n this.staking = false;\r\n this.new_messages = 0;\r\n this.new_contracts = 0;\r\n\r\n this.history = [];\r\n this.excluded_history = [];\r\n\r\n this.progress = 0;\r\n this.loaded = false;\r\n }\r\n\r\n getMoneyEquivalent(equivalent) {\r\n return this.balance.multipliedBy(equivalent).toFixed(0);\r\n }\r\n\r\n havePass(): boolean {\r\n return (this.pass !== '' && this.pass !== null);\r\n }\r\n\r\n isActive(id): boolean {\r\n return this.wallet_id === id;\r\n }\r\n\r\n prepareHistoryItem(item: Transaction): any {\r\n if (item.tx_type === 4) {\r\n item.sortFee = item.amount.plus(item.fee).negated();\r\n item.sortAmount = new BigNumber(0);\r\n } else if (item.tx_type === 3) {\r\n item.sortFee = new BigNumber(0);\r\n } else if ((item.hasOwnProperty('contract') && (item.contract[0].state === 3 || item.contract[0].state === 6 || item.contract[0].state === 601) && !item.contract[0].is_a)) {\r\n item.sortFee = item.fee.negated();\r\n item.sortAmount = item.amount;\r\n } else {\r\n if (!item.is_income) {\r\n item.sortFee = item.fee.negated();\r\n item.sortAmount = item.amount.negated();\r\n } else {\r\n item.sortAmount = item.amount;\r\n }\r\n }\r\n return item;\r\n }\r\n\r\n prepareHistory(items: Transaction[]): void {\r\n for (let i = 0; i < items.length; i++) {\r\n if ((items[i].tx_type === 7 && items[i].is_income) || (items[i].tx_type === 11 && items[i].is_income) || (items[i].amount.eq(0) && items[i].fee.eq(0))) {\r\n let exists = false;\r\n for (let j = 0; j < this.excluded_history.length; j++) {\r\n if (this.excluded_history[j].tx_hash === items[i].tx_hash) {\r\n exists = true;\r\n if (this.excluded_history[j].height !== items[i].height) {\r\n this.excluded_history[j] = items[i];\r\n }\r\n break;\r\n }\r\n }\r\n if (!exists) {\r\n this.excluded_history.push(items[i]);\r\n }\r\n } else {\r\n let exists = false;\r\n for (let j = 0; j < this.history.length; j++) {\r\n if (this.history[j].tx_hash === items[i].tx_hash) {\r\n exists = true;\r\n if (this.history[j].height !== items[i].height) {\r\n this.history[j] = this.prepareHistoryItem(items[i]);\r\n }\r\n break;\r\n }\r\n }\r\n if (!exists) {\r\n if (this.history.length && items[i].timestamp >= this.history[0].timestamp) {\r\n this.history.unshift(this.prepareHistoryItem(items[i]));\r\n } else {\r\n this.history.push(this.prepareHistoryItem(items[i]));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n removeFromHistory(hash: string): void {\r\n for (let i = 0; i < this.history.length; i++) {\r\n if (this.history[i].tx_hash === hash) {\r\n this.history.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n prepareContractsAfterOpen(items: any[], exp_med_ts, height_app, viewedContracts, notViewedContracts): void {\r\n const wallet = this;\r\n for (let i = 0; i < items.length; i++) {\r\n const contract = items[i];\r\n let contractTransactionExist = false;\r\n if (wallet && wallet.history) {\r\n contractTransactionExist = wallet.history.some(elem => elem.contract && elem.contract.length && elem.contract[0].contract_id === contract.contract_id);\r\n }\r\n if (!contractTransactionExist && wallet && wallet.excluded_history) {\r\n contractTransactionExist = wallet.excluded_history.some(elem => elem.contract && elem.contract.length && elem.contract[0].contract_id === contract.contract_id);\r\n }\r\n\r\n if (!contractTransactionExist) {\r\n contract.state = 140;\r\n } else if (contract.state === 1 && contract.expiration_time < exp_med_ts) {\r\n contract.state = 110;\r\n } else if (contract.state === 2 && contract.cancel_expiration_time !== 0 && contract.cancel_expiration_time < exp_med_ts && contract.height === 0) {\r\n const searchResult1 = viewedContracts.some(elem => elem.state === 2 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (!searchResult1) {\r\n contract.state = 130;\r\n contract.is_new = true;\r\n }\r\n } else if (contract.state === 1) {\r\n const searchResult2 = notViewedContracts.find(elem => elem.state === 110 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult2) {\r\n if (searchResult2.time === contract.expiration_time) {\r\n contract.state = 110;\r\n } else {\r\n for (let j = 0; j < notViewedContracts.length; j++) {\r\n if (notViewedContracts[j].contract_id === contract.contract_id && notViewedContracts[j].is_a === contract.is_a) {\r\n notViewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n for (let j = 0; j < viewedContracts.length; j++) {\r\n if (viewedContracts[j].contract_id === contract.contract_id && viewedContracts[j].is_a === contract.is_a) {\r\n viewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (contract.state === 2 && (contract.height === 0 || (height_app - contract.height) < 10)) {\r\n contract.state = 201;\r\n } else if (contract.state === 2) {\r\n const searchResult3 = viewedContracts.some(elem => elem.state === 120 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult3) {\r\n contract.state = 120;\r\n }\r\n } else if (contract.state === 5) {\r\n const searchResult4 = notViewedContracts.find(elem => elem.state === 130 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult4) {\r\n if (searchResult4.time === contract.cancel_expiration_time) {\r\n contract.state = 130;\r\n } else {\r\n for (let j = 0; j < notViewedContracts.length; j++) {\r\n if (notViewedContracts[j].contract_id === contract.contract_id && notViewedContracts[j].is_a === contract.is_a) {\r\n notViewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n for (let j = 0; j < viewedContracts.length; j++) {\r\n if (viewedContracts[j].contract_id === contract.contract_id && viewedContracts[j].is_a === contract.is_a) {\r\n viewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (contract.state === 6 && (contract.height === 0 || (height_app - contract.height) < 10)) {\r\n contract.state = 601;\r\n }\r\n const searchResult = viewedContracts.some(elem => elem.state === contract.state && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n contract.is_new = !searchResult;\r\n\r\n wallet.contracts.push(contract);\r\n }\r\n this.recountNewContracts();\r\n }\r\n\r\n recountNewContracts() {\r\n this.new_contracts = (this.contracts.filter(item => item.is_new === true )).length;\r\n }\r\n\r\n getContract(id): Contract {\r\n for (let i = 0; i < this.contracts.length; i++) {\r\n if (this.contracts[i].contract_id === id) {\r\n return this.contracts[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'contractStatusMessages'\r\n})\r\nexport class ContractStatusMessagesPipe implements PipeTransform {\r\n\r\n constructor(private translate: TranslateService) {}\r\n\r\n getStateSeller(stateNum: number): string {\r\n const state = {part1: '', part2: ''};\r\n switch (stateNum) {\r\n case 1:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.NEW_CONTRACT');\r\n break;\r\n case 110:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.IGNORED');\r\n break;\r\n case 201:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.ACCEPTED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.WAIT');\r\n break;\r\n case 2:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.WAITING_BUYER');\r\n break;\r\n case 3:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.COMPLETED');\r\n break;\r\n case 4:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.NOT_RECEIVED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.NULLIFIED');\r\n break;\r\n case 5:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.PROPOSAL_CANCEL');\r\n break;\r\n case 601:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.BEING_CANCELLED');\r\n break;\r\n case 6:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.CANCELLED');\r\n break;\r\n case 130:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.IGNORED_CANCEL');\r\n break;\r\n case 140:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.EXPIRED');\r\n break;\r\n }\r\n return state.part1 + (state.part2.length ? '. ' + state.part2 : '');\r\n }\r\n\r\n getStateBuyer(stateNum: number): string {\r\n const state = {part1: '', part2: ''};\r\n switch (stateNum) {\r\n case 1:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.WAITING');\r\n break;\r\n case 110:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.IGNORED');\r\n break;\r\n case 201:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.ACCEPTED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.WAIT');\r\n break;\r\n case 2:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.ACCEPTED');\r\n break;\r\n case 120:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.WAITING_SELLER');\r\n break;\r\n case 3:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.COMPLETED');\r\n break;\r\n case 4:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.NOT_RECEIVED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.NULLIFIED');\r\n break;\r\n case 5:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.WAITING_CANCEL');\r\n break;\r\n case 601:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.BEING_CANCELLED');\r\n break;\r\n case 6:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.CANCELLED');\r\n break;\r\n case 130:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.IGNORED_CANCEL');\r\n break;\r\n case 140:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.EXPIRED');\r\n break;\r\n }\r\n return state.part1 + (state.part2.length ? '. ' + state.part2 : '');\r\n }\r\n\r\n transform(state: number, is_a?: boolean): any {\r\n if (is_a) {\r\n return this.getStateBuyer(state);\r\n } else {\r\n return this.getStateSeller(state);\r\n }\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {VariablesService} from '../services/variables.service';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'contractTimeLeft'\r\n})\r\nexport class ContractTimeLeftPipe implements PipeTransform {\r\n\r\n constructor(private service: VariablesService, private translate: TranslateService) {}\r\n\r\n transform(value: any, arg?: any): any {\r\n const time = parseInt(((parseInt(value, 10) - this.service.exp_med_ts) / 3600).toFixed(0), 10);\r\n const type = arg || 0;\r\n if (time === 0) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_LESS_ONE');\r\n }\r\n if (this.service.settings.language === 'en') {\r\n if (type === 0) {\r\n if (time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY', {time: time});\r\n }\r\n } else if (type === 1) {\r\n if (time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE_RESPONSE', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_RESPONSE', {time: time});\r\n }\r\n } else if (type === 2) {\r\n if (time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE_WAITING', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_WAITING', {time: time});\r\n }\r\n }\r\n } else {\r\n const rest = time % 10;\r\n if (type === 0) {\r\n if (((time > 20 ) && (rest === 1)) || time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE', {time: time});\r\n } else if ((time > 1) && (time < 5) || ((time > 20 ) && (rest === 2 || rest === 3 || rest === 4))) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_ALT', {time: time});\r\n }\r\n } else if (type === 1) {\r\n if (((time > 20 ) && (rest === 1)) || time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE_RESPONSE', {time: time});\r\n } else if ((time > 1) && (time < 5) || ((time > 20 ) && (rest === 2 || rest === 3 || rest === 4))) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_RESPONSE', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_ALT_RESPONSE', {time: time});\r\n }\r\n } else if (type === 2) {\r\n if (((time > 20 ) && (rest === 1)) || time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE_WAITING', {time: time});\r\n } else if ((time > 1) && (time < 5) || ((time > 20 ) && (rest === 2 || rest === 3 || rest === 4))) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_WAITING', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_ALT_WAITING', {time: time});\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'historyTypeMessages'\r\n})\r\nexport class HistoryTypeMessagesPipe implements PipeTransform {\r\n\r\n constructor(private translate: TranslateService) {}\r\n\r\n transform(item: any, args?: any): any {\r\n\r\n if (item.tx_type === 0) {\r\n if (item.remote_addresses && item.remote_addresses[0]) {\r\n return item.remote_addresses[0];\r\n } else {\r\n if (item.is_income) {\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.HIDDEN');\r\n } else {\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.UNDEFINED');\r\n }\r\n }\r\n } else if (item.tx_type === 6 && item.height === 0) {\r\n return 'unknown';\r\n } else if (item.tx_type === 9) {\r\n if (item.hasOwnProperty('contract') && item.contract[0].is_a) {\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.COMPLETE_BUYER');\r\n } else {\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.COMPLETE_SELLER');\r\n }\r\n } else {\r\n switch (item.tx_type) {\r\n // case 0:\r\n // return '';\r\n // case 1:\r\n // return '';\r\n // case 2:\r\n // return '';\r\n // case 3:\r\n // return '';\r\n case 4:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.CREATE_ALIAS');\r\n case 5:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.UPDATE_ALIAS');\r\n case 6:\r\n return (item.td['spn'] && item.td['spn'].length) ? this.translate.instant('HISTORY.TYPE_MESSAGES.POS_REWARD') : this.translate.instant('HISTORY.TYPE_MESSAGES.POW_REWARD');\r\n case 7:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.CREATE_CONTRACT');\r\n case 8:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.PLEDGE_CONTRACT');\r\n // case 9:\r\n // return '';\r\n case 10:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.NULLIFY_CONTRACT');\r\n case 11:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.PROPOSAL_CANCEL_CONTRACT');\r\n case 12:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.CANCEL_CONTRACT');\r\n }\r\n }\r\n\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.UNDEFINED');\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {VariablesService} from '../services/variables.service';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Pipe({\r\n name: 'intToMoney'\r\n})\r\nexport class IntToMoneyPipe implements PipeTransform {\r\n\r\n constructor(private variablesService: VariablesService) {}\r\n\r\n transform(value: any, args?: any): any {\r\n if (value === 0 || value === undefined) {\r\n return '0';\r\n }\r\n let maxFraction = this.variablesService.digits;\r\n if (args) {\r\n maxFraction = parseInt(args, 10);\r\n }\r\n const power = Math.pow(10, this.variablesService.digits);\r\n let str = (new BigNumber(value)).div(power).toFixed(maxFraction);\r\n\r\n for (let i = str.length - 1; i >= 0; i--) {\r\n if (str[i] !== '0') {\r\n str = str.substr(0, i + 1);\r\n break;\r\n }\r\n }\r\n if (str[str.length - 1] === '.') {\r\n str = str.substr(0, str.length - 1);\r\n }\r\n return str;\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {VariablesService} from '../services/variables.service';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Pipe({\r\n name: 'moneyToInt'\r\n})\r\nexport class MoneyToIntPipe implements PipeTransform {\r\n\r\n constructor(private variablesService: VariablesService) {}\r\n\r\n transform(value: any, args?: any): any {\r\n const CURRENCY_DISPLAY_DECIMAL_POINT = this.variablesService.digits;\r\n let result;\r\n if (value) {\r\n let am_str = value.toString().trim();\r\n const point_index = am_str.indexOf('.');\r\n let fraction_size = 0;\r\n if (-1 !== point_index) {\r\n fraction_size = am_str.length - point_index - 1;\r\n while (CURRENCY_DISPLAY_DECIMAL_POINT < fraction_size && '0' === am_str[am_str.length - 1]) {\r\n am_str = am_str.slice(0, am_str.length - 1);\r\n --fraction_size;\r\n }\r\n if (CURRENCY_DISPLAY_DECIMAL_POINT < fraction_size) {\r\n return undefined;\r\n }\r\n am_str = am_str.slice(0, point_index) + am_str.slice(point_index + 1, am_str.length);\r\n } else {\r\n fraction_size = 0;\r\n }\r\n if (!am_str.length) {\r\n return undefined;\r\n }\r\n if (fraction_size < CURRENCY_DISPLAY_DECIMAL_POINT) {\r\n for (let i = 0; i !== CURRENCY_DISPLAY_DECIMAL_POINT - fraction_size; i++) {\r\n am_str = am_str + '0';\r\n }\r\n }\r\n result = (new BigNumber(am_str)).integerValue();\r\n }\r\n return result;\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable} from 'rxjs';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {VariablesService} from './variables.service';\r\nimport {ModalService} from './modal.service';\r\nimport {MoneyToIntPipe} from '../pipes/money-to-int.pipe';\r\nimport JSONBigNumber from 'json-bignumber';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Injectable()\r\nexport class BackendService {\r\n\r\n backendObject: any;\r\n backendLoaded = false;\r\n\r\n constructor(\r\n private translate: TranslateService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private moneyToIntPipe: MoneyToIntPipe\r\n ) {\r\n }\r\n\r\n static bigNumberParser(key, val) {\r\n if (val.constructor.name === 'BigNumber' && ['balance', 'unlocked_balance', 'amount', 'fee', 'b_fee', 'to_pay', 'a_pledge', 'b_pledge', 'coast', 'a'].indexOf(key) === -1) {\r\n return val.toNumber();\r\n }\r\n if (key === 'rcv' || key === 'spn') {\r\n for (let i = 0; i < val.length; i++) {\r\n val[i] = new BigNumber(val[i]);\r\n }\r\n }\r\n return val;\r\n }\r\n\r\n static Debug(type, message) {\r\n switch (type) {\r\n case 0:\r\n console.error(message);\r\n break;\r\n case 1:\r\n console.warn(message);\r\n break;\r\n case 2:\r\n console.log(message);\r\n break;\r\n default:\r\n console.log(message);\r\n break;\r\n }\r\n }\r\n\r\n private informerRun(error, params, command) {\r\n let error_translate = '';\r\n\r\n switch (error) {\r\n case 'NOT_ENOUGH_MONEY':\r\n error_translate = 'ERRORS.NOT_ENOUGH_MONEY';\r\n break;\r\n case 'CORE_BUSY':\r\n if (command !== 'get_all_aliases') {\r\n error_translate = 'ERRORS.CORE_BUSY';\r\n }\r\n break;\r\n case 'OVERFLOW':\r\n if (command !== 'get_all_aliases') {\r\n error_translate = '';\r\n }\r\n break;\r\n case 'INTERNAL_ERROR:daemon is busy':\r\n error_translate = 'ERRORS.DAEMON_BUSY';\r\n break;\r\n case 'INTERNAL_ERROR:not enough money':\r\n case 'INTERNAL_ERROR:NOT_ENOUGH_MONEY':\r\n if (command === 'cancel_offer') {\r\n error_translate = this.translate.instant('ERRORS.NO_MONEY_REMOVE_OFFER', {\r\n 'fee': this.variablesService.default_fee,\r\n 'currency': this.variablesService.defaultCurrency\r\n });\r\n } else {\r\n error_translate = 'ERRORS.NO_MONEY';\r\n }\r\n break;\r\n case 'INTERNAL_ERROR:not enough outputs to mix':\r\n error_translate = 'ERRORS.NOT_ENOUGH_OUTPUTS_TO_MIX';\r\n break;\r\n case 'INTERNAL_ERROR:transaction is too big':\r\n error_translate = 'ERRORS.TRANSACTION_IS_TO_BIG';\r\n break;\r\n case 'INTERNAL_ERROR:Transfer attempt while daemon offline':\r\n error_translate = 'ERRORS.TRANSFER_ATTEMPT';\r\n break;\r\n case 'ACCESS_DENIED':\r\n error_translate = 'ERRORS.ACCESS_DENIED';\r\n break;\r\n case 'INTERNAL_ERROR:transaction was rejected by daemon':\r\n // if (command === 'request_alias_registration') {\r\n // error_translate = 'INFORMER.ALIAS_IN_REGISTER';\r\n // } else {\r\n error_translate = 'ERRORS.TRANSACTION_ERROR';\r\n // }\r\n break;\r\n case 'INTERNAL_ERROR':\r\n error_translate = 'ERRORS.TRANSACTION_ERROR';\r\n break;\r\n case 'BAD_ARG':\r\n error_translate = 'ERRORS.BAD_ARG';\r\n break;\r\n case 'WALLET_WRONG_ID':\r\n error_translate = 'ERRORS.WALLET_WRONG_ID';\r\n break;\r\n case 'WRONG_PASSWORD':\r\n case 'WRONG_PASSWORD:invalid password':\r\n params = JSON.parse(params);\r\n if (!params.testEmpty) {\r\n error_translate = 'ERRORS.WRONG_PASSWORD';\r\n }\r\n break;\r\n case 'FILE_RESTORED':\r\n if (command === 'open_wallet') {\r\n error_translate = 'ERRORS.FILE_RESTORED';\r\n }\r\n break;\r\n case 'FILE_NOT_FOUND':\r\n if (command !== 'open_wallet' && command !== 'get_alias_info_by_name' && command !== 'get_alias_info_by_address') {\r\n error_translate = this.translate.instant('ERRORS.FILE_NOT_FOUND');\r\n params = JSON.parse(params);\r\n if (params.path) {\r\n error_translate += ': ' + params.path;\r\n }\r\n }\r\n break;\r\n case 'NOT_FOUND':\r\n if (command !== 'open_wallet' && command !== 'get_alias_info_by_name' && command !== 'get_alias_info_by_address') {\r\n error_translate = this.translate.instant('ERRORS.FILE_NOT_FOUND');\r\n params = JSON.parse(params);\r\n if (params.path) {\r\n error_translate += ': ' + params.path;\r\n }\r\n }\r\n break;\r\n case 'CANCELED':\r\n case '':\r\n break;\r\n case 'FAIL':\r\n if (command === 'create_proposal' || command === 'accept_proposal' || command === 'release_contract' || command === 'request_cancel_contract' || command === 'accept_cancel_contract') {\r\n error_translate = ' ';\r\n }\r\n break;\r\n case 'ALREADY_EXISTS':\r\n error_translate = 'ERRORS.FILE_EXIST';\r\n break;\r\n default:\r\n error_translate = error;\r\n }\r\n if (error.indexOf('FAIL:failed to save file') > -1) {\r\n error_translate = 'ERRORS.FILE_NOT_SAVED';\r\n }\r\n if (error.indexOf('FAILED:failed to open binary wallet file for saving') > -1 && command === 'generate_wallet') {\r\n error_translate = '';\r\n }\r\n if (error_translate !== '') {\r\n this.modalService.prepareModal('error', error_translate);\r\n }\r\n }\r\n\r\n\r\n private commandDebug(command, params, result) {\r\n BackendService.Debug(2, '----------------- ' + command + ' -----------------');\r\n const debug = {\r\n _send_params: params,\r\n _result: result\r\n };\r\n BackendService.Debug(2, debug);\r\n try {\r\n BackendService.Debug(2, JSONBigNumber.parse(result, BackendService.bigNumberParser));\r\n } catch (e) {\r\n BackendService.Debug(2, {response_data: result, error_code: 'OK'});\r\n }\r\n }\r\n\r\n private backendCallback(resultStr, params, callback, command) {\r\n let Result = resultStr;\r\n if (command !== 'get_clipboard') {\r\n if (!resultStr || resultStr === '') {\r\n Result = {};\r\n } else {\r\n try {\r\n Result = JSONBigNumber.parse(resultStr, BackendService.bigNumberParser);\r\n } catch (e) {\r\n Result = {response_data: resultStr, error_code: 'OK'};\r\n }\r\n }\r\n } else {\r\n Result = {\r\n error_code: 'OK',\r\n response_data: Result\r\n };\r\n }\r\n\r\n const Status = (Result.error_code === 'OK' || Result.error_code === 'TRUE');\r\n\r\n if (!Status && Status !== undefined && Result.error_code !== undefined) {\r\n BackendService.Debug(1, 'API error for command: \"' + command + '\". Error code: ' + Result.error_code);\r\n }\r\n const data = ((typeof Result === 'object') && 'response_data' in Result) ? Result.response_data : Result;\r\n\r\n let res_error_code = false;\r\n if (typeof Result === 'object' && 'error_code' in Result && Result.error_code !== 'OK' && Result.error_code !== 'TRUE' && Result.error_code !== 'FALSE') {\r\n this.informerRun(Result.error_code, params, command);\r\n res_error_code = Result.error_code;\r\n }\r\n\r\n // if ( command === 'get_offers_ex' ){\r\n // Service.printLog( \"get_offers_ex offers count \"+((data.offers)?data.offers.length:0) );\r\n // }\r\n\r\n if (typeof callback === 'function') {\r\n callback(Status, data, res_error_code);\r\n } else {\r\n return data;\r\n }\r\n }\r\n\r\n\r\n private runCommand(command, params?, callback?) {\r\n if (this.backendObject) {\r\n const Action = this.backendObject[command];\r\n if (!Action) {\r\n BackendService.Debug(0, 'Run Command Error! Command \"' + command + '\" don\\'t found in backendObject');\r\n } else {\r\n const that = this;\r\n params = (typeof params === 'string') ? params : JSONBigNumber.stringify(params);\r\n if (params === undefined || params === '{}') {\r\n Action(function (resultStr) {\r\n that.commandDebug(command, params, resultStr);\r\n return that.backendCallback(resultStr, params, callback, command);\r\n });\r\n } else {\r\n Action(params, function (resultStr) {\r\n that.commandDebug(command, params, resultStr);\r\n return that.backendCallback(resultStr, params, callback, command);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n eventSubscribe(command, callback) {\r\n if (command === 'on_core_event') {\r\n this.backendObject[command].connect(callback);\r\n } else {\r\n this.backendObject[command].connect((str) => {\r\n callback(JSONBigNumber.parse(str, BackendService.bigNumberParser));\r\n });\r\n }\r\n }\r\n\r\n\r\n initService() {\r\n return new Observable(\r\n observer => {\r\n if (!this.backendLoaded) {\r\n this.backendLoaded = true;\r\n const that = this;\r\n (window).QWebChannel((window).qt.webChannelTransport, function (channel) {\r\n that.backendObject = channel.objects.mediator_object;\r\n observer.next('ok');\r\n });\r\n } else {\r\n if (!this.backendObject) {\r\n observer.error('error');\r\n observer.error('error');\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n webkitLaunchedScript() {\r\n return this.runCommand('webkit_launched_script');\r\n }\r\n\r\n quitRequest() {\r\n return this.runCommand('on_request_quit');\r\n }\r\n\r\n getAppData(callback) {\r\n this.runCommand('get_app_data', {}, callback);\r\n }\r\n\r\n storeAppData(callback?) {\r\n if (this.variablesService.wallets.length) {\r\n this.variablesService.settings.wallets = [];\r\n this.variablesService.wallets.forEach((wallet) => {\r\n this.variablesService.settings.wallets.push({name: wallet.name, path: wallet.path});\r\n });\r\n }\r\n this.runCommand('store_app_data', this.variablesService.settings, callback);\r\n }\r\n\r\n getSecureAppData(pass, callback) {\r\n this.runCommand('get_secure_app_data', pass, callback);\r\n }\r\n\r\n storeSecureAppData(callback?) {\r\n const wallets = [];\r\n this.variablesService.wallets.forEach((wallet) => {\r\n wallets.push({name: wallet.name, pass: wallet.pass, path: wallet.path, staking: wallet.staking});\r\n });\r\n this.backendObject['store_secure_app_data'](JSON.stringify(wallets), this.variablesService.appPass, (dataStore) => {\r\n this.backendCallback(dataStore, {}, callback, 'store_secure_app_data');\r\n });\r\n }\r\n\r\n dropSecureAppData(callback?) {\r\n this.backendObject['drop_secure_app_data']((dataStore) => {\r\n this.backendCallback(dataStore, {}, callback, 'drop_secure_app_data');\r\n });\r\n }\r\n\r\n haveSecureAppData(callback) {\r\n this.runCommand('have_secure_app_data', {}, callback);\r\n }\r\n\r\n saveFileDialog(caption, fileMask, default_path, callback) {\r\n const dir = default_path ? default_path : '/';\r\n const params = {\r\n caption: caption,\r\n filemask: fileMask,\r\n default_dir: dir\r\n };\r\n this.runCommand('show_savefile_dialog', params, callback);\r\n }\r\n\r\n openFileDialog(caption, fileMask, default_path, callback) {\r\n const dir = default_path ? default_path : '/';\r\n const params = {\r\n caption: caption,\r\n filemask: fileMask,\r\n default_dir: dir\r\n };\r\n this.runCommand('show_openfile_dialog', params, callback);\r\n }\r\n\r\n generateWallet(path, pass, callback) {\r\n const params = {\r\n path: path,\r\n pass: pass\r\n };\r\n this.runCommand('generate_wallet', params, callback);\r\n }\r\n\r\n openWallet(path, pass, testEmpty, callback) {\r\n const params = {\r\n path: path,\r\n pass: pass\r\n };\r\n params['testEmpty'] = !!(testEmpty);\r\n this.runCommand('open_wallet', params, callback);\r\n }\r\n\r\n closeWallet(wallet_id, callback?) {\r\n this.runCommand('close_wallet', {wallet_id: +wallet_id}, callback);\r\n }\r\n\r\n getSmartWalletInfo(wallet_id, callback) {\r\n this.runCommand('get_smart_wallet_info', {wallet_id: +wallet_id}, callback);\r\n }\r\n\r\n runWallet(wallet_id, callback?) {\r\n this.runCommand('run_wallet', {wallet_id: +wallet_id}, callback);\r\n }\r\n\r\n isValidRestoreWalletText(text, callback) {\r\n this.runCommand('is_valid_restore_wallet_text', text, callback);\r\n }\r\n\r\n restoreWallet(path, pass, restore_key, callback) {\r\n const params = {\r\n restore_key: restore_key,\r\n path: path,\r\n pass: pass\r\n };\r\n this.runCommand('restore_wallet', params, callback);\r\n }\r\n\r\n sendMoney(from_wallet_id, to_address, amount, fee, mixin, comment, hide, callback) {\r\n const params = {\r\n wallet_id: parseInt(from_wallet_id, 10),\r\n destinations: [\r\n {\r\n address: to_address,\r\n amount: amount\r\n }\r\n ],\r\n mixin_count: (mixin) ? parseInt(mixin, 10) : 0,\r\n lock_time: 0,\r\n fee: this.moneyToIntPipe.transform(fee),\r\n comment: comment,\r\n push_payer: !hide\r\n };\r\n this.runCommand('transfer', params, callback);\r\n }\r\n\r\n validateAddress(address, callback) {\r\n this.runCommand('validate_address', address, callback);\r\n }\r\n\r\n setClipboard(str, callback?) {\r\n return this.runCommand('set_clipboard', str, callback);\r\n }\r\n\r\n getClipboard(callback) {\r\n return this.runCommand('get_clipboard', {}, callback);\r\n }\r\n\r\n createProposal(wallet_id, title, comment, a_addr, b_addr, to_pay, a_pledge, b_pledge, time, payment_id, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n details: {\r\n t: title,\r\n c: comment,\r\n a_addr: a_addr,\r\n b_addr: b_addr,\r\n to_pay: this.moneyToIntPipe.transform(to_pay),\r\n a_pledge: this.moneyToIntPipe.transform(a_pledge),\r\n b_pledge: this.moneyToIntPipe.transform(b_pledge)\r\n },\r\n payment_id: payment_id,\r\n expiration_period: parseInt(time, 10) * 60 * 60,\r\n fee: this.variablesService.default_fee_big,\r\n b_fee: this.variablesService.default_fee_big\r\n };\r\n BackendService.Debug(1, params);\r\n this.runCommand('create_proposal', params, callback);\r\n }\r\n\r\n getContracts(wallet_id, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10)\r\n };\r\n BackendService.Debug(1, params);\r\n this.runCommand('get_contracts', params, callback);\r\n }\r\n\r\n acceptProposal(wallet_id, contract_id, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n contract_id: contract_id\r\n };\r\n BackendService.Debug(1, params);\r\n this.runCommand('accept_proposal', params, callback);\r\n }\r\n\r\n releaseProposal(wallet_id, contract_id, release_type, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n contract_id: contract_id,\r\n release_type: release_type // \"normal\" or \"burn\"\r\n };\r\n BackendService.Debug(1, params);\r\n this.runCommand('release_contract', params, callback);\r\n }\r\n\r\n requestCancelContract(wallet_id, contract_id, time, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n contract_id: contract_id,\r\n fee: this.variablesService.default_fee_big,\r\n expiration_period: parseInt(time, 10) * 60 * 60\r\n };\r\n BackendService.Debug(1, params);\r\n this.runCommand('request_cancel_contract', params, callback);\r\n }\r\n\r\n acceptCancelContract(wallet_id, contract_id, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n contract_id: contract_id\r\n };\r\n BackendService.Debug(1, params);\r\n this.runCommand('accept_cancel_contract', params, callback);\r\n }\r\n\r\n getMiningHistory(wallet_id, callback) {\r\n this.runCommand('get_mining_history', {wallet_id: parseInt(wallet_id, 10)}, callback);\r\n }\r\n\r\n startPosMining(wallet_id, callback?) {\r\n this.runCommand('start_pos_mining', {wallet_id: parseInt(wallet_id, 10)}, callback);\r\n }\r\n\r\n stopPosMining(wallet_id, callback?) {\r\n this.runCommand('stop_pos_mining', {wallet_id: parseInt(wallet_id, 10)}, callback);\r\n }\r\n\r\n openUrlInBrowser(url, callback?) {\r\n this.runCommand('open_url_in_browser', url, callback);\r\n }\r\n\r\n start_backend(node, host, port, callback) {\r\n const params = {\r\n configure_for_remote_node: node,\r\n remote_node_host: host,\r\n remote_node_port: parseInt(port, 10)\r\n };\r\n this.runCommand('start_backend', params, callback);\r\n }\r\n\r\n getDefaultFee(callback) {\r\n this.runCommand('get_default_fee', {}, callback);\r\n }\r\n\r\n setBackendLocalization(stringsArray, title, callback?) {\r\n const params = {\r\n strings: stringsArray,\r\n language_title: title\r\n };\r\n this.runCommand('set_localization_strings', params, callback);\r\n }\r\n\r\n registerAlias(wallet_id, alias, address, fee, comment, reward, callback) {\r\n const params = {\r\n wallet_id: wallet_id,\r\n alias: {\r\n alias: alias,\r\n address: address,\r\n tracking_key: '',\r\n comment: comment\r\n },\r\n fee: this.moneyToIntPipe.transform(fee),\r\n reward: this.moneyToIntPipe.transform(reward)\r\n };\r\n this.runCommand('request_alias_registration', params, callback);\r\n }\r\n\r\n updateAlias(wallet_id, alias, fee, callback) {\r\n const params = {\r\n wallet_id: wallet_id,\r\n alias: {\r\n alias: alias.name.replace('@', ''),\r\n address: alias.address,\r\n tracking_key: '',\r\n comment: alias.comment\r\n },\r\n fee: this.moneyToIntPipe.transform(fee)\r\n };\r\n this.runCommand('request_alias_update', params, callback);\r\n }\r\n\r\n getAllAliases(callback) {\r\n this.runCommand('get_all_aliases', {}, callback);\r\n }\r\n\r\n getAliasByName(value, callback) {\r\n return this.runCommand('get_alias_info_by_name', value, callback);\r\n }\r\n\r\n getAliasByAddress(value, callback) {\r\n return this.runCommand('get_alias_info_by_address', value, callback);\r\n }\r\n\r\n getAliasCoast(alias, callback) {\r\n this.runCommand('get_alias_coast', {v: alias}, callback);\r\n }\r\n\r\n getWalletAlias(address) {\r\n if (address !== null && this.variablesService.daemon_state === 2) {\r\n if (this.variablesService.aliasesChecked[address] == null) {\r\n this.variablesService.aliasesChecked[address] = {};\r\n if (this.variablesService.aliases.length) {\r\n for (let i = 0, length = this.variablesService.aliases.length; i < length; i++) {\r\n if (i in this.variablesService.aliases && this.variablesService.aliases[i]['address'] === address) {\r\n this.variablesService.aliasesChecked[address]['name'] = this.variablesService.aliases[i].name;\r\n this.variablesService.aliasesChecked[address]['address'] = this.variablesService.aliases[i].address;\r\n this.variablesService.aliasesChecked[address]['comment'] = this.variablesService.aliases[i].comment;\r\n return this.variablesService.aliasesChecked[address];\r\n }\r\n }\r\n }\r\n this.getAliasByAddress(address, (status, data) => {\r\n if (status) {\r\n this.variablesService.aliasesChecked[data.address]['name'] = '@' + data.alias;\r\n this.variablesService.aliasesChecked[data.address]['address'] = data.address;\r\n this.variablesService.aliasesChecked[data.address]['comment'] = data.comment;\r\n }\r\n });\r\n }\r\n return this.variablesService.aliasesChecked[address];\r\n }\r\n return {};\r\n }\r\n\r\n getPoolInfo(callback) {\r\n this.runCommand('get_tx_pool_info', {}, callback);\r\n }\r\n\r\n getVersion(callback) {\r\n this.runCommand('get_version', {}, (status, version) => {\r\n callback(version);\r\n });\r\n }\r\n\r\n setLogLevel(level) {\r\n return this.runCommand('set_log_level', {v: level});\r\n }\r\n\r\n}\r\n\r\n\r\n/*\r\n\r\n toggleAutoStart: function (value) {\r\n return this.runCommand('toggle_autostart', asVal(value));\r\n },\r\n\r\n getOptions: function (callback) {\r\n return this.runCommand('get_options', {}, callback);\r\n },\r\n\r\n isFileExist: function (path, callback) {\r\n return this.runCommand('is_file_exist', path, callback);\r\n },\r\n\r\n isAutoStartEnabled: function (callback) {\r\n this.runCommand('is_autostart_enabled', {}, function (status, data) {\r\n if (angular.isFunction(callback)) {\r\n callback('error_code' in data && data.error_code !== 'FALSE')\r\n }\r\n });\r\n },\r\n\r\n resetWalletPass: function (wallet_id, pass, callback) {\r\n this.runCommand('reset_wallet_password', {wallet_id: wallet_id, pass: pass}, callback);\r\n },\r\n\r\n\r\n\r\n getOsVersion: function (callback) {\r\n this.runCommand('get_os_version', {}, function (status, version) {\r\n callback(version)\r\n })\r\n },\r\n\r\n getLogFile: function (callback) {\r\n this.runCommand('get_log_file', {}, function (status, version) {\r\n callback(version)\r\n })\r\n },\r\n\r\n resync_wallet: function (wallet_id, callback) {\r\n this.runCommand('resync_wallet', {wallet_id: wallet_id}, callback);\r\n },\r\n\r\n storeFile: function (path, buff, callback) {\r\n this.backendObject['store_to_file'](path, (typeof buff === 'string' ? buff : JSON.stringify(buff)), function (data) {\r\n backendCallback(data, {}, callback, 'store_to_file');\r\n });\r\n },\r\n\r\n getMiningEstimate: function (amount_coins, time, callback) {\r\n var params = {\r\n \"amount_coins\": $filter('money_to_int')(amount_coins),\r\n \"time\": parseInt(time)\r\n };\r\n this.runCommand('get_mining_estimate', params, callback);\r\n },\r\n\r\n backupWalletKeys: function (wallet_id, path, callback) {\r\n var params = {\r\n \"wallet_id\": wallet_id,\r\n \"path\": path\r\n };\r\n this.runCommand('backup_wallet_keys', params, callback);\r\n },\r\n\r\n setBlockedIcon: function (enabled, callback) {\r\n var mode = (enabled) ? \"blocked\" : \"normal\";\r\n Service.runCommand('bool_toggle_icon', mode, callback);\r\n },\r\n\r\n getWalletInfo: function (wallet_id, callback) {\r\n this.runCommand('get_wallet_info', {wallet_id: wallet_id}, callback);\r\n },\r\n\r\n printText: function (content) {\r\n return this.runCommand('print_text', {html_text: content});\r\n },\r\n\r\n printLog: function (msg, log_level) {\r\n return this.runCommand('print_log', {msg: msg, log_level: log_level});\r\n },\r\n\r\n*/\r\n\r\n","import {Injectable, Injector, ComponentFactoryResolver, EmbeddedViewRef, ApplicationRef, NgZone} from '@angular/core';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {ModalContainerComponent} from '../directives/modal-container/modal-container.component';\r\n\r\n@Injectable()\r\nexport class ModalService {\r\n\r\n private components: any[] = [];\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private appRef: ApplicationRef,\r\n private injector: Injector,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {}\r\n\r\n prepareModal(type, message) {\r\n const length = this.components.push(\r\n this.componentFactoryResolver.resolveComponentFactory(ModalContainerComponent).create(this.injector)\r\n );\r\n\r\n this.components[length - 1].instance['type'] = type;\r\n this.components[length - 1].instance['message'] = message.length ? this.translate.instant(message) : '';\r\n this.components[length - 1].instance['close'].subscribe(() => {\r\n this.removeModal(length - 1);\r\n });\r\n\r\n this.ngZone.run(() => {\r\n this.appendModal(length - 1);\r\n });\r\n }\r\n\r\n appendModal(index) {\r\n this.appRef.attachView(this.components[index].hostView);\r\n const domElem = (this.components[index].hostView as EmbeddedViewRef).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElem);\r\n }\r\n\r\n removeModal(index) {\r\n if (this.components[index]) {\r\n this.appRef.detachView(this.components[index].hostView);\r\n this.components[index].destroy();\r\n this.components.splice(index, 1);\r\n } else {\r\n const last = this.components.length - 1;\r\n this.appRef.detachView(this.components[last].hostView);\r\n this.components[last].destroy();\r\n this.components.splice(last, 1);\r\n }\r\n }\r\n}\r\n","import {Injectable, NgZone} from '@angular/core';\r\nimport {Wallet} from '../models/wallet.model';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {Idle} from 'idlejs/dist';\r\nimport {Router} from '@angular/router';\r\nimport {ContextMenuComponent, ContextMenuService} from 'ngx-contextmenu';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VariablesService {\r\n\r\n public digits = 12;\r\n public appPass = '';\r\n public appLogin = false;\r\n public moneyEquivalent = 0;\r\n public defaultTheme = 'dark';\r\n public defaultCurrency = 'ZANO';\r\n public opening_wallet: Wallet;\r\n public exp_med_ts = 0;\r\n public net_time_delta_median = 0;\r\n public height_app = 0;\r\n public last_build_available = '';\r\n public last_build_displaymode = 0;\r\n public daemon_state = 3;\r\n public sync = {\r\n progress_value: 0,\r\n progress_value_text: '0'\r\n };\r\n public default_fee = '0.010000000000';\r\n public default_fee_big = new BigNumber('10000000000');\r\n\r\n public settings = {\r\n appLockTime: 15,\r\n appLog: 0,\r\n theme: '',\r\n scale: 10,\r\n language: 'en',\r\n default_path: '/',\r\n viewedContracts: [],\r\n notViewedContracts: [],\r\n wallets: []\r\n };\r\n\r\n public wallets: Array = [];\r\n public currentWallet: Wallet;\r\n public aliases: any = [];\r\n public aliasesChecked: any = {};\r\n public enableAliasSearch = false;\r\n public maxWalletNameLength = 25;\r\n public maxCommentLength = 255;\r\n\r\n getExpMedTsEvent = new BehaviorSubject(null);\r\n getHeightAppEvent = new BehaviorSubject(null);\r\n getRefreshStackingEvent = new BehaviorSubject(null);\r\n getAliasChangedEvent = new BehaviorSubject(null);\r\n\r\n public idle = new Idle()\r\n .whenNotInteractive()\r\n .do(() => {\r\n this.ngZone.run(() => {\r\n this.idle.stop();\r\n this.appPass = '';\r\n this.appLogin = false;\r\n this.router.navigate(['/login'], {queryParams: {type: 'auth'}});\r\n });\r\n });\r\n\r\n public allContextMenu: ContextMenuComponent;\r\n public onlyCopyContextMenu: ContextMenuComponent;\r\n public pasteSelectContextMenu: ContextMenuComponent;\r\n\r\n constructor(private router: Router, private ngZone: NgZone, private contextMenuService: ContextMenuService) {\r\n }\r\n\r\n setExpMedTs(timestamp: number) {\r\n if (timestamp !== this.exp_med_ts) {\r\n this.exp_med_ts = timestamp;\r\n this.getExpMedTsEvent.next(timestamp);\r\n }\r\n }\r\n\r\n setHeightApp(height: number) {\r\n if (height !== this.height_app) {\r\n this.height_app = height;\r\n this.getHeightAppEvent.next(height);\r\n }\r\n }\r\n\r\n setRefreshStacking(wallet_id: number) {\r\n this.getHeightAppEvent.next(wallet_id);\r\n }\r\n\r\n changeAliases() {\r\n this.getAliasChangedEvent.next(true);\r\n }\r\n\r\n setCurrentWallet(id): void {\r\n this.wallets.forEach((wallet) => {\r\n if (wallet.wallet_id === id) {\r\n this.currentWallet = wallet;\r\n }\r\n });\r\n }\r\n\r\n getWallet(id): Wallet {\r\n for (let i = 0; i < this.wallets.length; i++) {\r\n if (this.wallets[i].wallet_id === id) {\r\n return this.wallets[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n startCountdown() {\r\n this.idle.within(this.settings.appLockTime).start();\r\n }\r\n\r\n stopCountdown() {\r\n this.idle.stop();\r\n }\r\n\r\n restartCountdown() {\r\n this.idle.within(this.settings.appLockTime).restart();\r\n }\r\n\r\n public onContextMenu($event: MouseEvent): void {\r\n $event.target['contextSelectionStart'] = $event.target['selectionStart'];\r\n $event.target['contextSelectionEnd'] = $event.target['selectionEnd'];\r\n if ($event.target && ($event.target['nodeName'].toUpperCase() === 'TEXTAREA' || $event.target['nodeName'].toUpperCase() === 'INPUT') && !$event.target['readOnly']) {\r\n this.contextMenuService.show.next({\r\n contextMenu: this.allContextMenu,\r\n event: $event,\r\n item: $event.target,\r\n });\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n }\r\n\r\n public onContextMenuOnlyCopy($event: MouseEvent, copyText?: string): void {\r\n this.contextMenuService.show.next({\r\n contextMenu: this.onlyCopyContextMenu,\r\n event: $event,\r\n item: copyText\r\n });\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n\r\n public onContextMenuPasteSelect($event: MouseEvent): void {\r\n $event.target['contextSelectionStart'] = $event.target['selectionStart'];\r\n $event.target['contextSelectionEnd'] = $event.target['selectionEnd'];\r\n\r\n console.warn($event.target);\r\n console.warn($event.target['disabled']);\r\n\r\n\r\n if ($event.target && ($event.target['nodeName'].toUpperCase() === 'TEXTAREA' || $event.target['nodeName'].toUpperCase() === 'INPUT') && !$event.target['readOnly']) {\r\n this.contextMenuService.show.next({\r\n contextMenu: this.pasteSelectContextMenu,\r\n event: $event,\r\n item: $event.target,\r\n });\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\n// Components\r\nimport { MainComponent } from './main/main.component';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { WalletComponent } from './wallet/wallet.component';\r\nimport { SendComponent } from './send/send.component';\r\nimport { ReceiveComponent } from './receive/receive.component';\r\nimport { HistoryComponent } from './history/history.component';\r\nimport { ContractsComponent } from './contracts/contracts.component';\r\nimport { PurchaseComponent } from './purchase/purchase.component';\r\nimport { MessagesComponent } from './messages/messages.component';\r\nimport { TypingMessageComponent } from './typing-message/typing-message.component';\r\nimport { StakingComponent } from './staking/staking.component';\r\nimport { SettingsComponent } from './settings/settings.component';\r\nimport { CreateWalletComponent } from './create-wallet/create-wallet.component';\r\nimport { OpenWalletComponent } from './open-wallet/open-wallet.component';\r\nimport { RestoreWalletComponent } from './restore-wallet/restore-wallet.component';\r\nimport { SeedPhraseComponent } from './seed-phrase/seed-phrase.component';\r\nimport { WalletDetailsComponent } from './wallet-details/wallet-details.component';\r\nimport { AssignAliasComponent } from './assign-alias/assign-alias.component';\r\nimport { EditAliasComponent } from \"./edit-alias/edit-alias.component\";\r\nimport { TransferAliasComponent } from \"./transfer-alias/transfer-alias.component\";\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: MainComponent\r\n },\r\n {\r\n path: 'main',\r\n component: MainComponent\r\n },\r\n {\r\n path: 'login',\r\n component: LoginComponent\r\n },\r\n {\r\n path: 'wallet/:id',\r\n component: WalletComponent,\r\n children: [\r\n {\r\n path: 'send',\r\n component: SendComponent\r\n },\r\n {\r\n path: 'receive',\r\n component: ReceiveComponent\r\n },\r\n {\r\n path: 'history',\r\n component: HistoryComponent\r\n },\r\n {\r\n path: 'contracts',\r\n component: ContractsComponent,\r\n },\r\n {\r\n path: 'purchase',\r\n component: PurchaseComponent\r\n },\r\n {\r\n path: 'purchase/:id',\r\n component: PurchaseComponent\r\n },\r\n {\r\n path: 'messages',\r\n component: MessagesComponent,\r\n },\r\n {\r\n path: 'messages/:id',\r\n component: TypingMessageComponent,\r\n },\r\n {\r\n path: 'staking',\r\n component: StakingComponent\r\n },\r\n {\r\n path: '',\r\n redirectTo: 'history',\r\n pathMatch: 'full'\r\n }\r\n ]\r\n },\r\n {\r\n path: 'create',\r\n component: CreateWalletComponent\r\n },\r\n {\r\n path: 'open',\r\n component: OpenWalletComponent\r\n },\r\n {\r\n path: 'restore',\r\n component: RestoreWalletComponent\r\n },\r\n {\r\n path: 'seed-phrase',\r\n component: SeedPhraseComponent\r\n },\r\n {\r\n path: 'details',\r\n component: WalletDetailsComponent\r\n },\r\n {\r\n path: 'assign-alias',\r\n component: AssignAliasComponent\r\n },\r\n {\r\n path: 'edit-alias',\r\n component: EditAliasComponent\r\n },\r\n {\r\n path: 'transfer-alias',\r\n component: TransferAliasComponent\r\n },\r\n {\r\n path: 'settings',\r\n component: SettingsComponent\r\n },\r\n {\r\n path: '',\r\n redirectTo: '/',\r\n pathMatch: 'full'\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\n\r\n\r\nexport class AppRoutingModule { }\r\n","module.exports = \"\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.LOADING' | translate }}\\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.ERROR' | translate }}\\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.COMPLETE' | translate }}\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n {{ 'CONTEXT_MENU.COPY' | translate }}\\r\\n {{ 'CONTEXT_MENU.PASTE' | translate }}\\r\\n {{ 'CONTEXT_MENU.SELECT' | translate }}\\r\\n\\r\\n\\r\\n\\r\\n {{ 'CONTEXT_MENU.COPY' | translate }}\\r\\n\\r\\n\\r\\n\\r\\n {{ 'CONTEXT_MENU.PASTE' | translate }}\\r\\n {{ 'CONTEXT_MENU.SELECT' | translate }}\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","module.exports = \"/*\\r\\n* Implementation of themes\\r\\n*/\\n.app-content {\\n display: flex;\\n overflow-x: overlay;\\n overflow-y: hidden;\\n width: 100%; }\\n.app-content .preloader {\\n align-self: center;\\n color: #fff;\\n font-size: 2rem;\\n margin: 0 auto;\\n text-align: center;\\n width: 50%; }\\n.app-content .preloader .loading-bar {\\n display: block;\\n -webkit-animation: move 5s linear infinite;\\n animation: move 5s linear infinite;\\n background-image: -webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.125, rgba(0, 0, 0, 0.15)), color-stop(0.125, transparent), color-stop(0.25, transparent), color-stop(0.25, rgba(0, 0, 0, 0.1)), color-stop(0.375, rgba(0, 0, 0, 0.1)), color-stop(0.375, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(0, 0, 0, 0.15)), color-stop(0.625, rgba(0, 0, 0, 0.15)), color-stop(0.625, transparent), color-stop(0.75, transparent), color-stop(0.75, rgba(0, 0, 0, 0.1)), color-stop(0.875, rgba(0, 0, 0, 0.1)), color-stop(0.875, transparent), to(transparent)), -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.125, rgba(0, 0, 0, 0.3)), color-stop(0.125, transparent), color-stop(0.25, transparent), color-stop(0.25, rgba(0, 0, 0, 0.25)), color-stop(0.375, rgba(0, 0, 0, 0.25)), color-stop(0.375, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(0, 0, 0, 0.3)), color-stop(0.625, rgba(0, 0, 0, 0.3)), color-stop(0.625, transparent), color-stop(0.75, transparent), color-stop(0.75, rgba(0, 0, 0, 0.25)), color-stop(0.875, rgba(0, 0, 0, 0.25)), color-stop(0.875, transparent), to(transparent));\\n background-size: 10rem 10rem;\\n margin-top: 2rem;\\n width: 100%;\\n height: 1rem; }\\n@-webkit-keyframes move {\\n 0% {\\n background-position: 100% -10rem; }\\n 100% {\\n background-position: 100% 10rem; } }\\n@keyframes move {\\n 0% {\\n background-position: 100% -10rem; }\\n 100% {\\n background-position: 100% 10rem; } }\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcYmFzZVxcX21peGlucy5zY3NzIiwic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL0Q6XFxQcm9qZWN0c1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXGFwcC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4RUE7O0NDNUVDO0FDQUQ7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLGtCQUFrQjtFQUNsQixXQUFXLEVBQUE7QUFKYjtJQU9JLGtCQUFrQjtJQUNsQixXQUFXO0lBQ1gsZUFBZTtJQUNmLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsVUFBVSxFQUFBO0FBWmQ7TUFlTSxjQUFjO01BQ2QsMENBQWtDO2NBQWxDLGtDQUFrQztNQUNsQywrbENBc0JHO01BQ0gsNEJBQTRCO01BQzVCLGdCQUFnQjtNQUNoQixXQUFXO01BQ1gsWUFBWSxFQUFBO0FBSWhCO0VBQ0U7SUFDRSxnQ0FBZ0MsRUFBQTtFQUVsQztJQUNFLCtCQUErQixFQUFBLEVBQUE7QUFMbkM7RUFDRTtJQUNFLGdDQUFnQyxFQUFBO0VBRWxDO0lBQ0UsK0JBQStCLEVBQUEsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBtaXhpbiB0ZXh0LXRydW5jYXRlIHtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbn1cclxuQG1peGluIHRleHRXcmFwIHtcclxuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xyXG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XHJcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xyXG4gIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcclxuICBsaW5lLWJyZWFrOiBzdHJpY3Q7XHJcbiAgLXdlYmtpdC1oeXBoZW5zOiBhdXRvO1xyXG4gIC1tcy1oeXBoZW5zOiBhdXRvO1xyXG4gIGh5cGhlbnM6IGF1dG87XHJcbn1cclxuQG1peGluIGNvdmVyQm94IHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0dG9wOiAwO1xyXG5cdGxlZnQ6IDA7XHJcblx0d2lkdGg6IDEwMCU7XHJcblx0aGVpZ2h0OiAxMDAlO1xyXG59XHJcbkBtaXhpbiBhYnMgKCR0b3A6IGF1dG8sICRyaWdodDogYXV0bywgJGJvdHRvbTogYXV0bywgJGxlZnQ6IGF1dG8pIHtcclxuICB0b3A6ICR0b3A7XHJcbiAgcmlnaHQ6ICRyaWdodDtcclxuICBib3R0b206ICRib3R0b207XHJcbiAgbGVmdDogJGxlZnQ7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG59XHJcbkBtaXhpbiBjb3ZlckltZyB7XHJcblx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclxuXHQtd2Via2l0LWJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcblx0LW8tYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuXHRiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG5cdGJhY2tncm91bmQtcG9zaXRpb246IDUwJSA1MCU7XHJcbn1cclxuQG1peGluIHZhbGluZ0JveCB7XHJcblx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdHRvcDogIDUwJTtcclxuXHRsZWZ0OiA1MCU7XHJcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbn1cclxuQG1peGluIHVuU2VsZWN0IHtcclxuXHQtd2Via2l0LXRvdWNoLWNvbGxvdXQ6IG5vbmU7XHJcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcclxuICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcclxuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XHJcbn1cclxuQG1peGluIG1heDExOTkgeyAvLyBtYWtldCAxMTcxXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDExOTlweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtYXgxMTcwIHsgLy8gbWFrZXRzIDk5MlxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiAxMTcwcHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbWF4OTkxIHsgLy8gbWFrZXRzIDc2MlxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtYXg3NjEgeyAvLyBtYWtldHMgNTc2XHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2MXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1heDU3NSB7IC8vIG1ha2V0cyA0MDBcclxuICBAbWVkaWEgKG1heC13aWR0aDogNTc1cHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbW9iaWxlIHtcclxuICBAbWVkaWEgKG1heC13aWR0aDogMzk5cHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gaWNvQ2VudGVyIHtcclxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xyXG59XHJcbkBtaXhpbiBwc2V1ZG8gKCRkaXNwbGF5OiBibG9jaywgJHBvczogYWJzb2x1dGUsICRjb250ZW50OiAnJyl7XHJcbiAgY29udGVudDogJGNvbnRlbnQ7XHJcbiAgZGlzcGxheTogJGRpc3BsYXk7XHJcbiAgcG9zaXRpb246ICRwb3M7XHJcbn1cclxuXHJcbi8qXHJcbiogSW1wbGVtZW50YXRpb24gb2YgdGhlbWVzXHJcbiovXHJcbkBtaXhpbiB0aGVtaWZ5KCR0aGVtZXM6ICR0aGVtZXMpIHtcclxuICBAZWFjaCAkdGhlbWUsICRtYXAgaW4gJHRoZW1lcyB7XHJcbiAgICAudGhlbWUtI3skdGhlbWV9ICYge1xyXG4gICAgICAkdGhlbWUtbWFwOiAoKSAhZ2xvYmFsO1xyXG4gICAgICBAZWFjaCAka2V5LCAkc3VibWFwIGluICRtYXAge1xyXG4gICAgICAgICR2YWx1ZTogbWFwLWdldChtYXAtZ2V0KCR0aGVtZXMsICR0aGVtZSksICcjeyRrZXl9Jyk7XHJcbiAgICAgICAgJHRoZW1lLW1hcDogbWFwLW1lcmdlKCR0aGVtZS1tYXAsICgka2V5OiAkdmFsdWUpKSAhZ2xvYmFsO1xyXG4gICAgICB9XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgICAkdGhlbWUtbWFwOiBudWxsICFnbG9iYWw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AZnVuY3Rpb24gdGhlbWVkKCRrZXkpIHtcclxuICBAcmV0dXJuIG1hcC1nZXQoJHRoZW1lLW1hcCwgJGtleSk7XHJcbn1cclxuIiwiLypcclxuKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGVtZXNcclxuKi9cbi5hcHAtY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG92ZXJmbG93LXg6IG92ZXJsYXk7XG4gIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgd2lkdGg6IDEwMCU7IH1cbiAgLmFwcC1jb250ZW50IC5wcmVsb2FkZXIge1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBmb250LXNpemU6IDJyZW07XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHdpZHRoOiA1MCU7IH1cbiAgICAuYXBwLWNvbnRlbnQgLnByZWxvYWRlciAubG9hZGluZy1iYXIge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBhbmltYXRpb246IG1vdmUgNXMgbGluZWFyIGluZmluaXRlO1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMCwgMTAwJSAxMDAlLCBjb2xvci1zdG9wKDAuMTI1LCByZ2JhKDAsIDAsIDAsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjEyNSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjI1LCByZ2JhKDAsIDAsIDAsIDAuMSkpLCBjb2xvci1zdG9wKDAuMzc1LCByZ2JhKDAsIDAsIDAsIDAuMSkpLCBjb2xvci1zdG9wKDAuMzc1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCByZ2JhKDAsIDAsIDAsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjYyNSwgcmdiYSgwLCAwLCAwLCAwLjE1KSksIGNvbG9yLXN0b3AoMC42MjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC43NSwgcmdiYSgwLCAwLCAwLCAwLjEpKSwgY29sb3Itc3RvcCgwLjg3NSwgcmdiYSgwLCAwLCAwLCAwLjEpKSwgY29sb3Itc3RvcCgwLjg3NSwgdHJhbnNwYXJlbnQpLCB0byh0cmFuc3BhcmVudCkpLCAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAxMDAlLCAxMDAlIDAsIGNvbG9yLXN0b3AoMC4xMjUsIHJnYmEoMCwgMCwgMCwgMC4zKSksIGNvbG9yLXN0b3AoMC4xMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC4yNSwgcmdiYSgwLCAwLCAwLCAwLjI1KSksIGNvbG9yLXN0b3AoMC4zNzUsIHJnYmEoMCwgMCwgMCwgMC4yNSkpLCBjb2xvci1zdG9wKDAuMzc1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCByZ2JhKDAsIDAsIDAsIDAuMykpLCBjb2xvci1zdG9wKDAuNjI1LCByZ2JhKDAsIDAsIDAsIDAuMykpLCBjb2xvci1zdG9wKDAuNjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC43NSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuNzUsIHJnYmEoMCwgMCwgMCwgMC4yNSkpLCBjb2xvci1zdG9wKDAuODc1LCByZ2JhKDAsIDAsIDAsIDAuMjUpKSwgY29sb3Itc3RvcCgwLjg3NSwgdHJhbnNwYXJlbnQpLCB0byh0cmFuc3BhcmVudCkpO1xuICAgICAgYmFja2dyb3VuZC1zaXplOiAxMHJlbSAxMHJlbTtcbiAgICAgIG1hcmdpbi10b3A6IDJyZW07XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMXJlbTsgfVxuXG5Aa2V5ZnJhbWVzIG1vdmUge1xuICAwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAtMTByZW07IH1cbiAgMTAwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAxMHJlbTsgfSB9XG4iLCJAaW1wb3J0ICd+c3JjL2Fzc2V0cy9zY3NzL2Jhc2UvbWl4aW5zJztcclxuXHJcbi5hcHAtY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBvdmVyZmxvdy14OiBvdmVybGF5O1xyXG4gIG92ZXJmbG93LXk6IGhpZGRlbjtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgLnByZWxvYWRlciB7XHJcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIGZvbnQtc2l6ZTogMnJlbTtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgd2lkdGg6IDUwJTtcclxuXHJcbiAgICAubG9hZGluZy1iYXIge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgYW5pbWF0aW9uOiBtb3ZlIDVzIGxpbmVhciBpbmZpbml0ZTtcclxuICAgICAgYmFja2dyb3VuZC1pbWFnZTpcclxuICAgICAgICAtd2Via2l0LWdyYWRpZW50KFxyXG4gICAgICAgICAgICBsaW5lYXIsIDAgMCwgMTAwJSAxMDAlLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC4xMjUsIHJnYmEoMCwgMCwgMCwgLjE1KSksIGNvbG9yLXN0b3AoLjEyNSwgdHJhbnNwYXJlbnQpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC4yNTAsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCguMjUwLCByZ2JhKDAsIDAsIDAsIC4xMCkpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC4zNzUsIHJnYmEoMCwgMCwgMCwgLjEwKSksIGNvbG9yLXN0b3AoLjM3NSwgdHJhbnNwYXJlbnQpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC41MDAsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCguNTAwLCByZ2JhKDAsIDAsIDAsIC4xNSkpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC42MjUsIHJnYmEoMCwgMCwgMCwgLjE1KSksIGNvbG9yLXN0b3AoLjYyNSwgdHJhbnNwYXJlbnQpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC43NTAsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCguNzUwLCByZ2JhKDAsIDAsIDAsIC4xMCkpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC44NzUsIHJnYmEoMCwgMCwgMCwgLjEwKSksIGNvbG9yLXN0b3AoLjg3NSwgdHJhbnNwYXJlbnQpLFxyXG4gICAgICAgICAgICB0byh0cmFuc3BhcmVudClcclxuICAgICAgICApLFxyXG4gICAgICAgIC13ZWJraXQtZ3JhZGllbnQoXHJcbiAgICAgICAgICAgIGxpbmVhciwgMCAxMDAlLCAxMDAlIDAsXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjEyNSwgcmdiYSgwLCAwLCAwLCAuMzApKSwgY29sb3Itc3RvcCguMTI1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjI1MCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC4yNTAsIHJnYmEoMCwgMCwgMCwgLjI1KSksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjM3NSwgcmdiYSgwLCAwLCAwLCAuMjUpKSwgY29sb3Itc3RvcCguMzc1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjUwMCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC41MDAsIHJnYmEoMCwgMCwgMCwgLjMwKSksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjYyNSwgcmdiYSgwLCAwLCAwLCAuMzApKSwgY29sb3Itc3RvcCguNjI1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjc1MCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC43NTAsIHJnYmEoMCwgMCwgMCwgLjI1KSksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjg3NSwgcmdiYSgwLCAwLCAwLCAuMjUpKSwgY29sb3Itc3RvcCguODc1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIHRvKHRyYW5zcGFyZW50KVxyXG4gICAgICAgICk7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMTByZW0gMTByZW07XHJcbiAgICAgIG1hcmdpbi10b3A6IDJyZW07XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDFyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAa2V5ZnJhbWVzIG1vdmUge1xyXG4gICAgMCUge1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIC0xMHJlbTtcclxuICAgIH1cclxuICAgIDEwMCUge1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDEwcmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, OnInit, NgZone, Renderer2, OnDestroy, ViewChild} from '@angular/core';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {BackendService} from './_helpers/services/backend.service';\r\nimport {Router} from '@angular/router';\r\nimport {VariablesService} from './_helpers/services/variables.service';\r\nimport {ContextMenuComponent} from 'ngx-contextmenu';\r\nimport {IntToMoneyPipe} from './_helpers/pipes/int-to-money.pipe';\r\nimport {BigNumber} from 'bignumber.js';\r\nimport {ModalService} from './_helpers/services/modal.service';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy {\r\n\r\n intervalUpdateContractsState;\r\n expMedTsEvent;\r\n onQuitRequest = false;\r\n firstOnlineState = false;\r\n translateUsed = false;\r\n\r\n needOpenWallets = [];\r\n\r\n @ViewChild('allContextMenu') public allContextMenu: ContextMenuComponent;\r\n @ViewChild('onlyCopyContextMenu') public onlyCopyContextMenu: ContextMenuComponent;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private renderer: Renderer2,\r\n public translate: TranslateService,\r\n private backend: BackendService,\r\n private router: Router,\r\n public variablesService: VariablesService,\r\n private ngZone: NgZone,\r\n private intToMoneyPipe: IntToMoneyPipe,\r\n private modalService: ModalService\r\n ) {\r\n translate.addLangs(['en', 'fr']);\r\n translate.setDefaultLang('en');\r\n // const browserLang = translate.getBrowserLang();\r\n // translate.use(browserLang.match(/en|fr/) ? browserLang : 'en');\r\n translate.use('en').subscribe(() => {\r\n this.translateUsed = true;\r\n });\r\n }\r\n\r\n setBackendLocalization() {\r\n if (this.translateUsed) {\r\n const stringsArray = [\r\n this.translate.instant('BACKEND_LOCALIZATION.QUIT'),\r\n this.translate.instant('BACKEND_LOCALIZATION.IS_RECEIVED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.IS_CONFIRMED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.INCOME_TRANSFER_UNCONFIRMED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.INCOME_TRANSFER_CONFIRMED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.MINED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.LOCKED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.IS_MINIMIZE'),\r\n this.translate.instant('BACKEND_LOCALIZATION.RESTORE'),\r\n this.translate.instant('BACKEND_LOCALIZATION.TRAY_MENU_SHOW'),\r\n this.translate.instant('BACKEND_LOCALIZATION.TRAY_MENU_MINIMIZE')\r\n ];\r\n this.backend.setBackendLocalization(stringsArray, 'en');\r\n } else {\r\n console.warn('wait translate use');\r\n setTimeout(() => {\r\n this.setBackendLocalization();\r\n }, 10000);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.variablesService.allContextMenu = this.allContextMenu;\r\n this.variablesService.onlyCopyContextMenu = this.onlyCopyContextMenu;\r\n\r\n this.backend.initService().subscribe(initMessage => {\r\n console.log('Init message: ', initMessage);\r\n\r\n this.backend.webkitLaunchedScript();\r\n\r\n this.backend.start_backend(false, '127.0.0.1', 11512, (st2, dd2) => {\r\n console.log(st2, dd2);\r\n });\r\n\r\n this.backend.eventSubscribe('quit_requested', () => {\r\n if (!this.onQuitRequest) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n this.needOpenWallets = [];\r\n this.variablesService.daemon_state = 5;\r\n const saveFunction = () => {\r\n this.backend.storeAppData(() => {\r\n const recursionCloseWallets = () => {\r\n if (this.variablesService.wallets.length) {\r\n const lastIndex = this.variablesService.wallets.length - 1;\r\n this.backend.closeWallet(this.variablesService.wallets[lastIndex].wallet_id, () => {\r\n this.variablesService.wallets.splice(lastIndex, 1);\r\n recursionCloseWallets();\r\n });\r\n } else {\r\n this.backend.quitRequest();\r\n }\r\n };\r\n recursionCloseWallets();\r\n });\r\n };\r\n if (this.variablesService.appPass) {\r\n this.backend.storeSecureAppData(() => {\r\n saveFunction();\r\n });\r\n } else {\r\n saveFunction();\r\n }\r\n }\r\n this.onQuitRequest = true;\r\n });\r\n\r\n this.backend.eventSubscribe('update_wallet_status', (data) => {\r\n console.log('----------------- update_wallet_status -----------------');\r\n console.log(data);\r\n\r\n const wallet_state = data.wallet_state;\r\n const is_mining = data.is_mining;\r\n const wallet = this.variablesService.getWallet(data.wallet_id);\r\n\r\n // 1-synch, 2-ready, 3 - error\r\n if (wallet) {\r\n this.ngZone.run(() => {\r\n wallet.loaded = false;\r\n wallet.staking = is_mining;\r\n if (wallet_state === 2) { // ready\r\n wallet.loaded = true;\r\n }\r\n if (wallet_state === 3) { // error\r\n // wallet.error = true;\r\n }\r\n wallet.balance = data.balance;\r\n wallet.unlocked_balance = data.unlocked_balance;\r\n wallet.mined_total = data.minied_total;\r\n wallet.alias_available = data.is_alias_operations_available;\r\n });\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('wallet_sync_progress', (data) => {\r\n console.log('----------------- wallet_sync_progress -----------------');\r\n console.log(data);\r\n\r\n const wallet = this.variablesService.getWallet(data.wallet_id);\r\n if (wallet) {\r\n this.ngZone.run(() => {\r\n wallet.progress = (data.progress < 0) ? 0 : ((data.progress > 100) ? 100 : data.progress);\r\n if (wallet.progress === 0) {\r\n wallet.loaded = false;\r\n } else if (wallet.progress === 100) {\r\n wallet.loaded = true;\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('update_daemon_state', (data) => {\r\n console.log('----------------- update_daemon_state -----------------');\r\n console.log('DAEMON:' + data.daemon_network_state);\r\n console.log(data);\r\n // this.variablesService.exp_med_ts = data['expiration_median_timestamp'] + 600 + 1;\r\n this.variablesService.setExpMedTs(data['expiration_median_timestamp'] + 600 + 1);\r\n this.variablesService.net_time_delta_median = data.net_time_delta_median;\r\n this.variablesService.last_build_available = data.last_build_available;\r\n this.variablesService.last_build_displaymode = data.last_build_displaymode;\r\n this.variablesService.setHeightApp(data.height);\r\n\r\n this.ngZone.run(() => {\r\n this.variablesService.daemon_state = data['daemon_network_state'];\r\n if (data['daemon_network_state'] === 1) {\r\n const max = data['max_net_seen_height'] - data['synchronization_start_height'];\r\n const current = data.height - data['synchronization_start_height'];\r\n const return_val = Math.floor((current * 100 / max) * 100) / 100;\r\n if (max === 0 || return_val < 0) {\r\n this.variablesService.sync.progress_value = 0;\r\n this.variablesService.sync.progress_value_text = '0.00';\r\n } else if (return_val >= 100) {\r\n this.variablesService.sync.progress_value = 100;\r\n this.variablesService.sync.progress_value_text = '99.99';\r\n } else {\r\n this.variablesService.sync.progress_value = return_val;\r\n this.variablesService.sync.progress_value_text = return_val.toFixed(2);\r\n }\r\n }\r\n });\r\n if (!this.firstOnlineState && data['daemon_network_state'] === 2) {\r\n this.getAliases();\r\n this.backend.getDefaultFee((status_fee, data_fee) => {\r\n this.variablesService.default_fee_big = new BigNumber(data_fee);\r\n this.variablesService.default_fee = this.intToMoneyPipe.transform(data_fee);\r\n });\r\n this.firstOnlineState = true;\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('money_transfer', (data) => {\r\n console.log('----------------- money_transfer -----------------');\r\n console.log(data);\r\n\r\n if (!data.ti) {\r\n return;\r\n }\r\n\r\n const wallet_id = data.wallet_id;\r\n const tr_info = data.ti;\r\n\r\n const wallet = this.variablesService.getWallet(wallet_id);\r\n\r\n if (wallet) {\r\n this.ngZone.run(() => {\r\n\r\n if (!wallet.loaded) {\r\n wallet.balance = data.balance;\r\n wallet.unlocked_balance = data.unlocked_balance;\r\n } else {\r\n wallet.balance = data.balance;\r\n wallet.unlocked_balance = data.unlocked_balance;\r\n }\r\n\r\n if (tr_info.tx_type === 6) {\r\n this.variablesService.setRefreshStacking(wallet_id);\r\n }\r\n\r\n let tr_exists = wallet.excluded_history.some(elem => elem.tx_hash === tr_info.tx_hash);\r\n tr_exists = (!tr_exists) ? wallet.history.some(elem => elem.tx_hash === tr_info.tx_hash) : tr_exists;\r\n\r\n wallet.prepareHistory([tr_info]);\r\n\r\n if (tr_info.hasOwnProperty('contract')) {\r\n const exp_med_ts = this.variablesService.exp_med_ts;\r\n const height_app = this.variablesService.height_app;\r\n\r\n const contract = tr_info.contract[0];\r\n\r\n if (tr_exists) {\r\n for (let i = 0; i < wallet.contracts.length; i++) {\r\n if (wallet.contracts[i].contract_id === contract.contract_id && wallet.contracts[i].is_a === contract.is_a) {\r\n wallet.contracts[i].cancel_expiration_time = contract.cancel_expiration_time;\r\n wallet.contracts[i].expiration_time = contract.expiration_time;\r\n wallet.contracts[i].height = contract.height;\r\n wallet.contracts[i].timestamp = contract.timestamp;\r\n break;\r\n }\r\n }\r\n // $rootScope.getContractsRecount();\r\n return;\r\n }\r\n\r\n if (contract.state === 1 && contract.expiration_time < exp_med_ts) {\r\n contract.state = 110;\r\n } else if (contract.state === 5 && contract.cancel_expiration_time < exp_med_ts) {\r\n contract.state = 130;\r\n } else if (contract.state === 1) {\r\n const searchResult2 = this.variablesService.settings.notViewedContracts.find(elem => elem.state === 110 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult2) {\r\n if (searchResult2.time === contract.expiration_time) {\r\n contract.state = 110;\r\n } else {\r\n for (let j = 0; j < this.variablesService.settings.notViewedContracts.length; j++) {\r\n if (this.variablesService.settings.notViewedContracts[j].contract_id === contract.contract_id && this.variablesService.settings.notViewedContracts[j].is_a === contract.is_a) {\r\n this.variablesService.settings.notViewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n for (let j = 0; j < this.variablesService.settings.viewedContracts.length; j++) {\r\n if (this.variablesService.settings.viewedContracts[j].contract_id === contract.contract_id && this.variablesService.settings.viewedContracts[j].is_a === contract.is_a) {\r\n this.variablesService.settings.viewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (contract.state === 2 && (contract.height === 0 || (height_app - contract.height) < 10)) {\r\n contract.state = 201;\r\n } else if (contract.state === 2) {\r\n const searchResult3 = this.variablesService.settings.viewedContracts.some(elem => elem.state === 120 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult3) {\r\n contract.state = 120;\r\n }\r\n } else if (contract.state === 5) {\r\n const searchResult4 = this.variablesService.settings.notViewedContracts.find(elem => elem.state === 130 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult4) {\r\n if (searchResult4.time === contract.cancel_expiration_time) {\r\n contract.state = 130;\r\n } else {\r\n for (let j = 0; j < this.variablesService.settings.notViewedContracts.length; j++) {\r\n if (this.variablesService.settings.notViewedContracts[j].contract_id === contract.contract_id && this.variablesService.settings.notViewedContracts[j].is_a === contract.is_a) {\r\n this.variablesService.settings.notViewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n for (let j = 0; j < this.variablesService.settings.viewedContracts.length; j++) {\r\n if (this.variablesService.settings.viewedContracts[j].contract_id === contract.contract_id && this.variablesService.settings.viewedContracts[j].is_a === contract.is_a) {\r\n this.variablesService.settings.viewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (contract.state === 6 && (contract.height === 0 || (height_app - contract.height) < 10)) {\r\n contract.state = 601;\r\n }\r\n\r\n const searchResult = this.variablesService.settings.viewedContracts.some(elem => elem.state === contract.state && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n contract.is_new = !searchResult;\r\n\r\n let findContract = false;\r\n for (let i = 0; i < wallet.contracts.length; i++) {\r\n if (wallet.contracts[i].contract_id === contract.contract_id && wallet.contracts[i].is_a === contract.is_a) {\r\n for (const prop in contract) {\r\n if (contract.hasOwnProperty(prop)) {\r\n wallet.contracts[i][prop] = contract[prop];\r\n }\r\n }\r\n findContract = true;\r\n break;\r\n }\r\n }\r\n if (findContract === false) {\r\n wallet.contracts.push(contract);\r\n }\r\n wallet.recountNewContracts();\r\n }\r\n\r\n });\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('money_transfer_cancel', (data) => {\r\n console.log('----------------- money_transfer_cancel -----------------');\r\n console.log(data);\r\n\r\n if (!data.ti) {\r\n return;\r\n }\r\n\r\n const wallet_id = data.wallet_id;\r\n const tr_info = data.ti;\r\n const wallet = this.variablesService.getWallet(wallet_id);\r\n\r\n if (wallet) {\r\n if (tr_info.hasOwnProperty('contract')) {\r\n for (let i = 0; i < wallet.contracts.length; i++) {\r\n if (wallet.contracts[i].contract_id === tr_info.contract[0].contract_id && wallet.contracts[i].is_a === tr_info.contract[0].is_a) {\r\n if (wallet.contracts[i].state === 1 || wallet.contracts[i].state === 110) {\r\n wallet.contracts[i].is_new = true;\r\n wallet.contracts[i].state = 140;\r\n wallet.recountNewContracts();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n wallet.removeFromHistory(tr_info.tx_hash);\r\n\r\n let error_tr = '';\r\n switch (tr_info.tx_type) {\r\n case 0:\r\n error_tr = this.translate.instant('ERRORS.TX_TYPE_NORMAL') + '
' +\r\n tr_info.tx_hash + '
' + wallet.name + '
' + wallet.address + '
' +\r\n this.translate.instant('ERRORS.TX_TYPE_NORMAL_TO') + ' ' + this.intToMoneyPipe.transform(tr_info.amount) + ' ' +\r\n this.translate.instant('ERRORS.TX_TYPE_NORMAL_END');\r\n break;\r\n case 1:\r\n // this.translate.instant('ERRORS.TX_TYPE_PUSH_OFFER');\r\n break;\r\n case 2:\r\n // this.translate.instant('ERRORS.TX_TYPE_UPDATE_OFFER');\r\n break;\r\n case 3:\r\n // this.translate.instant('ERRORS.TX_TYPE_CANCEL_OFFER');\r\n break;\r\n case 4:\r\n error_tr = this.translate.instant('ERRORS.TX_TYPE_NEW_ALIAS') + '
' +\r\n tr_info.tx_hash + '
' + wallet.name + '
' + wallet.address + '
' +\r\n this.translate.instant('ERRORS.TX_TYPE_NEW_ALIAS_END');\r\n break;\r\n case 5:\r\n error_tr = this.translate.instant('ERRORS.TX_TYPE_UPDATE_ALIAS') + '
' +\r\n tr_info.tx_hash + '
' + wallet.name + '
' + wallet.address + '
' +\r\n this.translate.instant('ERRORS.TX_TYPE_NEW_ALIAS_END');\r\n break;\r\n case 6:\r\n error_tr = this.translate.instant('ERRORS.TX_TYPE_COIN_BASE');\r\n break;\r\n }\r\n if (error_tr) {\r\n this.modalService.prepareModal('error', error_tr);\r\n }\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('on_core_event', (data) => {\r\n console.log('----------------- on_core_event -----------------');\r\n console.log(data);\r\n\r\n data = JSON.parse(data);\r\n\r\n if (data.events != null) {\r\n for (let i = 0, length = data.events.length; i < length; i++) {\r\n\r\n switch (data.events[i].method) {\r\n case 'CORE_EVENT_BLOCK_ADDED':\r\n break;\r\n case 'CORE_EVENT_ADD_ALIAS':\r\n if (this.variablesService.aliasesChecked[data.events[i].details.address] != null) {\r\n this.variablesService.aliasesChecked[data.events[i].details.address]['name'] = '@' + data.events[i].details.alias;\r\n this.variablesService.aliasesChecked[data.events[i].details.address]['address'] = data.events[i].details.address;\r\n this.variablesService.aliasesChecked[data.events[i].details.address]['comment'] = data.events[i].details.comment;\r\n }\r\n if (this.variablesService.enableAliasSearch) {\r\n const newAlias = {\r\n name: '@' + data.events[i].details.alias,\r\n address: data.events[i].details.address,\r\n comment: data.events[i].details.comment\r\n };\r\n this.variablesService.aliases = this.variablesService.aliases.concat(newAlias);\r\n this.variablesService.changeAliases();\r\n }\r\n break;\r\n case 'CORE_EVENT_UPDATE_ALIAS':\r\n for (const address in this.variablesService.aliasesChecked) {\r\n if (this.variablesService.aliasesChecked.hasOwnProperty(address)) {\r\n if (this.variablesService.aliasesChecked[address].name === '@' + data.events[i].details.alias) {\r\n if (this.variablesService.aliasesChecked[address].address !== data.events[i].details.details.address) {\r\n delete this.variablesService.aliasesChecked[address]['name'];\r\n delete this.variablesService.aliasesChecked[address]['address'];\r\n delete this.variablesService.aliasesChecked[address]['comment'];\r\n } else {\r\n this.variablesService.aliasesChecked[address].comment = data.events[i].details.details.comment;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n if (this.variablesService.aliasesChecked[data.events[i].details.details.address] != null) {\r\n this.variablesService.aliasesChecked[data.events[i].details.details.address]['name'] = '@' + data.events[i].details.alias;\r\n this.variablesService.aliasesChecked[data.events[i].details.details.address]['address'] = data.events[i].details.details.address;\r\n this.variablesService.aliasesChecked[data.events[i].details.details.address]['comment'] = data.events[i].details.details.comment;\r\n }\r\n if (this.variablesService.enableAliasSearch) {\r\n const CurrentAlias = this.variablesService.aliases.find((element) => element.name === '@' + data.events[i].details.alias);\r\n if (CurrentAlias) {\r\n CurrentAlias.address = data.events[i].details.details.address;\r\n CurrentAlias.comment = data.events[i].details.details.comment;\r\n }\r\n }\r\n this.variablesService.changeAliases();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.intervalUpdateContractsState = setInterval(() => {\r\n this.variablesService.wallets.forEach((wallet) => {\r\n wallet.contracts.forEach((contract) => {\r\n if (contract.state === 201 && contract.height !== 0 && (this.variablesService.height_app - contract.height) >= 10) {\r\n contract.state = 2;\r\n contract.is_new = true;\r\n console.warn('need check state in contracts');\r\n } else if (contract.state === 601 && contract.height !== 0 && (this.variablesService.height_app - contract.height) >= 10) {\r\n contract.state = 6;\r\n contract.is_new = true;\r\n }\r\n });\r\n });\r\n }, 30000);\r\n\r\n this.expMedTsEvent = this.variablesService.getExpMedTsEvent.subscribe((newTimestamp: number) => {\r\n this.variablesService.wallets.forEach((wallet) => {\r\n wallet.contracts.forEach((contract) => {\r\n if (contract.state === 1 && contract.expiration_time <= newTimestamp) {\r\n contract.state = 110;\r\n contract.is_new = true;\r\n wallet.recountNewContracts();\r\n } else if (contract.state === 5 && contract.cancel_expiration_time <= newTimestamp) {\r\n contract.state = 130;\r\n contract.is_new = true;\r\n wallet.recountNewContracts();\r\n }\r\n });\r\n });\r\n });\r\n\r\n\r\n this.backend.getAppData((status, data) => {\r\n if (data && Object.keys(data).length > 0) {\r\n for (const key in data) {\r\n if (data.hasOwnProperty(key) && this.variablesService.settings.hasOwnProperty(key)) {\r\n this.variablesService.settings[key] = data[key];\r\n }\r\n }\r\n if (this.variablesService.settings.hasOwnProperty('theme') && ['dark', 'white', 'gray'].indexOf(this.variablesService.settings.theme) !== -1) {\r\n this.renderer.addClass(document.body, 'theme-' + this.variablesService.settings.theme);\r\n } else {\r\n this.renderer.addClass(document.body, 'theme-' + this.variablesService.defaultTheme);\r\n }\r\n if (this.variablesService.settings.hasOwnProperty('scale') && [7.5, 10, 12.5, 15].indexOf(this.variablesService.settings.scale) !== -1) {\r\n this.renderer.setStyle(document.documentElement, 'font-size', this.variablesService.settings.scale + 'px');\r\n }\r\n } else {\r\n this.variablesService.settings.theme = this.variablesService.defaultTheme;\r\n this.renderer.addClass(document.body, 'theme-' + this.variablesService.settings.theme);\r\n }\r\n\r\n this.setBackendLocalization();\r\n\r\n this.backend.setLogLevel(this.variablesService.settings.appLog);\r\n\r\n if (this.router.url !== '/login') {\r\n this.backend.haveSecureAppData((statusPass) => {\r\n if (statusPass) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/login'], {queryParams: {type: 'auth'}});\r\n });\r\n } else {\r\n if (Object.keys(data).length !== 0) {\r\n this.needOpenWallets = JSON.parse(JSON.stringify(this.variablesService.settings.wallets));\r\n this.ngZone.run(() => {\r\n this.variablesService.appLogin = true;\r\n this.router.navigate(['/']);\r\n });\r\n } else {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/login'], {queryParams: {type: 'reg'}});\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }, error => {\r\n console.log(error);\r\n });\r\n this.getMoneyEquivalent();\r\n }\r\n\r\n getMoneyEquivalent() {\r\n this.http.get('https://api.coingecko.com/api/v3/ping').subscribe(\r\n () => {\r\n this.http.get('https://api.coingecko.com/api/v3/simple/price?ids=zano&vs_currencies=usd').subscribe(\r\n data => {\r\n this.variablesService.moneyEquivalent = data['zano']['usd'];\r\n },\r\n error => {\r\n console.warn('api.coingecko.com price error: ', error);\r\n }\r\n );\r\n },\r\n error => {\r\n console.warn('api.coingecko.com error: ', error);\r\n setTimeout(() => {\r\n this.getMoneyEquivalent();\r\n }, 60000);\r\n }\r\n )\r\n }\r\n\r\n getAliases() {\r\n this.backend.getAllAliases((status, data, error) => {\r\n\r\n console.warn(error);\r\n\r\n if (error === 'CORE_BUSY') {\r\n window.setTimeout(() => {\r\n this.getAliases();\r\n }, 10000);\r\n } else if (error === 'OVERFLOW') {\r\n this.variablesService.aliases = [];\r\n this.variablesService.enableAliasSearch = false;\r\n this.variablesService.wallets.forEach(wallet => {\r\n wallet.alias = this.backend.getWalletAlias(wallet.address);\r\n });\r\n } else {\r\n this.variablesService.enableAliasSearch = true;\r\n if (data.aliases && data.aliases.length) {\r\n this.variablesService.aliases = [];\r\n data.aliases.forEach(alias => {\r\n const newAlias = {\r\n name: '@' + alias.alias,\r\n address: alias.address,\r\n comment: alias.comment\r\n };\r\n this.variablesService.aliases.push(newAlias);\r\n });\r\n this.variablesService.wallets.forEach(wallet => {\r\n wallet.alias = this.backend.getWalletAlias(wallet.address);\r\n });\r\n this.variablesService.aliases = this.variablesService.aliases.sort((a, b) => {\r\n if (a.name.length > b.name.length) {\r\n return 1;\r\n }\r\n if (a.name.length < b.name.length) {\r\n return -1;\r\n }\r\n if (a.name > b.name) {\r\n return 1;\r\n }\r\n if (a.name < b.name) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n this.variablesService.changeAliases();\r\n }\r\n }\r\n });\r\n }\r\n\r\n contextMenuCopy(target) {\r\n if (target && (target['nodeName'].toUpperCase() === 'TEXTAREA' || target['nodeName'].toUpperCase() === 'INPUT')) {\r\n const start = (target['contextSelectionStart']) ? 'contextSelectionStart' : 'selectionStart';\r\n const end = (target['contextSelectionEnd']) ? 'contextSelectionEnd' : 'selectionEnd';\r\n const canUseSelection = ((target[start]) || (target[start] === '0'));\r\n const SelectedText = (canUseSelection) ? target['value'].substring(target[start], target[end]) : target['value'];\r\n this.backend.setClipboard(String(SelectedText));\r\n }\r\n }\r\n\r\n contextMenuOnlyCopy(text) {\r\n if (text) {\r\n this.backend.setClipboard(String(text));\r\n }\r\n }\r\n\r\n contextMenuPaste(target) {\r\n if (target && (target['nodeName'].toUpperCase() === 'TEXTAREA' || target['nodeName'].toUpperCase() === 'INPUT')) {\r\n this.backend.getClipboard((status, clipboard) => {\r\n clipboard = String(clipboard);\r\n if (typeof clipboard !== 'string' || clipboard.length) {\r\n const start = (target['contextSelectionStart']) ? 'contextSelectionStart' : 'selectionStart';\r\n const end = (target['contextSelectionEnd']) ? 'contextSelectionEnd' : 'selectionEnd';\r\n const _pre = target['value'].substring(0, target[start]);\r\n const _aft = target['value'].substring(target[end], target['value'].length);\r\n let text = _pre + clipboard + _aft;\r\n const cursorPosition = (_pre + clipboard).length;\r\n if (target['maxLength'] && parseInt(target['maxLength'], 10) > 0) {\r\n text = text.substr(0, parseInt(target['maxLength'], 10));\r\n }\r\n target['value'] = text;\r\n target.setSelectionRange(cursorPosition, cursorPosition);\r\n target.dispatchEvent(new Event('input'));\r\n target['focus']();\r\n }\r\n });\r\n }\r\n }\r\n\r\n contextMenuSelect(target) {\r\n if (target && (target['nodeName'].toUpperCase() === 'TEXTAREA' || target['nodeName'].toUpperCase() === 'INPUT')) {\r\n target['focus']();\r\n setTimeout(() => {\r\n target['select']();\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.intervalUpdateContractsState) {\r\n clearInterval(this.intervalUpdateContractsState);\r\n }\r\n this.expMedTsEvent.unsubscribe();\r\n }\r\n\r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\n\r\nimport { AppComponent } from './app.component';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { SettingsComponent } from './settings/settings.component';\r\nimport { SidebarComponent } from './sidebar/sidebar.component';\r\nimport { MainComponent } from './main/main.component';\r\nimport { CreateWalletComponent } from './create-wallet/create-wallet.component';\r\nimport { OpenWalletComponent } from './open-wallet/open-wallet.component';\r\nimport { OpenWalletModalComponent } from './open-wallet-modal/open-wallet-modal.component';\r\nimport { RestoreWalletComponent } from './restore-wallet/restore-wallet.component';\r\nimport { SeedPhraseComponent } from './seed-phrase/seed-phrase.component';\r\nimport { WalletDetailsComponent } from './wallet-details/wallet-details.component';\r\nimport { AssignAliasComponent } from './assign-alias/assign-alias.component';\r\nimport { EditAliasComponent } from './edit-alias/edit-alias.component';\r\nimport { TransferAliasComponent } from './transfer-alias/transfer-alias.component';\r\nimport { WalletComponent } from './wallet/wallet.component';\r\nimport { SendComponent } from './send/send.component';\r\nimport { ReceiveComponent } from './receive/receive.component';\r\nimport { HistoryComponent } from './history/history.component';\r\nimport { ContractsComponent } from './contracts/contracts.component';\r\nimport { PurchaseComponent } from './purchase/purchase.component';\r\nimport { MessagesComponent } from './messages/messages.component';\r\nimport { TypingMessageComponent } from './typing-message/typing-message.component';\r\nimport { StakingComponent } from './staking/staking.component';\r\n\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\n\r\nimport { BackendService } from './_helpers/services/backend.service';\r\nimport { ModalService } from './_helpers/services/modal.service';\r\nimport { MoneyToIntPipe } from './_helpers/pipes/money-to-int.pipe';\r\nimport { IntToMoneyPipe } from './_helpers/pipes/int-to-money.pipe';\r\nimport { HistoryTypeMessagesPipe } from './_helpers/pipes/history-type-messages.pipe';\r\nimport { ContractStatusMessagesPipe } from './_helpers/pipes/contract-status-messages.pipe';\r\nimport { ContractTimeLeftPipe } from './_helpers/pipes/contract-time-left.pipe';\r\nimport { TooltipDirective } from './_helpers/directives/tooltip.directive';\r\nimport { InputValidateDirective } from './_helpers/directives/input-validate/input-validate.directive';\r\nimport { StakingSwitchComponent } from './_helpers/directives/staking-switch/staking-switch.component';\r\nimport { ModalContainerComponent } from './_helpers/directives/modal-container/modal-container.component';\r\nimport { TransactionDetailsComponent } from './_helpers/directives/transaction-details/transaction-details.component';\r\nimport { ContextMenuModule } from 'ngx-contextmenu';\r\nimport { ChartModule, HIGHCHARTS_MODULES } from 'angular-highcharts';\r\nimport * as highcharts from 'highcharts';\r\nimport exporting from 'highcharts/modules/exporting.src';\r\nimport { ProgressContainerComponent } from './_helpers/directives/progress-container/progress-container.component';\r\nimport { InputDisableSelectionDirective } from './_helpers/directives/input-disable-selection/input-disable-selection.directive';\r\n\r\nexport function HttpLoaderFactory(httpClient: HttpClient) {\r\n return new TranslateHttpLoader(httpClient, './assets/i18n/', '.json');\r\n}\r\n\r\n\r\n// import * as more from 'highcharts/highcharts-more.src';\r\n// import * as exporting from 'highcharts/modules/exporting.src';\r\n// import * as highstock from 'highcharts/modules/stock.src';\r\n\r\nexport function highchartsFactory() {\r\n // Default options.\r\n highcharts.setOptions({\r\n global: {\r\n useUTC: false\r\n }\r\n });\r\n\r\n return [exporting];\r\n}\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n LoginComponent,\r\n SettingsComponent,\r\n SidebarComponent,\r\n MainComponent,\r\n CreateWalletComponent,\r\n OpenWalletComponent,\r\n OpenWalletModalComponent,\r\n RestoreWalletComponent,\r\n SeedPhraseComponent,\r\n WalletDetailsComponent,\r\n AssignAliasComponent,\r\n EditAliasComponent,\r\n TransferAliasComponent,\r\n WalletComponent,\r\n SendComponent,\r\n ReceiveComponent,\r\n HistoryComponent,\r\n ContractsComponent,\r\n PurchaseComponent,\r\n MessagesComponent,\r\n StakingComponent,\r\n TypingMessageComponent,\r\n MoneyToIntPipe,\r\n IntToMoneyPipe,\r\n StakingSwitchComponent,\r\n HistoryTypeMessagesPipe,\r\n ContractStatusMessagesPipe,\r\n ContractTimeLeftPipe,\r\n TooltipDirective,\r\n InputValidateDirective,\r\n ModalContainerComponent,\r\n TransactionDetailsComponent,\r\n ProgressContainerComponent,\r\n InputDisableSelectionDirective\r\n ],\r\n imports: [\r\n BrowserModule,\r\n AppRoutingModule,\r\n HttpClientModule,\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: HttpLoaderFactory,\r\n deps: [HttpClient]\r\n }\r\n }),\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgSelectModule,\r\n ChartModule,\r\n ContextMenuModule.forRoot()\r\n ],\r\n providers: [\r\n BackendService,\r\n ModalService,\r\n MoneyToIntPipe,\r\n IntToMoneyPipe,\r\n { provide: HIGHCHARTS_MODULES, useFactory: highchartsFactory }\r\n // {provide: HIGHCHARTS_MODULES, useFactory: () => [ highstock, more, exporting ] }\r\n ],\r\n entryComponents: [\r\n ModalContainerComponent\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ wallet.name }}\\r\\n {{ 'BREADCRUMBS.ASSIGN_ALIAS' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
6 && assignForm.get('name').value.length <= 25\\\">\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_WRONG' | translate }}\\r\\n
\\r\\n
25\\\">\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_EXISTS' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
= variablesService.maxCommentLength\\\">\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
{{ \\\"ASSIGN_ALIAS.COST\\\" | translate : {value: alias.price | intToMoney, currency: variablesService.defaultCurrency} }}
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n\"","module.exports = \".form-assign {\\n margin: 2.4rem 0; }\\n .form-assign .alias-name {\\n width: 50%; }\\n .form-assign .alias-cost {\\n font-size: 1.3rem;\\n margin-top: 2rem; }\\n .form-assign .wrap-buttons {\\n display: flex;\\n justify-content: space-between;\\n margin: 2.5rem -0.7rem; }\\n .form-assign .wrap-buttons button {\\n margin: 0 0.7rem;\\n width: 15rem; }\\n .assign-alias-tooltip {\\n font-size: 1.3rem;\\n line-height: 2rem;\\n padding: 1rem 1.5rem;\\n max-width: 46rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvYXNzaWduLWFsaWFzL0Q6XFxQcm9qZWN0c1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXGFzc2lnbi1hbGlhc1xcYXNzaWduLWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQTtFQUtsQjtFQUNFLGlCQUFpQjtFQUNqQixpQkFBaUI7RUFDakIsb0JBQW9CO0VBQ3BCLGdCQUFnQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvYXNzaWduLWFsaWFzL2Fzc2lnbi1hbGlhcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWFzc2lnbiB7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuXHJcbiAgLmFsaWFzLW5hbWUge1xyXG4gICAgd2lkdGg6IDUwJTtcclxuICB9XHJcblxyXG4gIC5hbGlhcy1jb3N0IHtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbWFyZ2luLXRvcDogMnJlbTtcclxuICB9XHJcblxyXG4gIC53cmFwLWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIG1hcmdpbjogMi41cmVtIC0wLjdyZW07XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAwIDAuN3JlbTtcclxuICAgICAgd2lkdGg6IDE1cmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmFzc2lnbi1hbGlhcy10b29sdGlwIHtcclxuICBmb250LXNpemU6IDEuM3JlbTtcclxuICBsaW5lLWhlaWdodDogMnJlbTtcclxuICBwYWRkaW5nOiAxcmVtIDEuNXJlbTtcclxuICBtYXgtd2lkdGg6IDQ2cmVtO1xyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnInit, OnDestroy} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {Location} from '@angular/common';\r\nimport {Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {MoneyToIntPipe} from '../_helpers/pipes/money-to-int.pipe';\r\nimport {IntToMoneyPipe} from '../_helpers/pipes/int-to-money.pipe';\r\nimport BigNumber from 'bignumber.js';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-assign-alias',\r\n templateUrl: './assign-alias.component.html',\r\n styleUrls: ['./assign-alias.component.scss']\r\n})\r\nexport class AssignAliasComponent implements OnInit, OnDestroy {\r\n\r\n wallet: Wallet;\r\n assignForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, Validators.pattern(/^@?[a-z0-9\\.\\-]{6,25}$/)]),\r\n comment: new FormControl('', [(g: FormControl) => {\r\n if (g.value > this.variablesService.maxCommentLength) {\r\n return {'maxLength': true};\r\n } else {\r\n return null;\r\n }\r\n }])\r\n });\r\n assignFormSubscription: Subscription;\r\n alias = {\r\n name: '',\r\n fee: this.variablesService.default_fee,\r\n price: new BigNumber(0),\r\n reward: '0',\r\n rewardOriginal: '0',\r\n comment: '',\r\n exists: false\r\n };\r\n canRegister = false;\r\n notEnoughMoney = false;\r\n\r\n constructor(\r\n private ngZone: NgZone,\r\n private location: Location,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private moneyToInt: MoneyToIntPipe,\r\n private intToMoney: IntToMoneyPipe\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.wallet = this.variablesService.currentWallet;\r\n this.assignFormSubscription = this.assignForm.get('name').valueChanges.subscribe(value => {\r\n this.canRegister = false;\r\n this.alias.exists = false;\r\n const newName = value.toLowerCase().replace('@', '');\r\n if (!(this.assignForm.controls['name'].errors && this.assignForm.controls['name'].errors.hasOwnProperty('pattern')) && newName.length >= 6 && newName.length <= 25) {\r\n this.backend.getAliasByName(newName, status => {\r\n this.ngZone.run(() => {\r\n this.alias.exists = status;\r\n });\r\n if (!status) {\r\n this.alias.price = new BigNumber(0);\r\n this.backend.getAliasCoast(newName, (statusPrice, dataPrice) => {\r\n this.ngZone.run(() => {\r\n if (statusPrice) {\r\n this.alias.price = BigNumber.sum(dataPrice['coast'], this.variablesService.default_fee_big);\r\n }\r\n this.notEnoughMoney = this.alias.price.isGreaterThan(this.wallet.unlocked_balance);\r\n this.alias.reward = this.intToMoney.transform(this.alias.price, false);\r\n this.alias.rewardOriginal = this.intToMoney.transform(dataPrice['coast'], false);\r\n this.canRegister = !this.notEnoughMoney;\r\n });\r\n });\r\n } else {\r\n this.notEnoughMoney = false;\r\n this.alias.reward = '0';\r\n this.alias.rewardOriginal = '0';\r\n }\r\n });\r\n } else {\r\n this.notEnoughMoney = false;\r\n this.alias.reward = '0';\r\n this.alias.rewardOriginal = '0';\r\n }\r\n this.alias.name = newName;\r\n });\r\n }\r\n\r\n assignAlias() {\r\n const alias = this.backend.getWalletAlias(this.wallet.address);\r\n if (alias.hasOwnProperty('name')) {\r\n this.modalService.prepareModal('info', 'ASSIGN_ALIAS.ONE_ALIAS');\r\n } else {\r\n this.alias.comment = this.assignForm.get('comment').value;\r\n this.backend.registerAlias(this.wallet.wallet_id, this.alias.name, this.wallet.address, this.alias.fee, this.alias.comment, this.alias.rewardOriginal, (status, data) => {\r\n if (status) {\r\n this.wallet.wakeAlias = true;\r\n this.modalService.prepareModal('info', 'ASSIGN_ALIAS.REQUEST_ADD_REG');\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.wallet.wallet_id]);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.assignFormSubscription.unsubscribe();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n {{ 'CONTRACTS.EMPTY' | translate }}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{ 'CONTRACTS.CONTRACTS' | translate }}{{ 'CONTRACTS.DATE' | translate }}{{ 'CONTRACTS.AMOUNT' | translate }}{{ 'CONTRACTS.STATUS' | translate }}{{ 'CONTRACTS.COMMENTS' | translate }}
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{item.private_detailes.t}}\\r\\n
\\r\\n
\\r\\n
{{item.timestamp * 1000 | date : 'dd-MM-yyyy HH:mm'}}
\\r\\n
\\r\\n
{{item.private_detailes.to_pay | intToMoney}} {{variablesService.defaultCurrency}}
\\r\\n
\\r\\n
\\r\\n {{item.state | contractStatusMessages : item.is_a}}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{item.private_detailes.c}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.empty-contracts {\\n font-size: 1.5rem; }\\n\\n.wrap-table {\\n margin: -3rem -3rem 0 -3rem;\\n overflow-x: auto; }\\n\\n.wrap-table table tbody tr {\\n cursor: pointer;\\n outline: none !important; }\\n\\n.wrap-table table tbody tr .contract {\\n position: relative;\\n display: flex;\\n align-items: center; }\\n\\n.wrap-table table tbody tr .contract .icon {\\n flex-shrink: 0; }\\n\\n.wrap-table table tbody tr .contract .icon.new, .wrap-table table tbody tr .contract .icon.alert {\\n position: absolute;\\n top: 0; }\\n\\n.wrap-table table tbody tr .contract .icon.new {\\n left: -2.3rem;\\n -webkit-mask: url('new.svg') no-repeat center;\\n mask: url('new.svg') no-repeat center;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.wrap-table table tbody tr .contract .icon.alert {\\n top: 0.2rem;\\n left: -2.1rem;\\n -webkit-mask: url('alert.svg') no-repeat center;\\n mask: url('alert.svg') no-repeat center;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n.wrap-table table tbody tr .contract .icon.purchase, .wrap-table table tbody tr .contract .icon.sell {\\n margin-right: 1rem;\\n width: 1.5rem;\\n height: 1.5rem; }\\n\\n.wrap-table table tbody tr .contract .icon.purchase {\\n -webkit-mask: url('purchase.svg') no-repeat center;\\n mask: url('purchase.svg') no-repeat center; }\\n\\n.wrap-table table tbody tr .contract .icon.sell {\\n -webkit-mask: url('sell.svg') no-repeat center;\\n mask: url('sell.svg') no-repeat center; }\\n\\n.wrap-table table tbody tr .contract span {\\n text-overflow: ellipsis;\\n overflow: hidden; }\\n\\n.wrap-table table tbody tr .status, .wrap-table table tbody tr .comment {\\n display: inline-block;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n max-width: 100%; }\\n\\n.contracts-buttons {\\n display: flex;\\n margin: 3rem 0;\\n width: 50%; }\\n\\n.contracts-buttons button {\\n flex: 0 1 50%;\\n margin-right: 1.5rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29udHJhY3RzL0Q6XFxQcm9qZWN0c1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXGNvbnRyYWN0c1xcY29udHJhY3RzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsMkJBQTJCO0VBQzNCLGdCQUFnQixFQUFBOztBQUZsQjtJQVNRLGVBQWU7SUFDZix3QkFBd0IsRUFBQTs7QUFWaEM7TUFhVSxrQkFBa0I7TUFDbEIsYUFBYTtNQUNiLG1CQUFtQixFQUFBOztBQWY3QjtRQWtCWSxjQUFjLEVBQUE7O0FBbEIxQjtVQXFCYyxrQkFBa0I7VUFDbEIsTUFBTSxFQUFBOztBQXRCcEI7VUEwQmMsYUFBYTtVQUNiLDZDQUFzRDtrQkFBdEQscUNBQXNEO1VBQ3RELGFBQWE7VUFDYixjQUFjLEVBQUE7O0FBN0I1QjtVQWlDYyxXQUFXO1VBQ1gsYUFBYTtVQUNiLCtDQUF3RDtrQkFBeEQsdUNBQXdEO1VBQ3hELGFBQWE7VUFDYixjQUFjLEVBQUE7O0FBckM1QjtVQXlDYyxrQkFBa0I7VUFDbEIsYUFBYTtVQUNiLGNBQWMsRUFBQTs7QUEzQzVCO1VBK0NjLGtEQUEyRDtrQkFBM0QsMENBQTJELEVBQUE7O0FBL0N6RTtVQW1EYyw4Q0FBdUQ7a0JBQXZELHNDQUF1RCxFQUFBOztBQW5EckU7UUF3RFksdUJBQXVCO1FBQ3ZCLGdCQUFnQixFQUFBOztBQXpENUI7TUE4RFUscUJBQXFCO01BQ3JCLHVCQUF1QjtNQUN2QixnQkFBZ0I7TUFDaEIsZUFBZSxFQUFBOztBQU96QjtFQUNFLGFBQWE7RUFDYixjQUFjO0VBQ2QsVUFBVSxFQUFBOztBQUhaO0lBTUksYUFBYTtJQUNiLG9CQUFvQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvY29udHJhY3RzL2NvbnRyYWN0cy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmVtcHR5LWNvbnRyYWN0cyB7XHJcbiAgZm9udC1zaXplOiAxLjVyZW07XHJcbn1cclxuXHJcbi53cmFwLXRhYmxlIHtcclxuICBtYXJnaW46IC0zcmVtIC0zcmVtIDAgLTNyZW07XHJcbiAgb3ZlcmZsb3cteDogYXV0bztcclxuXHJcbiAgdGFibGUge1xyXG5cclxuICAgIHRib2R5IHtcclxuXHJcbiAgICAgIHRyIHtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xyXG5cclxuICAgICAgICAuY29udHJhY3Qge1xyXG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gICAgICAgICAgLmljb24ge1xyXG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcclxuXHJcbiAgICAgICAgICAgICYubmV3LCAmLmFsZXJ0IHtcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAmLm5ldyB7XHJcbiAgICAgICAgICAgICAgbGVmdDogLTIuM3JlbTtcclxuICAgICAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL25ldy5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDEuN3JlbTtcclxuICAgICAgICAgICAgICBoZWlnaHQ6IDEuN3JlbTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJi5hbGVydCB7XHJcbiAgICAgICAgICAgICAgdG9wOiAwLjJyZW07XHJcbiAgICAgICAgICAgICAgbGVmdDogLTIuMXJlbTtcclxuICAgICAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2FsZXJ0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICAgICAgICB3aWR0aDogMS4ycmVtO1xyXG4gICAgICAgICAgICAgIGhlaWdodDogMS4ycmVtO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAmLnB1cmNoYXNlLCAmLnNlbGwge1xyXG4gICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcclxuICAgICAgICAgICAgICB3aWR0aDogMS41cmVtO1xyXG4gICAgICAgICAgICAgIGhlaWdodDogMS41cmVtO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAmLnB1cmNoYXNlIHtcclxuICAgICAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3B1cmNoYXNlLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJi5zZWxsIHtcclxuICAgICAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3NlbGwuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgc3BhbiB7XHJcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnN0YXR1cywgLmNvbW1lbnQge1xyXG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmNvbnRyYWN0cy1idXR0b25zIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIG1hcmdpbjogM3JlbSAwO1xyXG4gIHdpZHRoOiA1MCU7XHJcblxyXG4gIGJ1dHRvbiB7XHJcbiAgICBmbGV4OiAwIDEgNTAlO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW07XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, OnInit, OnDestroy} from '@angular/core';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\n\r\n@Component({\r\n selector: 'app-contracts',\r\n templateUrl: './contracts.component.html',\r\n styleUrls: ['./contracts.component.scss']\r\n})\r\nexport class ContractsComponent implements OnInit, OnDestroy {\r\n\r\n parentRouting;\r\n walletId;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n public variablesService: VariablesService\r\n ) {\r\n }\r\n\r\n public get sortedArrayContracts(): any[] {\r\n return this.variablesService.currentWallet.contracts.sort((a, b) => {\r\n if (a.is_new < b.is_new) {\r\n return 1;\r\n }\r\n if (a.is_new > b.is_new) {\r\n return -1;\r\n }\r\n if (a.timestamp < b.timestamp) {\r\n return 1;\r\n }\r\n if (a.timestamp > b.timestamp) {\r\n return -1;\r\n }\r\n if (a.contract_id < b.contract_id) {\r\n return 1;\r\n }\r\n if (a.contract_id > b.contract_id) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(params => {\r\n if (params.hasOwnProperty('id')) {\r\n this.walletId = params['id'];\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\\r\\n {{ 'BREADCRUMBS.CREATE_WALLET' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'CREATE_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'CREATE_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\\r\\n
\\r\\n
\\r\\n
= variablesService.maxWalletNameLength\\\">\\r\\n {{ 'CREATE_WALLET.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'CREATE_WALLET.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \":host {\\n position: relative; }\\n\\n.form-create {\\n margin: 2.4rem 0;\\n width: 50%; }\\n\\n.form-create .wrap-buttons {\\n display: flex;\\n margin: 2.5rem -0.7rem; }\\n\\n.form-create .wrap-buttons button {\\n margin: 0 0.7rem; }\\n\\n.form-create .wrap-buttons button.transparent-button {\\n flex-basis: 50%; }\\n\\n.form-create .wrap-buttons button.select-button {\\n flex-basis: 60%; }\\n\\n.form-create .wrap-buttons button.create-button {\\n flex: 1 1 50%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY3JlYXRlLXdhbGxldC9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxjcmVhdGUtd2FsbGV0XFxjcmVhdGUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTs7QUFGWjtJQUtJLGFBQWE7SUFDYixzQkFBc0IsRUFBQTs7QUFOMUI7TUFTTSxnQkFBZ0IsRUFBQTs7QUFUdEI7UUFZUSxlQUFlLEVBQUE7O0FBWnZCO1FBZ0JRLGVBQWUsRUFBQTs7QUFoQnZCO1FBb0JRLGFBQWEsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2NyZWF0ZS13YWxsZXQvY3JlYXRlLXdhbGxldC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5mb3JtLWNyZWF0ZSB7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuICB3aWR0aDogNTAlO1xyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcblxyXG4gICAgICAmLnRyYW5zcGFyZW50LWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleC1iYXNpczogNTAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnNlbGVjdC1idXR0b24ge1xyXG4gICAgICAgIGZsZXgtYmFzaXM6IDYwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5jcmVhdGUtYnV0dG9uIHtcclxuICAgICAgICBmbGV4OiAxIDEgNTAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Router} from '@angular/router';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-create-wallet',\r\n templateUrl: './create-wallet.component.html',\r\n styleUrls: ['./create-wallet.component.scss']\r\n})\r\nexport class CreateWalletComponent implements OnInit {\r\n\r\n createForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, (g: FormControl) => {\r\n for (let i = 0; i < this.variablesService.wallets.length; i++) {\r\n if (g.value === this.variablesService.wallets[i].name) {\r\n return {'duplicate': true};\r\n }\r\n }\r\n return null;\r\n }]),\r\n password: new FormControl(''),\r\n confirm: new FormControl('')\r\n }, function (g: FormGroup) {\r\n return g.get('password').value === g.get('confirm').value ? null : {'confirm_mismatch': true};\r\n });\r\n\r\n wallet = {\r\n id: ''\r\n };\r\n\r\n walletSaved = false;\r\n walletSavedName = '';\r\n progressWidth = '9rem';\r\n\r\n constructor(\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n createWallet() {\r\n this.ngZone.run(() => {\r\n this.progressWidth = '100%';\r\n this.router.navigate(['/seed-phrase'], {queryParams: {wallet_id: this.wallet.id}});\r\n });\r\n }\r\n\r\n saveWallet() {\r\n if (this.createForm.valid && this.createForm.get('name').value.length <= this.variablesService.maxWalletNameLength) {\r\n this.backend.saveFileDialog(this.translate.instant('CREATE_WALLET.TITLE_SAVE'), '*', this.variablesService.settings.default_path, (file_status, file_data) => {\r\n if (file_status) {\r\n this.variablesService.settings.default_path = file_data.path.substr(0, file_data.path.lastIndexOf('/'));\r\n this.walletSavedName = file_data.path.substr(file_data.path.lastIndexOf('/') + 1, file_data.path.length - 1);\r\n this.backend.generateWallet(file_data.path, this.createForm.get('password').value, (generate_status, generate_data, errorCode) => {\r\n if (generate_status) {\r\n this.wallet.id = generate_data.wallet_id;\r\n this.variablesService.opening_wallet = new Wallet(\r\n generate_data.wallet_id,\r\n this.createForm.get('name').value,\r\n this.createForm.get('password').value,\r\n generate_data['wi'].path,\r\n generate_data['wi'].address,\r\n generate_data['wi'].balance,\r\n generate_data['wi'].unlocked_balance,\r\n generate_data['wi'].mined_total,\r\n generate_data['wi'].tracking_hey\r\n );\r\n this.variablesService.opening_wallet.alias = this.backend.getWalletAlias(generate_data['wi'].address);\r\n this.ngZone.run(() => {\r\n this.walletSaved = true;\r\n this.progressWidth = '50%';\r\n });\r\n } else {\r\n if (errorCode && errorCode === 'ALREADY_EXISTS') {\r\n this.modalService.prepareModal('error', 'CREATE_WALLET.ERROR_CANNOT_SAVE_TOP');\r\n } else {\r\n this.modalService.prepareModal('error', 'CREATE_WALLET.ERROR_CANNOT_SAVE_SYSTEM');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ wallet.name }}\\r\\n {{ 'BREADCRUMBS.EDIT_ALIAS' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
0 && notEnoughMoney\\\">\\r\\n {{ 'EDIT_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\\r\\n
\\r\\n
= variablesService.maxCommentLength\\\">\\r\\n {{ 'EDIT_ALIAS.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
{{ \\\"EDIT_ALIAS.COST\\\" | translate : {value: variablesService.default_fee, currency: variablesService.defaultCurrency} }}
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \".form-edit {\\n margin: 2.4rem 0; }\\n .form-edit .alias-name {\\n width: 50%; }\\n .form-edit .alias-cost {\\n font-size: 1.3rem;\\n margin-top: 2rem; }\\n .form-edit .wrap-buttons {\\n display: flex;\\n justify-content: space-between;\\n margin: 2.5rem -0.7rem; }\\n .form-edit .wrap-buttons button {\\n margin: 0 0.7rem;\\n width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZWRpdC1hbGlhcy9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxlZGl0LWFsaWFzXFxlZGl0LWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQSIsImZpbGUiOiJzcmMvYXBwL2VkaXQtYWxpYXMvZWRpdC1hbGlhcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWVkaXQge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcblxyXG4gIC5hbGlhcy1uYW1lIHtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgfVxyXG5cclxuICAuYWxpYXMtY29zdCB7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbi10b3A6IDJyZW07XHJcbiAgfVxyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcbiAgICAgIHdpZHRoOiAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {Location} from '@angular/common';\r\nimport {Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\n\r\n@Component({\r\n selector: 'app-edit-alias',\r\n templateUrl: './edit-alias.component.html',\r\n styleUrls: ['./edit-alias.component.scss']\r\n})\r\nexport class EditAliasComponent implements OnInit {\r\n\r\n wallet: Wallet;\r\n alias: any;\r\n oldAliasComment: string;\r\n notEnoughMoney: boolean;\r\n requestProcessing = false;\r\n\r\n constructor(\r\n private location: Location,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.wallet = this.variablesService.currentWallet;\r\n const alias = this.backend.getWalletAlias(this.wallet.address);\r\n this.alias = {\r\n name: alias.name,\r\n address: alias.address,\r\n comment: alias.comment\r\n };\r\n this.oldAliasComment = alias.comment;\r\n this.notEnoughMoney = this.wallet.unlocked_balance.isLessThan(this.variablesService.default_fee_big);\r\n }\r\n\r\n updateAlias() {\r\n if (this.requestProcessing || this.notEnoughMoney || this.oldAliasComment === this.alias.comment || this.alias.comment.length > this.variablesService.maxCommentLength) {\r\n return;\r\n }\r\n this.requestProcessing = true;\r\n this.backend.updateAlias(this.wallet.wallet_id, this.alias, this.variablesService.default_fee, (status) => {\r\n if (status) {\r\n this.modalService.prepareModal('success', '');\r\n this.wallet.alias['comment'] = this.alias.comment;\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.wallet.wallet_id]);\r\n });\r\n }\r\n this.requestProcessing = false;\r\n });\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{ 'HISTORY.STATUS' | translate }}{{ 'HISTORY.DATE' | translate }}{{ 'HISTORY.AMOUNT' | translate }}{{ 'HISTORY.FEE' | translate }}{{ 'HISTORY.ADDRESS' | translate }}
\\r\\n
\\r\\n 0\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n {{ (item.is_income ? 'HISTORY.RECEIVED' : 'HISTORY.SEND') | translate }}\\r\\n
\\r\\n
{{item.timestamp * 1000 | date : 'dd-MM-yyyy HH:mm'}}\\r\\n {{item.sortAmount | intToMoney}} {{variablesService.defaultCurrency}}\\r\\n \\r\\n {{item.sortFee | intToMoney}} {{variablesService.defaultCurrency}}\\r\\n \\r\\n {{item | historyTypeMessages}}\\r\\n {{item.remote_addresses[0]}}\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.wrap-table {\\n margin: -3rem; }\\n\\n.wrap-table table tbody tr td {\\n min-width: 10rem; }\\n\\n.wrap-table table tbody tr .status {\\n position: relative;\\n display: flex;\\n align-items: center; }\\n\\n.wrap-table table tbody tr .status .confirmation {\\n position: absolute;\\n top: 50%;\\n left: -2rem;\\n transform: translateY(-50%);\\n display: flex;\\n align-items: flex-end;\\n width: 0.7rem;\\n height: 1.5rem; }\\n\\n.wrap-table table tbody tr .status .confirmation .fill {\\n width: 100%; }\\n\\n.wrap-table table tbody tr .status .lock-transaction {\\n position: absolute;\\n top: 50%;\\n left: -2rem;\\n transform: translateY(-50%);\\n -webkit-mask: url('lock-transaction.svg') no-repeat center;\\n mask: url('lock-transaction.svg') no-repeat center;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n.wrap-table table tbody tr .status .status-transaction {\\n margin-right: 1rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.wrap-table table tbody tr .status.send .status-transaction {\\n -webkit-mask: url('send.svg') no-repeat center;\\n mask: url('send.svg') no-repeat center; }\\n\\n.wrap-table table tbody tr .status.received .status-transaction {\\n -webkit-mask: url('receive.svg') no-repeat center;\\n mask: url('receive.svg') no-repeat center; }\\n\\n.wrap-table table tbody tr .remote-address {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n max-width: 25vw; }\\n\\n.wrap-table table tbody tr:not(.transaction-details) {\\n cursor: pointer; }\\n\\n.wrap-table table tbody tr.transaction-details {\\n transition: 0.5s height linear, 0s font-size;\\n transition-delay: 0s, 0.5s;\\n height: 0; }\\n\\n.wrap-table table tbody tr.transaction-details.open {\\n height: 16.2rem; }\\n\\n.wrap-table table tbody tr.transaction-details td {\\n position: relative;\\n overflow: hidden;\\n line-height: inherit;\\n padding-top: 0;\\n padding-bottom: 0; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvaGlzdG9yeS9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxoaXN0b3J5XFxoaXN0b3J5LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBQ0UsYUFBYSxFQUFBOztBQURmO0lBVVUsZ0JBQWdCLEVBQUE7O0FBVjFCO0lBY1Usa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixtQkFBbUIsRUFBQTs7QUFoQjdCO01BbUJZLGtCQUFrQjtNQUNsQixRQUFRO01BQ1IsV0FBVztNQUNYLDJCQUEyQjtNQUMzQixhQUFhO01BQ2IscUJBQXFCO01BQ3JCLGFBQWE7TUFDYixjQUFjLEVBQUE7O0FBMUIxQjtRQTZCYyxXQUFXLEVBQUE7O0FBN0J6QjtNQWtDWSxrQkFBa0I7TUFDbEIsUUFBUTtNQUNSLFdBQVc7TUFDWCwyQkFBMkI7TUFDM0IsMERBQW1FO2NBQW5FLGtEQUFtRTtNQUNuRSxhQUFhO01BQ2IsY0FBYyxFQUFBOztBQXhDMUI7TUE0Q1ksa0JBQWtCO01BQ2xCLGFBQWE7TUFDYixjQUFjLEVBQUE7O0FBOUMxQjtNQW9EYyw4Q0FBdUQ7Y0FBdkQsc0NBQXVELEVBQUE7O0FBcERyRTtNQTJEYyxpREFBMEQ7Y0FBMUQseUNBQTBELEVBQUE7O0FBM0R4RTtJQWlFVSxnQkFBZ0I7SUFDaEIsdUJBQXVCO0lBQ3ZCLGVBQWUsRUFBQTs7QUFuRXpCO0lBdUVVLGVBQWUsRUFBQTs7QUF2RXpCO0lBNEVVLDRDQUE0QztJQUM1QywwQkFBMEI7SUFDMUIsU0FBUyxFQUFBOztBQTlFbkI7TUFpRlksZUFBZSxFQUFBOztBQWpGM0I7TUFxRlksa0JBQWtCO01BQ2xCLGdCQUFnQjtNQUNoQixvQkFBb0I7TUFDcEIsY0FBYztNQUNkLGlCQUFpQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvaGlzdG9yeS9oaXN0b3J5LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4ud3JhcC10YWJsZSB7XHJcbiAgbWFyZ2luOiAtM3JlbTtcclxuXHJcbiAgdGFibGUge1xyXG5cclxuICAgIHRib2R5IHtcclxuXHJcbiAgICAgIHRyIHtcclxuXHJcbiAgICAgICAgdGQge1xyXG4gICAgICAgICAgbWluLXdpZHRoOiAxMHJlbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zdGF0dXMge1xyXG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gICAgICAgICAgLmNvbmZpcm1hdGlvbiB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICAgIGxlZnQ6IC0ycmVtO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICAgICAgICAgICAgd2lkdGg6IDAuN3JlbTtcclxuICAgICAgICAgICAgaGVpZ2h0OiAxLjVyZW07XHJcblxyXG4gICAgICAgICAgICAuZmlsbCB7XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAubG9jay10cmFuc2FjdGlvbiB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICAgIGxlZnQ6IC0ycmVtO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvbG9jay10cmFuc2FjdGlvbi5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgICAgIHdpZHRoOiAxLjJyZW07XHJcbiAgICAgICAgICAgIGhlaWdodDogMS4ycmVtO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5zdGF0dXMtdHJhbnNhY3Rpb24ge1xyXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XHJcbiAgICAgICAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgICAgICAgIGhlaWdodDogMS43cmVtO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICYuc2VuZCAge1xyXG5cclxuICAgICAgICAgICAgLnN0YXR1cy10cmFuc2FjdGlvbiB7XHJcbiAgICAgICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9zZW5kLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICYucmVjZWl2ZWQge1xyXG5cclxuICAgICAgICAgICAgLnN0YXR1cy10cmFuc2FjdGlvbiB7XHJcbiAgICAgICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9yZWNlaXZlLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnJlbW90ZS1hZGRyZXNzIHtcclxuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgICAgICAgIG1heC13aWR0aDogMjV2dztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6bm90KC50cmFuc2FjdGlvbi1kZXRhaWxzKSB7XHJcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLnRyYW5zYWN0aW9uLWRldGFpbHMge1xyXG4gICAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiAwLjVzIGhlaWdodCBsaW5lYXIsIDBzIGZvbnQtc2l6ZTtcclxuICAgICAgICAgIHRyYW5zaXRpb246IDAuNXMgaGVpZ2h0IGxpbmVhciwgMHMgZm9udC1zaXplO1xyXG4gICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMHMsIDAuNXM7XHJcbiAgICAgICAgICBoZWlnaHQ6IDA7XHJcblxyXG4gICAgICAgICAgJi5vcGVuIHtcclxuICAgICAgICAgICAgaGVpZ2h0OiAxNi4ycmVtO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRkIHtcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcclxuICAgICAgICAgICAgcGFkZGluZy10b3A6IDA7XHJcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, OnInit, OnDestroy, AfterViewChecked, ViewChild, ElementRef} from '@angular/core';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ActivatedRoute} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-history',\r\n templateUrl: './history.component.html',\r\n styleUrls: ['./history.component.scss']\r\n})\r\nexport class HistoryComponent implements OnInit, OnDestroy, AfterViewChecked {\r\n parentRouting;\r\n openedDetails = false;\r\n calculatedWidth = [];\r\n @ViewChild('head') head: ElementRef;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n public variablesService: VariablesService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(() => {\r\n this.openedDetails = false;\r\n });\r\n }\r\n\r\n ngAfterViewChecked() {\r\n this.calculateWidth();\r\n }\r\n\r\n getHeight(item) {\r\n if ((this.variablesService.height_app - item.height >= 10 && item.height !== 0) || (item.is_mining === true && item.height === 0)) {\r\n return 100;\r\n } else {\r\n if (item.height === 0 || this.variablesService.height_app - item.height < 0) {\r\n return 0;\r\n } else {\r\n return (this.variablesService.height_app - item.height) * 10;\r\n }\r\n }\r\n }\r\n\r\n openDetails(tx_hash) {\r\n if (tx_hash === this.openedDetails) {\r\n this.openedDetails = false;\r\n } else {\r\n this.openedDetails = tx_hash;\r\n }\r\n }\r\n\r\n calculateWidth() {\r\n this.calculatedWidth = [];\r\n this.calculatedWidth.push(this.head.nativeElement.childNodes[0].clientWidth);\r\n this.calculatedWidth.push(this.head.nativeElement.childNodes[1].clientWidth + this.head.nativeElement.childNodes[2].clientWidth);\r\n this.calculatedWidth.push(this.head.nativeElement.childNodes[3].clientWidth);\r\n this.calculatedWidth.push(this.head.nativeElement.childNodes[4].clientWidth);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'LOGIN.FORM_ERRORS.MISMATCH' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n position: fixed;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%; }\\n :host .content {\\n display: flex; }\\n :host .content .wrap-login {\\n margin: auto;\\n width: 100%;\\n max-width: 40rem; }\\n :host .content .wrap-login .logo {\\n background: url('logo.svg') no-repeat center;\\n width: 100%;\\n height: 15rem; }\\n :host .content .wrap-login .form-login {\\n display: flex;\\n flex-direction: column; }\\n :host .content .wrap-login .form-login .wrap-button {\\n display: flex;\\n align-items: center;\\n justify-content: space-between; }\\n :host .content .wrap-login .form-login .wrap-button button {\\n margin: 2.5rem 0; }\\n :host .content .wrap-login .form-login button {\\n margin: 2.5rem auto;\\n width: 100%;\\n max-width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbG9naW4vRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcbG9naW5cXGxvZ2luLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZUFBZTtFQUNmLE1BQU07RUFDTixPQUFPO0VBQ1AsV0FBVztFQUNYLFlBQVksRUFBQTtFQUxkO0lBUUksYUFBYSxFQUFBO0VBUmpCO01BV00sWUFBWTtNQUNaLFdBQVc7TUFDWCxnQkFBZ0IsRUFBQTtFQWJ0QjtRQWdCUSw0Q0FBNkQ7UUFDN0QsV0FBVztRQUNYLGFBQWEsRUFBQTtFQWxCckI7UUFzQlEsYUFBYTtRQUNiLHNCQUFzQixFQUFBO0VBdkI5QjtVQTBCVSxhQUFhO1VBQ2IsbUJBQW1CO1VBQ25CLDhCQUE4QixFQUFBO0VBNUJ4QztZQStCWSxnQkFBZ0IsRUFBQTtFQS9CNUI7VUFvQ1UsbUJBQW1CO1VBQ25CLFdBQVc7VUFDWCxnQkFBZ0IsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcblxyXG4gIC5jb250ZW50IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcblxyXG4gICAgLndyYXAtbG9naW4ge1xyXG4gICAgICBtYXJnaW46IGF1dG87XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBtYXgtd2lkdGg6IDQwcmVtO1xyXG5cclxuICAgICAgLmxvZ28ge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvbG9nby5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgaGVpZ2h0OiAxNXJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmZvcm0tbG9naW4ge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHJcbiAgICAgICAgLndyYXAtYnV0dG9uIHtcclxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cclxuICAgICAgICAgIGJ1dHRvbiB7XHJcbiAgICAgICAgICAgIG1hcmdpbjogMi41cmVtIDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBidXR0b24ge1xyXG4gICAgICAgICAgbWFyZ2luOiAyLjVyZW0gYXV0bztcclxuICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgbWF4LXdpZHRoOiAxNXJlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, NgZone, OnInit, OnDestroy} from '@angular/core';\r\nimport {FormGroup, FormControl} from '@angular/forms';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.scss']\r\n})\r\nexport class LoginComponent implements OnInit, OnDestroy {\r\n\r\n queryRouting;\r\n\r\n regForm = new FormGroup({\r\n password: new FormControl(''),\r\n confirmation: new FormControl('')\r\n }, function (g: FormGroup) {\r\n return g.get('password').value === g.get('confirmation').value ? null : {'mismatch': true};\r\n });\r\n\r\n authForm = new FormGroup({\r\n password: new FormControl('')\r\n });\r\n\r\n type = 'reg';\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private backend: BackendService,\r\n public variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.queryRouting = this.route.queryParams.subscribe(params => {\r\n if (params.type) {\r\n this.type = params.type;\r\n }\r\n });\r\n }\r\n\r\n onSubmitCreatePass(): void {\r\n if (this.regForm.valid) {\r\n this.variablesService.appPass = this.regForm.get('password').value;\r\n this.backend.storeSecureAppData((status, data) => {\r\n if (status) {\r\n this.variablesService.appLogin = true;\r\n this.variablesService.startCountdown();\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n } else {\r\n console.log(data['error_code']);\r\n }\r\n });\r\n }\r\n }\r\n\r\n onSkipCreatePass(): void {\r\n this.variablesService.appPass = '';\r\n this.ngZone.run(() => {\r\n this.variablesService.appLogin = true;\r\n this.router.navigate(['/']);\r\n });\r\n }\r\n\r\n onSubmitAuthPass(): void {\r\n if (this.authForm.valid) {\r\n const appPass = this.authForm.get('password').value;\r\n this.backend.getSecureAppData({pass: appPass}, (status, data) => {\r\n if (!data.error_code) {\r\n this.variablesService.appLogin = true;\r\n this.variablesService.startCountdown();\r\n this.variablesService.appPass = appPass;\r\n if (this.variablesService.wallets.length) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.variablesService.wallets[0].wallet_id]);\r\n });\r\n return;\r\n }\r\n if (Object.keys(data).length !== 0) {\r\n let openWallets = 0;\r\n let runWallets = 0;\r\n data.forEach((wallet, wallet_index) => {\r\n this.backend.openWallet(wallet.path, wallet.pass, true, (open_status, open_data, open_error) => {\r\n if (open_status || open_error === 'FILE_RESTORED') {\r\n openWallets++;\r\n this.ngZone.run(() => {\r\n const new_wallet = new Wallet(\r\n open_data.wallet_id,\r\n wallet.name,\r\n wallet.pass,\r\n open_data['wi'].path,\r\n open_data['wi'].address,\r\n open_data['wi'].balance,\r\n open_data['wi'].unlocked_balance,\r\n open_data['wi'].mined_total,\r\n open_data['wi'].tracking_hey\r\n );\r\n new_wallet.alias = this.backend.getWalletAlias(new_wallet.address);\r\n if (wallet.staking) {\r\n new_wallet.staking = true;\r\n this.backend.startPosMining(new_wallet.wallet_id);\r\n } else {\r\n new_wallet.staking = false;\r\n }\r\n if (open_data.recent_history && open_data.recent_history.history) {\r\n new_wallet.prepareHistory(open_data.recent_history.history);\r\n }\r\n this.backend.getContracts(open_data.wallet_id, (contracts_status, contracts_data) => {\r\n if (contracts_status && contracts_data.hasOwnProperty('contracts')) {\r\n this.ngZone.run(() => {\r\n new_wallet.prepareContractsAfterOpen(contracts_data.contracts, this.variablesService.exp_med_ts, this.variablesService.height_app, this.variablesService.settings.viewedContracts, this.variablesService.settings.notViewedContracts);\r\n });\r\n }\r\n });\r\n this.variablesService.wallets.push(new_wallet);\r\n if (this.variablesService.wallets.length === 1) {\r\n this.router.navigate(['/wallet/' + this.variablesService.wallets[0].wallet_id]);\r\n }\r\n });\r\n this.backend.runWallet(open_data.wallet_id, (run_status) => {\r\n if (run_status) {\r\n runWallets++;\r\n } else {\r\n if (wallet_index === data.length - 1 && runWallets === 0) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n }\r\n }\r\n });\r\n } else {\r\n if (wallet_index === data.length - 1 && openWallets === 0) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n }\r\n }\r\n });\r\n });\r\n } else {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.queryRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
0\\\">\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n

{{ 'MAIN.TITLE' | translate }}

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'MAIN.HELP' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n flex: 1 0 auto;\\n padding: 3rem; }\\n\\n.content {\\n padding: 3rem;\\n min-height: 100%; }\\n\\n.content .head {\\n justify-content: flex-end; }\\n\\n.add-wallet .add-wallet-title {\\n margin-bottom: 1rem; }\\n\\n.add-wallet .add-wallet-buttons {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n margin: 0 -0.5rem;\\n padding: 1.5rem 0; }\\n\\n.add-wallet .add-wallet-buttons button {\\n flex: 1 0 auto;\\n margin: 0 0.5rem; }\\n\\n.add-wallet .add-wallet-help {\\n display: flex;\\n cursor: pointer;\\n font-size: 1.3rem;\\n line-height: 1.4rem; }\\n\\n.add-wallet .add-wallet-help .icon {\\n -webkit-mask: url('howto.svg') no-repeat center;\\n mask: url('howto.svg') no-repeat center;\\n margin-right: 0.8rem;\\n width: 1.4rem;\\n height: 1.4rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbWFpbi9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxtYWluXFxtYWluLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsY0FBYztFQUNkLGFBQWEsRUFBQTs7QUFHZjtFQUNFLGFBQWE7RUFDYixnQkFBZ0IsRUFBQTs7QUFGbEI7SUFLSSx5QkFBeUIsRUFBQTs7QUFJN0I7RUFHSSxtQkFBbUIsRUFBQTs7QUFIdkI7RUFPSSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLDhCQUE4QjtFQUM5QixpQkFBaUI7RUFDakIsaUJBQWlCLEVBQUE7O0FBWHJCO0lBY00sY0FBYztJQUNkLGdCQUFnQixFQUFBOztBQWZ0QjtFQW9CSSxhQUFhO0VBQ2IsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixtQkFBbUIsRUFBQTs7QUF2QnZCO0lBMEJNLCtDQUF3RDtZQUF4RCx1Q0FBd0Q7SUFDeEQsb0JBQW9CO0lBQ3BCLGFBQWE7SUFDYixjQUFjLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9tYWluL21haW4uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZmxleDogMSAwIGF1dG87XHJcbiAgcGFkZGluZzogM3JlbTtcclxufVxyXG5cclxuLmNvbnRlbnQge1xyXG4gIHBhZGRpbmc6IDNyZW07XHJcbiAgbWluLWhlaWdodDogMTAwJTtcclxuXHJcbiAgLmhlYWQge1xyXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcclxuICB9XHJcbn1cclxuXHJcbi5hZGQtd2FsbGV0IHtcclxuXHJcbiAgLmFkZC13YWxsZXQtdGl0bGUge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICB9XHJcblxyXG4gIC5hZGQtd2FsbGV0LWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBtYXJnaW46IDAgLTAuNXJlbTtcclxuICAgIHBhZGRpbmc6IDEuNXJlbSAwO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIGZsZXg6IDEgMCBhdXRvO1xyXG4gICAgICBtYXJnaW46IDAgMC41cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmFkZC13YWxsZXQtaGVscCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS40cmVtO1xyXG5cclxuICAgIC5pY29uIHtcclxuICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9ob3d0by5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMC44cmVtO1xyXG4gICAgICB3aWR0aDogMS40cmVtO1xyXG4gICAgICBoZWlnaHQ6IDEuNHJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {Location} from '@angular/common';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {Router} from '@angular/router';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-main',\r\n templateUrl: './main.component.html',\r\n styleUrls: ['./main.component.scss']\r\n})\r\nexport class MainComponent implements OnInit {\r\n\r\n constructor(\r\n private router: Router,\r\n private location: Location,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n openWallet() {\r\n this.backend.openFileDialog(this.translate.instant('MAIN.CHOOSE_PATH'), '*', this.variablesService.settings.default_path, (file_status, file_data) => {\r\n if (file_status) {\r\n this.variablesService.settings.default_path = file_data.path.substr(0, file_data.path.lastIndexOf('/'));\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/open'], {queryParams: {path: file_data.path}});\r\n });\r\n } else {\r\n console.log(file_data['error_code']);\r\n }\r\n });\r\n }\r\n\r\n openInBrowser() {\r\n this.backend.openUrlInBrowser('docs.zano.org/docs/getting-started-1#section-create-new-wallet');\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{ 'MESSAGES.ADDRESS' | translate }}{{ 'MESSAGES.MESSAGE' | translate }}
\\r\\n {{message.address}}\\r\\n \\r\\n \\r\\n {{message.message}}\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.wrap-table {\\n margin: -3rem; }\\n\\n.wrap-table table tbody tr td:first-child {\\n position: relative;\\n padding-right: 5rem;\\n width: 18rem; }\\n\\n.wrap-table table tbody tr td:first-child span {\\n display: block;\\n line-height: 3.5rem;\\n max-width: 10rem; }\\n\\n.wrap-table table tbody tr td:first-child .icon {\\n position: absolute;\\n top: 50%;\\n right: 1rem;\\n transform: translateY(-50%);\\n display: block;\\n -webkit-mask: url('alert.svg') no-repeat 0;\\n mask: url('alert.svg') no-repeat 0;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbWVzc2FnZXMvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcbWVzc2FnZXNcXG1lc3NhZ2VzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBQ0UsYUFBYSxFQUFBOztBQURmO0lBWVksa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixZQUFZLEVBQUE7O0FBZHhCO01BaUJjLGNBQWM7TUFDZCxtQkFBbUI7TUFDbkIsZ0JBQWdCLEVBQUE7O0FBbkI5QjtNQXVCYyxrQkFBa0I7TUFDbEIsUUFBUTtNQUNSLFdBQVc7TUFDWCwyQkFBMkI7TUFDM0IsY0FBYztNQUNkLDBDQUFtRDtjQUFuRCxrQ0FBbUQ7TUFDbkQsYUFBYTtNQUNiLGNBQWMsRUFBQSIsImZpbGUiOiJzcmMvYXBwL21lc3NhZ2VzL21lc3NhZ2VzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4ud3JhcC10YWJsZSB7XHJcbiAgbWFyZ2luOiAtM3JlbTtcclxuXHJcbiAgdGFibGUge1xyXG5cclxuICAgIHRib2R5IHtcclxuXHJcbiAgICAgIHRyIHtcclxuXHJcbiAgICAgICAgdGQge1xyXG5cclxuICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDVyZW07XHJcbiAgICAgICAgICAgIHdpZHRoOiAxOHJlbTtcclxuXHJcbiAgICAgICAgICAgIHNwYW4ge1xyXG4gICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzLjVyZW07XHJcbiAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMHJlbTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLmljb24ge1xyXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICAgICAgICByaWdodDogMXJlbTtcclxuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9hbGVydC5zdmcpIG5vLXJlcGVhdCAwO1xyXG4gICAgICAgICAgICAgIHdpZHRoOiAxLjJyZW07XHJcbiAgICAgICAgICAgICAgaGVpZ2h0OiAxLjJyZW07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-messages',\r\n templateUrl: './messages.component.html',\r\n styleUrls: ['./messages.component.scss']\r\n})\r\nexport class MessagesComponent implements OnInit {\r\n\r\n messages = [\r\n {\r\n is_new: true,\r\n address: '@bitmap',\r\n message: 'No more miners for you!'\r\n },\r\n {\r\n is_new: false,\r\n address: 'Hjkwey36gHasdhkajshd4bxnb5mcvowyefb2633FdsFGGWbb',\r\n message: 'Hey! What’s with our BBR deal?'\r\n },\r\n {\r\n is_new: false,\r\n address: '@john',\r\n message: 'I’m coming!'\r\n }\r\n ];\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n\r\n}\r\n","module.exports = \"
\\r\\n

{{ 'OPEN_WALLET.MODAL.TITLE' | translate }}

\\r\\n
\\r\\n
{{ wallet.name }}
\\r\\n
{{ wallet.path }}
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'OPEN_WALLET.MODAL.NOT_FOUND' | translate }}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n position: fixed;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: rgba(255, 255, 255, 0.25); }\\n\\n.modal {\\n display: flex;\\n flex-direction: column;\\n background-position: center;\\n background-size: 200%;\\n padding: 2rem;\\n width: 34rem; }\\n\\n.modal .title {\\n font-size: 1.8rem;\\n text-align: center; }\\n\\n.modal .open-form .wallet-path {\\n font-size: 1.3rem;\\n margin: 5rem 0 2rem; }\\n\\n.modal .open-form .wrap-button {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n margin: 2rem -2rem 0; }\\n\\n.modal .open-form .wrap-button button {\\n flex: 1 0 0;\\n margin: 0 2rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3Blbi13YWxsZXQtbW9kYWwvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcb3Blbi13YWxsZXQtbW9kYWxcXG9wZW4td2FsbGV0LW1vZGFsLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZUFBZTtFQUNmLE1BQU07RUFDTixTQUFTO0VBQ1QsT0FBTztFQUNQLFFBQVE7RUFDUixhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLHVCQUF1QjtFQUN2QixxQ0FBcUMsRUFBQTs7QUFHdkM7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLDJCQUEyQjtFQUMzQixxQkFBcUI7RUFDckIsYUFBYTtFQUNiLFlBQVksRUFBQTs7QUFOZDtJQVNJLGlCQUFpQjtJQUNqQixrQkFBa0IsRUFBQTs7QUFWdEI7SUFnQk0saUJBQWlCO0lBQ2pCLG1CQUFtQixFQUFBOztBQWpCekI7SUFxQk0sYUFBYTtJQUNiLG1CQUFtQjtJQUNuQiw4QkFBOEI7SUFDOUIsb0JBQW9CLEVBQUE7O0FBeEIxQjtNQTJCUSxXQUFXO01BQ1gsY0FBZSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvb3Blbi13YWxsZXQtbW9kYWwvb3Blbi13YWxsZXQtbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHRvcDogMDtcclxuICBib3R0b206IDA7XHJcbiAgbGVmdDogMDtcclxuICByaWdodDogMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTtcclxufVxyXG5cclxuLm1vZGFsIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xyXG4gIGJhY2tncm91bmQtc2l6ZTogMjAwJTtcclxuICBwYWRkaW5nOiAycmVtO1xyXG4gIHdpZHRoOiAzNHJlbTtcclxuXHJcbiAgLnRpdGxlIHtcclxuICAgIGZvbnQtc2l6ZTogMS44cmVtO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIH1cclxuXHJcbiAgLm9wZW4tZm9ybSB7XHJcblxyXG4gICAgLndhbGxldC1wYXRoIHtcclxuICAgICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICAgIG1hcmdpbjogNXJlbSAwIDJyZW07XHJcbiAgICB9XHJcblxyXG4gICAgLndyYXAtYnV0dG9uIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICBtYXJnaW46IDJyZW0gLTJyZW0gMDtcclxuXHJcbiAgICAgIGJ1dHRvbiB7XHJcbiAgICAgICAgZmxleDogMSAwIDA7XHJcbiAgICAgICAgbWFyZ2luOiAwIDJyZW0gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, OnInit, Input, NgZone} from '@angular/core';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\n\r\n@Component({\r\n selector: 'app-open-wallet-modal',\r\n templateUrl: './open-wallet-modal.component.html',\r\n styleUrls: ['./open-wallet-modal.component.scss']\r\n})\r\nexport class OpenWalletModalComponent implements OnInit {\r\n\r\n @Input() wallets;\r\n\r\n wallet = {\r\n name: '',\r\n path: '',\r\n pass: '',\r\n notFound: false,\r\n emptyPass: false\r\n };\r\n\r\n constructor(\r\n public variablesService: VariablesService,\r\n private backend: BackendService,\r\n private translate: TranslateService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n if (this.wallets.length) {\r\n this.wallet = this.wallets[0];\r\n this.wallet.pass = '';\r\n\r\n this.backend.openWallet(this.wallet.path, '', true, (status, data, error) => {\r\n if (error === 'FILE_NOT_FOUND') {\r\n this.wallet.notFound = true;\r\n }\r\n if (status) {\r\n this.wallet.pass = '';\r\n this.wallet.emptyPass = true;\r\n this.backend.closeWallet(data.wallet_id);\r\n this.openWallet();\r\n }\r\n });\r\n }\r\n }\r\n\r\n openWallet() {\r\n if (this.wallets.length === 0) {\r\n return;\r\n }\r\n this.backend.openWallet(this.wallet.path, this.wallet.pass, false, (open_status, open_data, open_error) => {\r\n if (open_error && open_error === 'FILE_NOT_FOUND') {\r\n let error_translate = this.translate.instant('OPEN_WALLET.FILE_NOT_FOUND1');\r\n error_translate += ':
' + this.wallet.path;\r\n error_translate += this.translate.instant('OPEN_WALLET.FILE_NOT_FOUND2');\r\n this.modalService.prepareModal('error', error_translate);\r\n } else {\r\n if (open_status || open_error === 'FILE_RESTORED') {\r\n\r\n let exists = false;\r\n this.variablesService.wallets.forEach((wallet) => {\r\n if (wallet.address === open_data['wi'].address) {\r\n exists = true;\r\n }\r\n });\r\n\r\n if (exists) {\r\n this.modalService.prepareModal('error', 'OPEN_WALLET.WITH_ADDRESS_ALREADY_OPEN');\r\n this.backend.closeWallet(open_data.wallet_id);\r\n } else {\r\n const new_wallet = new Wallet(\r\n open_data.wallet_id,\r\n this.wallet.name,\r\n this.wallet.pass,\r\n open_data['wi'].path,\r\n open_data['wi'].address,\r\n open_data['wi'].balance,\r\n open_data['wi'].unlocked_balance,\r\n open_data['wi'].mined_total,\r\n open_data['wi'].tracking_hey\r\n );\r\n new_wallet.alias = this.backend.getWalletAlias(new_wallet.address);\r\n if (open_data.recent_history && open_data.recent_history.history) {\r\n new_wallet.prepareHistory(open_data.recent_history.history);\r\n }\r\n this.backend.getContracts(open_data.wallet_id, (contracts_status, contracts_data) => {\r\n if (contracts_status && contracts_data.hasOwnProperty('contracts')) {\r\n this.ngZone.run(() => {\r\n new_wallet.prepareContractsAfterOpen(\r\n contracts_data.contracts,\r\n this.variablesService.exp_med_ts,\r\n this.variablesService.height_app,\r\n this.variablesService.settings.viewedContracts,\r\n this.variablesService.settings.notViewedContracts\r\n );\r\n });\r\n }\r\n });\r\n this.variablesService.wallets.push(new_wallet);\r\n this.backend.runWallet(open_data.wallet_id);\r\n this.skipWallet();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n skipWallet() {\r\n if (this.wallets.length) {\r\n this.wallets.splice(0, 1);\r\n this.ngOnInit();\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\\r\\n {{ 'BREADCRUMBS.OPEN_WALLET' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'OPEN_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'OPEN_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\\r\\n
\\r\\n
\\r\\n
= variablesService.maxWalletNameLength\\\">\\r\\n {{ 'OPEN_WALLET.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\"","module.exports = \".form-open {\\n margin: 2.4rem 0;\\n width: 50%; }\\n .form-open .wrap-buttons {\\n display: flex;\\n margin: 2.5rem -0.7rem; }\\n .form-open .wrap-buttons button {\\n margin: 0 0.7rem; }\\n .form-open .wrap-buttons button.create-button {\\n flex: 1 1 50%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3Blbi13YWxsZXQvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcb3Blbi13YWxsZXRcXG9wZW4td2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTtFQUZaO0lBS0ksYUFBYTtJQUNiLHNCQUFzQixFQUFBO0VBTjFCO01BU00sZ0JBQWdCLEVBQUE7RUFUdEI7UUFZUSxhQUFhLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9vcGVuLXdhbGxldC9vcGVuLXdhbGxldC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLW9wZW4ge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBtYXJnaW46IDAgMC43cmVtO1xyXG5cclxuICAgICAgJi5jcmVhdGUtYnV0dG9uIHtcclxuICAgICAgICBmbGV4OiAxIDEgNTAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnDestroy, OnInit} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-open-wallet',\r\n templateUrl: './open-wallet.component.html',\r\n styleUrls: ['./open-wallet.component.scss']\r\n})\r\nexport class OpenWalletComponent implements OnInit, OnDestroy {\r\n\r\n queryRouting;\r\n filePath: string;\r\n\r\n openForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, (g: FormControl) => {\r\n for (let i = 0; i < this.variablesService.wallets.length; i++) {\r\n if (g.value === this.variablesService.wallets[i].name) {\r\n return {'duplicate': true};\r\n }\r\n }\r\n return null;\r\n }]),\r\n password: new FormControl('')\r\n });\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.queryRouting = this.route.queryParams.subscribe(params => {\r\n if (params.path) {\r\n this.filePath = params.path;\r\n let filename = '';\r\n if (params.path.lastIndexOf('.') === -1) {\r\n filename = params.path.substr(params.path.lastIndexOf('/') + 1);\r\n } else {\r\n filename = params.path.substr(params.path.lastIndexOf('/') + 1, params.path.lastIndexOf('.') - 1 - params.path.lastIndexOf('/'));\r\n }\r\n if (filename.length > 25) {\r\n filename = filename.slice(0, 25);\r\n }\r\n this.openForm.get('name').setValue(filename);\r\n this.openForm.get('name').markAsTouched();\r\n }\r\n });\r\n }\r\n\r\n openWallet() {\r\n if (this.openForm.valid && this.openForm.get('name').value.length <= this.variablesService.maxWalletNameLength) {\r\n this.backend.openWallet(this.filePath, this.openForm.get('password').value, false, (open_status, open_data, open_error) => {\r\n if (open_error && open_error === 'FILE_NOT_FOUND') {\r\n let error_translate = this.translate.instant('OPEN_WALLET.FILE_NOT_FOUND1');\r\n error_translate += ':
' + this.filePath;\r\n error_translate += this.translate.instant('OPEN_WALLET.FILE_NOT_FOUND2');\r\n this.modalService.prepareModal('error', error_translate);\r\n } else {\r\n if (open_status || open_error === 'FILE_RESTORED') {\r\n\r\n let exists = false;\r\n this.variablesService.wallets.forEach((wallet) => {\r\n if (wallet.address === open_data['wi'].address) {\r\n exists = true;\r\n }\r\n });\r\n\r\n if (exists) {\r\n this.modalService.prepareModal('error', 'OPEN_WALLET.WITH_ADDRESS_ALREADY_OPEN');\r\n this.backend.closeWallet(open_data.wallet_id, () => {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n });\r\n } else {\r\n const new_wallet = new Wallet(\r\n open_data.wallet_id,\r\n this.openForm.get('name').value,\r\n this.openForm.get('password').value,\r\n open_data['wi'].path,\r\n open_data['wi'].address,\r\n open_data['wi'].balance,\r\n open_data['wi'].unlocked_balance,\r\n open_data['wi'].mined_total,\r\n open_data['wi'].tracking_hey\r\n );\r\n new_wallet.alias = this.backend.getWalletAlias(new_wallet.address);\r\n if (open_data.recent_history && open_data.recent_history.history) {\r\n new_wallet.prepareHistory(open_data.recent_history.history);\r\n }\r\n this.backend.getContracts(open_data.wallet_id, (contracts_status, contracts_data) => {\r\n if (contracts_status && contracts_data.hasOwnProperty('contracts')) {\r\n this.ngZone.run(() => {\r\n new_wallet.prepareContractsAfterOpen(contracts_data.contracts, this.variablesService.exp_med_ts, this.variablesService.height_app, this.variablesService.settings.viewedContracts, this.variablesService.settings.notViewedContracts);\r\n });\r\n }\r\n });\r\n this.variablesService.wallets.push(new_wallet);\r\n this.backend.runWallet(open_data.wallet_id, (run_status, run_data) => {\r\n if (run_status) {\r\n if (this.variablesService.appPass) {\r\n this.backend.storeSecureAppData();\r\n }\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + open_data.wallet_id]);\r\n });\r\n } else {\r\n console.log(run_data['error_code']);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.queryRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n {{ 'BREADCRUMBS.CONTRACTS' | translate }}\\r\\n {{ 'BREADCRUMBS.NEW_PURCHASE' | translate }}\\r\\n {{ 'BREADCRUMBS.OLD_PURCHASE' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.DESC_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
= 100\\\">\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.COMMENT_MAXIMUM' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
{{item.name}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.SELLER_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.SELLER_NOT_VALID' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.SELLER_SAME' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.ALIAS_NOT_VALID' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.AMOUNT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.AMOUNT_ZERO' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.YOUR_DEPOSIT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.SELLER_DEPOSIT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
= 100\\\">\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.COMMENT_MAXIMUM' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n 1 {{ 'PURCHASE.HOUR' | translate }}\\r\\n \\r\\n {{title}} {{ 'PURCHASE.HOURS' | translate }}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n {{ 'PURCHASE.NEED_MONEY' | translate }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
{{'PURCHASE.NULLIFY_QUESTION' | translate}}
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
{{ 'PURCHASE.WAITING_TIME_QUESTION' | translate }}
\\r\\n \\r\\n
\\r\\n \\r\\n 1 {{ 'PURCHASE.HOUR' | translate }}\\r\\n \\r\\n {{title}} {{ 'PURCHASE.HOURS' | translate }}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.NEW_PURCHASE' | translate }}\\r\\n \\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.WAITING_SELLER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.IGNORED_SELLER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.WAITING_DELIVERY' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.IGNORED_CANCEL_SELLER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.EXPIRED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.WAITING_SELLER' | translate }}\\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.WAITING_CONFIRMATION' | translate }}\\r\\n (0/10)\\r\\n ({{variablesService.height_app - currentContract.height}}/10)\\r\\n \\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.COMPLETED' | translate }}\\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.NOT_RECEIVED' | translate }}. {{ 'PURCHASE.STATUS_MESSAGES.NULLIFIED' | translate }}\\r\\n \\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.PROPOSAL_CANCEL_SELLER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.CANCELLED' | translate }}\\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.BEING_CANCELLED' | translate }}\\r\\n (0/10)\\r\\n ({{variablesService.height_app - currentContract.height}}/10)\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.WAITING_BUYER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.IGNORED_BUYER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.IGNORED_CANCEL_BUYER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.EXPIRED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.WAITING_DELIVERY' | translate }}\\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.WAITING_CONFIRMATION' | translate }}\\r\\n (0/10)\\r\\n ({{variablesService.height_app - currentContract.height}}/10)\\r\\n \\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.COMPLETED' | translate }}\\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.NOT_RECEIVED' | translate }}. {{ 'PURCHASE.STATUS_MESSAGES.NULLIFIED' | translate }}\\r\\n \\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.PROPOSAL_CANCEL_BUYER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.CANCELLED' | translate }}\\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.BEING_CANCELLED' | translate }}\\r\\n (0/10)\\r\\n ({{variablesService.height_app - currentContract.height}}/10)\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n {{currentContract.expiration_time | contractTimeLeft: 0}}\\r\\n {{currentContract.cancel_expiration_time | contractTimeLeft: 2}}\\r\\n {{currentContract.expiration_time | contractTimeLeft: 1}}\\r\\n {{currentContract.cancel_expiration_time | contractTimeLeft: 1}}\\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n width: 100%; }\\n\\n.head {\\n flex: 0 0 auto;\\n box-sizing: content-box;\\n margin: -3rem -3rem 0; }\\n\\n.form-purchase {\\n flex: 1 1 auto;\\n margin: 1.5rem -3rem 0;\\n padding: 0 3rem;\\n overflow-y: overlay; }\\n\\n.form-purchase .input-blocks-row {\\n display: flex; }\\n\\n.form-purchase .input-blocks-row .input-block {\\n flex-basis: 50%; }\\n\\n.form-purchase .input-blocks-row .input-block:first-child {\\n margin-right: 1.5rem; }\\n\\n.form-purchase .input-blocks-row .input-block:last-child {\\n margin-left: 1.5rem; }\\n\\n.form-purchase .input-blocks-row .input-block .checkbox-block {\\n display: flex; }\\n\\n.form-purchase .purchase-select {\\n display: flex;\\n align-items: center;\\n background: transparent;\\n border: none;\\n font-size: 1.3rem;\\n line-height: 1.3rem;\\n margin: 1.5rem 0 0;\\n padding: 0;\\n width: 100%;\\n max-width: 15rem;\\n height: 1.3rem; }\\n\\n.form-purchase .purchase-select .arrow {\\n margin-left: 1rem;\\n width: 0.8rem;\\n height: 0.8rem; }\\n\\n.form-purchase .purchase-select .arrow.down {\\n -webkit-mask: url('arrow-down.svg') no-repeat center;\\n mask: url('arrow-down.svg') no-repeat center; }\\n\\n.form-purchase .purchase-select .arrow.up {\\n -webkit-mask: url('arrow-up.svg') no-repeat center;\\n mask: url('arrow-up.svg') no-repeat center; }\\n\\n.form-purchase .additional-details {\\n display: flex;\\n margin-top: 1.5rem;\\n padding: 0.5rem 0 2rem; }\\n\\n.form-purchase .additional-details > div {\\n flex-basis: 25%; }\\n\\n.form-purchase .additional-details > div:first-child {\\n padding-left: 1.5rem;\\n padding-right: 1rem; }\\n\\n.form-purchase .additional-details > div:last-child {\\n padding-left: 1rem;\\n padding-right: 1.5rem; }\\n\\n.form-purchase .purchase-states {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n font-size: 1.2rem;\\n line-height: 2.9rem; }\\n\\n.form-purchase .send-button {\\n margin: 2.4rem 0;\\n width: 100%;\\n max-width: 15rem; }\\n\\n.form-purchase .purchase-buttons {\\n display: flex;\\n justify-content: flex-start;\\n margin: 2.4rem -0.5rem; }\\n\\n.form-purchase .purchase-buttons button {\\n flex: 0 1 33%;\\n margin: 0 0.5rem; }\\n\\n.form-purchase .nullify-block-row {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center; }\\n\\n.form-purchase .nullify-block-row .nullify-block-buttons {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n margin: 1rem 0;\\n width: 100%; }\\n\\n.form-purchase .nullify-block-row .nullify-block-buttons button {\\n flex: 0 1 25%;\\n margin: 0 0.5rem; }\\n\\n.form-purchase .time-cancel-block-row {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center; }\\n\\n.form-purchase .time-cancel-block-row .time-cancel-block-question {\\n margin-bottom: 1rem; }\\n\\n.form-purchase .time-cancel-block-row .input-block {\\n width: 25%; }\\n\\n.form-purchase .time-cancel-block-row label {\\n margin-bottom: 1rem; }\\n\\n.form-purchase .time-cancel-block-row .time-cancel-block-buttons {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n margin: 1rem 0;\\n width: 100%; }\\n\\n.form-purchase .time-cancel-block-row .time-cancel-block-buttons button {\\n flex: 0 1 25%;\\n margin: 0 0.5rem; }\\n\\n.progress-bar-container {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n padding: 0 3rem;\\n width: 100%;\\n height: 3rem; }\\n\\n.progress-bar-container .progress-bar {\\n position: absolute;\\n top: -0.7rem;\\n left: 0;\\n margin: 0 3rem;\\n width: calc(100% - 6rem);\\n height: 0.7rem; }\\n\\n.progress-bar-container .progress-bar .progress-bar-full {\\n height: 0.7rem; }\\n\\n.progress-bar-container .progress-labels {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n font-size: 1.2rem;\\n height: 100%; }\\n\\n.progress-bar-container .progress-time {\\n position: absolute;\\n top: -3rem;\\n left: 50%;\\n transform: translateX(-50%);\\n font-size: 1.2rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHVyY2hhc2UvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxccHVyY2hhc2VcXHB1cmNoYXNlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxjQUFjO0VBQ2QsdUJBQXVCO0VBQ3ZCLHFCQUFxQixFQUFBOztBQUd2QjtFQUNFLGNBQWM7RUFDZCxzQkFBc0I7RUFDdEIsZUFBZTtFQUNmLG1CQUFtQixFQUFBOztBQUpyQjtJQU9JLGFBQWEsRUFBQTs7QUFQakI7TUFVTSxlQUFlLEVBQUE7O0FBVnJCO1FBYVEsb0JBQW9CLEVBQUE7O0FBYjVCO1FBaUJRLG1CQUFtQixFQUFBOztBQWpCM0I7UUFxQlEsYUFBYSxFQUFBOztBQXJCckI7SUEyQkksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGNBQWMsRUFBQTs7QUFyQ2xCO01Bd0NNLGlCQUFpQjtNQUNqQixhQUFhO01BQ2IsY0FBYyxFQUFBOztBQTFDcEI7UUE2Q1Esb0RBQTREO2dCQUE1RCw0Q0FBNEQsRUFBQTs7QUE3Q3BFO1FBaURRLGtEQUEwRDtnQkFBMUQsMENBQTBELEVBQUE7O0FBakRsRTtJQXVESSxhQUFhO0lBQ2Isa0JBQWtCO0lBQ2xCLHNCQUFzQixFQUFBOztBQXpEMUI7TUE0RE0sZUFBZSxFQUFBOztBQTVEckI7UUErRFEsb0JBQW9CO1FBQ3BCLG1CQUFtQixFQUFBOztBQWhFM0I7UUFvRVEsa0JBQWtCO1FBQ2xCLHFCQUFxQixFQUFBOztBQXJFN0I7SUEyRUksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLGlCQUFpQjtJQUNqQixtQkFBbUIsRUFBQTs7QUFoRnZCO0lBb0ZJLGdCQUFnQjtJQUNoQixXQUFXO0lBQ1gsZ0JBQWdCLEVBQUE7O0FBdEZwQjtJQTBGSSxhQUFhO0lBQ2IsMkJBQTJCO0lBQzNCLHNCQUFzQixFQUFBOztBQTVGMUI7TUErRk0sYUFBYTtNQUNiLGdCQUFnQixFQUFBOztBQWhHdEI7SUFxR0ksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsdUJBQXVCLEVBQUE7O0FBeEczQjtNQTJHTSxhQUFhO01BQ2IsbUJBQW1CO01BQ25CLHVCQUF1QjtNQUN2QixjQUFjO01BQ2QsV0FBVyxFQUFBOztBQS9HakI7UUFrSFEsYUFBYTtRQUNiLGdCQUFnQixFQUFBOztBQW5IeEI7SUF5SEksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsdUJBQXVCLEVBQUE7O0FBNUgzQjtNQStITSxtQkFBbUIsRUFBQTs7QUEvSHpCO01BbUlNLFVBQVUsRUFBQTs7QUFuSWhCO01BdUlNLG1CQUFtQixFQUFBOztBQXZJekI7TUEySU0sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsY0FBYztNQUNkLFdBQVcsRUFBQTs7QUEvSWpCO1FBa0pRLGFBQWE7UUFDYixnQkFBZ0IsRUFBQTs7QUFPeEI7RUFDRSxrQkFBa0I7RUFDbEIsU0FBUztFQUNULE9BQU87RUFDUCxlQUFlO0VBQ2YsV0FBVztFQUNYLFlBQVksRUFBQTs7QUFOZDtJQVNJLGtCQUFrQjtJQUNsQixZQUFZO0lBQ1osT0FBTztJQUNQLGNBQWM7SUFDZCx3QkFBd0I7SUFDeEIsY0FBYyxFQUFBOztBQWRsQjtNQWlCTSxjQUFjLEVBQUE7O0FBakJwQjtJQXNCSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixpQkFBaUI7SUFDakIsWUFBWSxFQUFBOztBQTFCaEI7SUE4Qkksa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixTQUFTO0lBQ1QsMkJBQTJCO0lBQzNCLGlCQUFpQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvcHVyY2hhc2UvcHVyY2hhc2UuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uaGVhZCB7XHJcbiAgZmxleDogMCAwIGF1dG87XHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XHJcbiAgbWFyZ2luOiAtM3JlbSAtM3JlbSAwO1xyXG59XHJcblxyXG4uZm9ybS1wdXJjaGFzZSB7XHJcbiAgZmxleDogMSAxIGF1dG87XHJcbiAgbWFyZ2luOiAxLjVyZW0gLTNyZW0gMDtcclxuICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgb3ZlcmZsb3cteTogb3ZlcmxheTtcclxuXHJcbiAgLmlucHV0LWJsb2Nrcy1yb3cge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuXHJcbiAgICAuaW5wdXQtYmxvY2sge1xyXG4gICAgICBmbGV4LWJhc2lzOiA1MCU7XHJcblxyXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMS41cmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuY2hlY2tib3gtYmxvY2sge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wdXJjaGFzZS1zZWxlY3Qge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuM3JlbTtcclxuICAgIG1hcmdpbjogMS41cmVtIDAgMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgICBoZWlnaHQ6IDEuM3JlbTtcclxuXHJcbiAgICAuYXJyb3cge1xyXG4gICAgICBtYXJnaW4tbGVmdDogMXJlbTtcclxuICAgICAgd2lkdGg6IDAuOHJlbTtcclxuICAgICAgaGVpZ2h0OiAwLjhyZW07XHJcblxyXG4gICAgICAmLmRvd24ge1xyXG4gICAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9hcnJvdy1kb3duLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi51cCB7XHJcbiAgICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2Fycm93LXVwLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmFkZGl0aW9uYWwtZGV0YWlscyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luLXRvcDogMS41cmVtO1xyXG4gICAgcGFkZGluZzogMC41cmVtIDAgMnJlbTtcclxuXHJcbiAgICA+IGRpdiB7XHJcbiAgICAgIGZsZXgtYmFzaXM6IDI1JTtcclxuXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnB1cmNoYXNlLXN0YXRlcyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuOXJlbTtcclxuICB9XHJcblxyXG4gIC5zZW5kLWJ1dHRvbiB7XHJcbiAgICBtYXJnaW46IDIuNHJlbSAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gIH1cclxuXHJcbiAgLnB1cmNoYXNlLWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgIG1hcmdpbjogMi40cmVtIC0wLjVyZW07XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgZmxleDogMCAxIDMzJTtcclxuICAgICAgbWFyZ2luOiAwIDAuNXJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5udWxsaWZ5LWJsb2NrLXJvdyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHJcbiAgICAubnVsbGlmeS1ibG9jay1idXR0b25zIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIG1hcmdpbjogMXJlbSAwO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgIGJ1dHRvbiB7XHJcbiAgICAgICAgZmxleDogMCAxIDI1JTtcclxuICAgICAgICBtYXJnaW46IDAgMC41cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudGltZS1jYW5jZWwtYmxvY2stcm93IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cclxuICAgIC50aW1lLWNhbmNlbC1ibG9jay1xdWVzdGlvbiB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgICB9XHJcblxyXG4gICAgLmlucHV0LWJsb2NrIHtcclxuICAgICAgd2lkdGg6IDI1JTtcclxuICAgIH1cclxuXHJcbiAgICBsYWJlbCB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtY2FuY2VsLWJsb2NrLWJ1dHRvbnMge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgbWFyZ2luOiAxcmVtIDA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgICAgYnV0dG9uIHtcclxuICAgICAgICBmbGV4OiAwIDEgMjUlO1xyXG4gICAgICAgIG1hcmdpbjogMCAwLjVyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4ucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIGJvdHRvbTogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHBhZGRpbmc6IDAgM3JlbTtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDNyZW07XHJcblxyXG4gIC5wcm9ncmVzcy1iYXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAtMC43cmVtO1xyXG4gICAgbGVmdDogMDtcclxuICAgIG1hcmdpbjogMCAzcmVtO1xyXG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDZyZW0pO1xyXG4gICAgaGVpZ2h0OiAwLjdyZW07XHJcblxyXG4gICAgLnByb2dyZXNzLWJhci1mdWxsIHtcclxuICAgICAgaGVpZ2h0OiAwLjdyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAucHJvZ3Jlc3MtbGFiZWxzIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBmb250LXNpemU6IDEuMnJlbTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy10aW1lIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogLTNyZW07XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICBmb250LXNpemU6IDEuMnJlbTtcclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, OnInit, OnDestroy, NgZone, HostListener} from '@angular/core';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Location} from '@angular/common';\r\nimport {IntToMoneyPipe} from '../_helpers/pipes/int-to-money.pipe';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Component({\r\n selector: 'app-purchase',\r\n templateUrl: './purchase.component.html',\r\n styleUrls: ['./purchase.component.scss']\r\n})\r\nexport class PurchaseComponent implements OnInit, OnDestroy {\r\n\r\n isOpen = false;\r\n localAliases = [];\r\n\r\n currentWalletId;\r\n newPurchase = false;\r\n parentRouting;\r\n subRouting;\r\n historyBlock;\r\n\r\n purchaseForm = new FormGroup({\r\n description: new FormControl('', Validators.required),\r\n seller: new FormControl('', [Validators.required, (g: FormControl) => {\r\n if (g.value === this.variablesService.currentWallet.address) {\r\n return {'address_same': true};\r\n }\r\n return null;\r\n }, (g: FormControl) => {\r\n this.localAliases = [];\r\n if (g.value) {\r\n if (g.value.indexOf('@') !== 0) {\r\n this.isOpen = false;\r\n this.backend.validateAddress(g.value, (valid_status) => {\r\n this.ngZone.run(() => {\r\n if (valid_status === false) {\r\n g.setErrors(Object.assign({'address_not_valid': true}, g.errors));\r\n } else {\r\n if (g.hasError('address_not_valid')) {\r\n delete g.errors['address_not_valid'];\r\n if (Object.keys(g.errors).length === 0) {\r\n g.setErrors(null);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n return (g.hasError('address_not_valid')) ? {'address_not_valid': true} : null;\r\n } else {\r\n this.isOpen = true;\r\n this.localAliases = this.variablesService.aliases.filter((item) => {\r\n return item.name.indexOf(g.value) > -1;\r\n });\r\n if (!(/^@?[a-z0-9\\.\\-]{6,25}$/.test(g.value))) {\r\n g.setErrors(Object.assign({'alias_not_valid': true}, g.errors));\r\n } else {\r\n this.backend.getAliasByName(g.value.replace('@', ''), (alias_status, alias_data) => {\r\n this.ngZone.run(() => {\r\n if (alias_status) {\r\n if (alias_data.address === this.variablesService.currentWallet.address) {\r\n g.setErrors(Object.assign({'address_same': true}, g.errors));\r\n }\r\n if (g.hasError('alias_not_valid')) {\r\n delete g.errors['alias_not_valid'];\r\n if (Object.keys(g.errors).length === 0) {\r\n g.setErrors(null);\r\n }\r\n }\r\n } else {\r\n g.setErrors(Object.assign({'alias_not_valid': true}, g.errors));\r\n }\r\n });\r\n });\r\n }\r\n return (g.hasError('alias_not_valid')) ? {'alias_not_valid': true} : null;\r\n }\r\n }\r\n return null;\r\n }]),\r\n amount: new FormControl(null, [Validators.required, (g: FormControl) => {\r\n if (parseFloat(g.value) === 0) {\r\n return {'amount_zero': true};\r\n }\r\n return null;\r\n }]),\r\n yourDeposit: new FormControl(null, Validators.required),\r\n sellerDeposit: new FormControl(null, Validators.required),\r\n sameAmount: new FormControl({value: false, disabled: false}),\r\n comment: new FormControl(''),\r\n fee: new FormControl(this.variablesService.default_fee),\r\n time: new FormControl({value: 12, disabled: false}),\r\n timeCancel: new FormControl({value: 12, disabled: false}),\r\n payment: new FormControl('')\r\n });\r\n\r\n additionalOptions = false;\r\n currentContract = null;\r\n heightAppEvent;\r\n showTimeSelect = false;\r\n showNullify = false;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private backend: BackendService,\r\n public variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n private location: Location,\r\n private intToMoneyPipe: IntToMoneyPipe\r\n ) {\r\n }\r\n\r\n checkAndChangeHistory() {\r\n if (this.currentContract.state === 201) {\r\n this.historyBlock = this.variablesService.currentWallet.history.find(item => item.tx_type === 8 && item.contract[0].contract_id === this.currentContract.contract_id && item.contract[0].is_a === this.currentContract.is_a);\r\n } else if (this.currentContract.state === 601) {\r\n this.historyBlock = this.variablesService.currentWallet.history.find(item => item.tx_type === 12 && item.contract[0].contract_id === this.currentContract.contract_id && item.contract[0].is_a === this.currentContract.is_a);\r\n }\r\n }\r\n\r\n addressMouseDown(e) {\r\n if (e['button'] === 0 && this.purchaseForm.get('seller').value && this.purchaseForm.get('seller').value.indexOf('@') === 0) {\r\n this.isOpen = true;\r\n }\r\n }\r\n\r\n setAlias(alias) {\r\n this.purchaseForm.get('seller').setValue(alias);\r\n }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(targetElement) {\r\n if (targetElement.id !== 'purchase-seller' && this.isOpen) {\r\n this.isOpen = false;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(params => {\r\n this.currentWalletId = params['id'];\r\n });\r\n this.subRouting = this.route.params.subscribe(params => {\r\n if (params.hasOwnProperty('id')) {\r\n this.currentContract = this.variablesService.currentWallet.getContract(params['id']);\r\n this.purchaseForm.controls['seller'].setValidators([]);\r\n this.purchaseForm.updateValueAndValidity();\r\n this.purchaseForm.setValue({\r\n description: this.currentContract.private_detailes.t,\r\n seller: this.currentContract.private_detailes.b_addr,\r\n amount: this.intToMoneyPipe.transform(this.currentContract.private_detailes.to_pay),\r\n yourDeposit: this.intToMoneyPipe.transform(this.currentContract.private_detailes.a_pledge),\r\n sellerDeposit: this.intToMoneyPipe.transform(this.currentContract.private_detailes.b_pledge),\r\n sameAmount: this.currentContract.private_detailes.to_pay.isEqualTo(this.currentContract.private_detailes.b_pledge),\r\n comment: this.currentContract.private_detailes.c,\r\n fee: this.variablesService.default_fee,\r\n time: 12,\r\n timeCancel: 12,\r\n payment: this.currentContract.payment_id\r\n });\r\n this.purchaseForm.get('sameAmount').disable();\r\n this.newPurchase = false;\r\n\r\n if (this.currentContract.is_new) {\r\n if (this.currentContract.is_a && this.currentContract.state === 2) {\r\n this.currentContract.state = 120;\r\n }\r\n if (this.currentContract.state === 130 && this.currentContract.cancel_expiration_time !== 0 && this.currentContract.cancel_expiration_time < this.variablesService.exp_med_ts) {\r\n this.currentContract.state = 2;\r\n }\r\n this.variablesService.settings.viewedContracts = (this.variablesService.settings.viewedContracts) ? this.variablesService.settings.viewedContracts : [];\r\n let findViewedCont = false;\r\n for (let j = 0; j < this.variablesService.settings.viewedContracts.length; j++) {\r\n if (this.variablesService.settings.viewedContracts[j].contract_id === this.currentContract.contract_id && this.variablesService.settings.viewedContracts[j].is_a === this.currentContract.is_a) {\r\n this.variablesService.settings.viewedContracts[j].state = this.currentContract.state;\r\n findViewedCont = true;\r\n break;\r\n }\r\n }\r\n if (!findViewedCont) {\r\n this.variablesService.settings.viewedContracts.push({\r\n contract_id: this.currentContract.contract_id,\r\n is_a: this.currentContract.is_a,\r\n state: this.currentContract.state\r\n });\r\n }\r\n this.currentContract.is_new = false;\r\n setTimeout(() => {\r\n this.variablesService.currentWallet.recountNewContracts();\r\n }, 0);\r\n }\r\n this.checkAndChangeHistory();\r\n } else {\r\n this.newPurchase = true;\r\n }\r\n });\r\n this.heightAppEvent = this.variablesService.getHeightAppEvent.subscribe((newHeight: number) => {\r\n if (this.currentContract && this.currentContract.state === 201 && this.currentContract.height !== 0 && (newHeight - this.currentContract.height) >= 10) {\r\n this.currentContract.state = 2;\r\n this.currentContract.is_new = true;\r\n this.variablesService.currentWallet.recountNewContracts();\r\n } else if (this.currentContract && this.currentContract.state === 601 && this.currentContract.height !== 0 && (newHeight - this.currentContract.height) >= 10) {\r\n this.currentContract.state = 6;\r\n this.currentContract.is_new = true;\r\n this.variablesService.currentWallet.recountNewContracts();\r\n }\r\n });\r\n }\r\n\r\n toggleOptions() {\r\n this.additionalOptions = !this.additionalOptions;\r\n }\r\n\r\n getProgressBarWidth() {\r\n let progress = '0';\r\n if (!this.newPurchase) {\r\n if (this.currentContract) {\r\n if (this.currentContract.state === 1) {\r\n progress = '10%';\r\n }\r\n if (this.currentContract.state === 201) {\r\n progress = '25%';\r\n }\r\n if ([120, 2].indexOf(this.currentContract.state) !== -1) {\r\n progress = '50%';\r\n }\r\n if ([5, 601].indexOf(this.currentContract.state) !== -1) {\r\n progress = '75%';\r\n }\r\n if ([110, 130, 140, 3, 4, 6].indexOf(this.currentContract.state) !== -1) {\r\n progress = '100%';\r\n }\r\n }\r\n }\r\n return progress;\r\n }\r\n\r\n sameAmountChange() {\r\n if (this.purchaseForm.get('sameAmount').value) {\r\n this.purchaseForm.get('sellerDeposit').clearValidators();\r\n this.purchaseForm.get('sellerDeposit').updateValueAndValidity();\r\n } else {\r\n this.purchaseForm.get('sellerDeposit').setValidators([Validators.required]);\r\n this.purchaseForm.get('sellerDeposit').updateValueAndValidity();\r\n }\r\n }\r\n\r\n createPurchase() {\r\n if (this.purchaseForm.valid) {\r\n const sellerDeposit = this.purchaseForm.get('sameAmount').value ? this.purchaseForm.get('amount').value : this.purchaseForm.get('sellerDeposit').value;\r\n if (this.purchaseForm.get('seller').value.indexOf('@') !== 0) {\r\n this.backend.createProposal(\r\n this.variablesService.currentWallet.wallet_id,\r\n this.purchaseForm.get('description').value,\r\n this.purchaseForm.get('comment').value,\r\n this.variablesService.currentWallet.address,\r\n this.purchaseForm.get('seller').value,\r\n this.purchaseForm.get('amount').value,\r\n this.purchaseForm.get('yourDeposit').value,\r\n sellerDeposit,\r\n this.purchaseForm.get('time').value,\r\n this.purchaseForm.get('payment').value,\r\n (create_status) => {\r\n if (create_status) {\r\n this.back();\r\n }\r\n });\r\n } else {\r\n this.backend.getAliasByName(this.purchaseForm.get('seller').value.replace('@', ''), (alias_status, alias_data) => {\r\n this.ngZone.run(() => {\r\n if (alias_status === false) {\r\n this.ngZone.run(() => {\r\n this.purchaseForm.get('seller').setErrors({'alias_not_valid': true});\r\n });\r\n } else {\r\n this.backend.createProposal(\r\n this.variablesService.currentWallet.wallet_id,\r\n this.purchaseForm.get('description').value,\r\n this.purchaseForm.get('comment').value,\r\n this.variablesService.currentWallet.address,\r\n alias_data.address,\r\n this.purchaseForm.get('amount').value,\r\n this.purchaseForm.get('yourDeposit').value,\r\n sellerDeposit,\r\n this.purchaseForm.get('time').value,\r\n this.purchaseForm.get('payment').value,\r\n (create_status) => {\r\n if (create_status) {\r\n this.back();\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n acceptState() {\r\n this.backend.acceptProposal(this.currentWalletId, this.currentContract.contract_id, (accept_status) => {\r\n if (accept_status) {\r\n this.modalService.prepareModal('info', 'PURCHASE.ACCEPT_STATE_WAIT_BIG');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n ignoredContract() {\r\n this.variablesService.settings.notViewedContracts = (this.variablesService.settings.notViewedContracts) ? this.variablesService.settings.notViewedContracts : [];\r\n let findViewedCont = false;\r\n for (let j = 0; j < this.variablesService.settings.notViewedContracts.length; j++) {\r\n if (this.variablesService.settings.notViewedContracts[j].contract_id === this.currentContract.contract_id && this.variablesService.settings.notViewedContracts[j].is_a === this.currentContract.is_a) {\r\n this.variablesService.settings.notViewedContracts[j].state = 110;\r\n this.variablesService.settings.notViewedContracts[j].time = this.currentContract.expiration_time;\r\n findViewedCont = true;\r\n break;\r\n }\r\n }\r\n if (!findViewedCont) {\r\n this.variablesService.settings.notViewedContracts.push({\r\n contract_id: this.currentContract.contract_id,\r\n is_a: this.currentContract.is_a,\r\n state: 110,\r\n time: this.currentContract.expiration_time\r\n });\r\n }\r\n this.currentContract.is_new = true;\r\n this.currentContract.state = 110;\r\n this.currentContract.time = this.currentContract.expiration_time;\r\n\r\n this.variablesService.currentWallet.recountNewContracts();\r\n this.modalService.prepareModal('info', 'PURCHASE.IGNORED_ACCEPT');\r\n this.back();\r\n }\r\n\r\n productNotGot() {\r\n this.backend.releaseProposal(this.currentWalletId, this.currentContract.contract_id, 'REL_B', (release_status) => {\r\n if (release_status) {\r\n this.modalService.prepareModal('info', 'PURCHASE.BURN_PROPOSAL');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n dealsDetailsFinish() {\r\n this.backend.releaseProposal(this.currentWalletId, this.currentContract.contract_id, 'REL_N', (release_status) => {\r\n if (release_status) {\r\n this.modalService.prepareModal('success', 'PURCHASE.SUCCESS_FINISH_PROPOSAL');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n dealsDetailsCancel() {\r\n this.backend.requestCancelContract(this.currentWalletId, this.currentContract.contract_id, this.purchaseForm.get('timeCancel').value, (cancel_status) => {\r\n if (cancel_status) {\r\n this.modalService.prepareModal('info', 'PURCHASE.SEND_CANCEL_PROPOSAL');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n dealsDetailsDontCanceling() {\r\n this.variablesService.settings.notViewedContracts = this.variablesService.settings.notViewedContracts ? this.variablesService.settings.notViewedContracts : [];\r\n let findViewedCont = false;\r\n for (let j = 0; j < this.variablesService.settings.notViewedContracts.length; j++) {\r\n if (this.variablesService.settings.notViewedContracts[j].contract_id === this.currentContract.contract_id && this.variablesService.settings.notViewedContracts[j].is_a === this.currentContract.is_a) {\r\n this.variablesService.settings.notViewedContracts[j].state = 130;\r\n this.variablesService.settings.notViewedContracts[j].time = this.currentContract.cancel_expiration_time;\r\n findViewedCont = true;\r\n break;\r\n }\r\n }\r\n if (!findViewedCont) {\r\n this.variablesService.settings.notViewedContracts.push({\r\n contract_id: this.currentContract.contract_id,\r\n is_a: this.currentContract.is_a,\r\n state: 130,\r\n time: this.currentContract.cancel_expiration_time\r\n });\r\n }\r\n this.currentContract.is_new = true;\r\n this.currentContract.state = 130;\r\n this.currentContract.time = this.currentContract.cancel_expiration_time;\r\n this.variablesService.currentWallet.recountNewContracts();\r\n this.modalService.prepareModal('info', 'PURCHASE.IGNORED_CANCEL');\r\n this.back();\r\n }\r\n\r\n dealsDetailsSellerCancel() {\r\n this.backend.acceptCancelContract(this.currentWalletId, this.currentContract.contract_id, (accept_status) => {\r\n if (accept_status) {\r\n this.modalService.prepareModal('info', 'PURCHASE.DEALS_CANCELED_WAIT');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n this.subRouting.unsubscribe();\r\n this.heightAppEvent.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n \\\"qr-code\\\"\\r\\n
\\r\\n
{{variablesService.currentWallet.address}}
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.wrap-qr {\\n display: flex;\\n flex-direction: column;\\n align-items: center; }\\n\\n.wrap-qr img {\\n margin: 4rem 0; }\\n\\n.wrap-qr .wrap-address {\\n display: flex;\\n align-items: center;\\n font-size: 1.4rem;\\n line-height: 2.7rem; }\\n\\n.wrap-qr .wrap-address .btn-copy-address {\\n margin-left: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.wrap-qr .wrap-address .btn-copy-address.copy {\\n -webkit-mask: url('copy.svg') no-repeat center;\\n mask: url('copy.svg') no-repeat center; }\\n\\n.wrap-qr .wrap-address .btn-copy-address.copy:hover {\\n opacity: 0.75; }\\n\\n.wrap-qr .wrap-address .btn-copy-address.copied {\\n -webkit-mask: url('complete-testwallet.svg') no-repeat center;\\n mask: url('complete-testwallet.svg') no-repeat center; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVjZWl2ZS9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxyZWNlaXZlXFxyZWNlaXZlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixtQkFBbUIsRUFBQTs7QUFIckI7SUFNSSxjQUFjLEVBQUE7O0FBTmxCO0lBVUksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIsbUJBQW1CLEVBQUE7O0FBYnZCO01BZ0JNLG1CQUFtQjtNQUNuQixhQUFhO01BQ2IsY0FBYyxFQUFBOztBQWxCcEI7UUFxQlEsOENBQXVEO2dCQUF2RCxzQ0FBdUQsRUFBQTs7QUFyQi9EO1VBd0JVLGFBQWEsRUFBQTs7QUF4QnZCO1FBNkJRLDZEQUFzRTtnQkFBdEUscURBQXNFLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9yZWNlaXZlL3JlY2VpdmUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi53cmFwLXFyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgaW1nIHtcclxuICAgIG1hcmdpbjogNHJlbSAwO1xyXG4gIH1cclxuXHJcbiAgLndyYXAtYWRkcmVzcyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuN3JlbTtcclxuXHJcbiAgICAuYnRuLWNvcHktYWRkcmVzcyB7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAxLjJyZW07XHJcbiAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgIGhlaWdodDogMS43cmVtO1xyXG5cclxuICAgICAgJi5jb3B5IHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2NvcHkuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG5cclxuICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgIG9wYWNpdHk6IDAuNzU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmNvcGllZCB7XHJcbiAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9jb21wbGV0ZS10ZXN0d2FsbGV0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, OnInit, OnDestroy} from '@angular/core';\r\nimport QRCode from 'qrcode';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ActivatedRoute} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-receive',\r\n templateUrl: './receive.component.html',\r\n styleUrls: ['./receive.component.scss']\r\n})\r\nexport class ReceiveComponent implements OnInit, OnDestroy {\r\n qrImageSrc: string;\r\n parentRouting;\r\n copyAnimation = false;\r\n copyAnimationTimeout;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private backend: BackendService,\r\n public variablesService: VariablesService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(() => {\r\n QRCode.toDataURL(this.variablesService.currentWallet.address, {\r\n width: 106,\r\n height: 106\r\n }).then(url => {\r\n this.qrImageSrc = url;\r\n }).catch(err => {\r\n console.error(err);\r\n });\r\n });\r\n }\r\n\r\n public copyAddress() {\r\n this.backend.setClipboard(this.variablesService.currentWallet.address);\r\n this.copyAnimation = true;\r\n this.copyAnimationTimeout = window.setTimeout(() => {\r\n this.copyAnimation = false;\r\n }, 2000);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n clearTimeout(this.copyAnimationTimeout);\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\\r\\n {{ 'BREADCRUMBS.RESTORE_WALLET' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\\r\\n
\\r\\n
\\r\\n
= variablesService.maxWalletNameLength\\\">\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.KEY_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.KEY_NOT_VALID' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \":host {\\n position: relative; }\\n\\n.form-restore {\\n margin: 2.4rem 0;\\n width: 100%; }\\n\\n.form-restore .input-block.half-block {\\n width: 50%; }\\n\\n.form-restore .wrap-buttons {\\n display: flex;\\n margin: 2.5rem -0.7rem;\\n width: 50%; }\\n\\n.form-restore .wrap-buttons button {\\n margin: 0 0.7rem; }\\n\\n.form-restore .wrap-buttons button.transparent-button {\\n flex-basis: 50%; }\\n\\n.form-restore .wrap-buttons button.select-button {\\n flex-basis: 60%; }\\n\\n.form-restore .wrap-buttons button.create-button {\\n flex: 1 1 50%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVzdG9yZS13YWxsZXQvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxccmVzdG9yZS13YWxsZXRcXHJlc3RvcmUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsZ0JBQWdCO0VBQ2hCLFdBQVcsRUFBQTs7QUFGYjtJQU9NLFVBQVUsRUFBQTs7QUFQaEI7SUFZSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLFVBQVUsRUFBQTs7QUFkZDtNQWlCTSxnQkFBZ0IsRUFBQTs7QUFqQnRCO1FBb0JRLGVBQWUsRUFBQTs7QUFwQnZCO1FBd0JRLGVBQWUsRUFBQTs7QUF4QnZCO1FBNEJRLGFBQWEsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3Jlc3RvcmUtd2FsbGV0L3Jlc3RvcmUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLmZvcm0tcmVzdG9yZSB7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgLmlucHV0LWJsb2NrIHtcclxuXHJcbiAgICAmLmhhbGYtYmxvY2sge1xyXG4gICAgICB3aWR0aDogNTAlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuICAgIHdpZHRoOiA1MCU7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAwIDAuN3JlbTtcclxuXHJcbiAgICAgICYudHJhbnNwYXJlbnQtYnV0dG9uIHtcclxuICAgICAgICBmbGV4LWJhc2lzOiA1MCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuc2VsZWN0LWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleC1iYXNpczogNjAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmNyZWF0ZS1idXR0b24ge1xyXG4gICAgICAgIGZsZXg6IDEgMSA1MCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-restore-wallet',\r\n templateUrl: './restore-wallet.component.html',\r\n styleUrls: ['./restore-wallet.component.scss']\r\n})\r\nexport class RestoreWalletComponent implements OnInit {\r\n\r\n restoreForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, (g: FormControl) => {\r\n for (let i = 0; i < this.variablesService.wallets.length; i++) {\r\n if (g.value === this.variablesService.wallets[i].name) {\r\n return {'duplicate': true};\r\n }\r\n }\r\n return null;\r\n }]),\r\n key: new FormControl('', Validators.required),\r\n password: new FormControl(''),\r\n confirm: new FormControl('')\r\n }, function (g: FormGroup) {\r\n return g.get('password').value === g.get('confirm').value ? null : {'confirm_mismatch': true};\r\n });\r\n\r\n wallet = {\r\n id: ''\r\n };\r\n\r\n walletSaved = false;\r\n walletSavedName = '';\r\n progressWidth = '9rem';\r\n\r\n constructor(\r\n private router: Router,\r\n private backend: BackendService,\r\n public variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n\r\n createWallet() {\r\n this.ngZone.run(() => {\r\n this.progressWidth = '100%';\r\n this.router.navigate(['/seed-phrase'], {queryParams: {wallet_id: this.wallet.id}});\r\n });\r\n }\r\n\r\n saveWallet() {\r\n if (this.restoreForm.valid && this.restoreForm.get('name').value.length <= this.variablesService.maxWalletNameLength) {\r\n this.backend.isValidRestoreWalletText(this.restoreForm.get('key').value, (valid_status, valid_data) => {\r\n if (valid_data !== 'TRUE') {\r\n this.ngZone.run(() => {\r\n this.restoreForm.get('key').setErrors({key_not_valid: true});\r\n });\r\n } else {\r\n this.backend.saveFileDialog(this.translate.instant('RESTORE_WALLET.CHOOSE_PATH'), '*', this.variablesService.settings.default_path, (save_status, save_data) => {\r\n if (save_status) {\r\n this.variablesService.settings.default_path = save_data.path.substr(0, save_data.path.lastIndexOf('/'));\r\n this.walletSavedName = save_data.path.substr(save_data.path.lastIndexOf('/') + 1, save_data.path.length - 1);\r\n this.backend.restoreWallet(save_data.path, this.restoreForm.get('password').value, this.restoreForm.get('key').value, (restore_status, restore_data) => {\r\n if (restore_status) {\r\n this.wallet.id = restore_data.wallet_id;\r\n this.variablesService.opening_wallet = new Wallet(\r\n restore_data.wallet_id,\r\n this.restoreForm.get('name').value,\r\n this.restoreForm.get('password').value,\r\n restore_data['wi'].path,\r\n restore_data['wi'].address,\r\n restore_data['wi'].balance,\r\n restore_data['wi'].unlocked_balance,\r\n restore_data['wi'].mined_total,\r\n restore_data['wi'].tracking_hey\r\n );\r\n this.variablesService.opening_wallet.alias = this.backend.getWalletAlias(this.variablesService.opening_wallet.address);\r\n if (restore_data.recent_history && restore_data.recent_history.history) {\r\n this.variablesService.opening_wallet.prepareHistory(restore_data.recent_history.history);\r\n }\r\n this.backend.getContracts(this.variablesService.opening_wallet.wallet_id, (contracts_status, contracts_data) => {\r\n if (contracts_status && contracts_data.hasOwnProperty('contracts')) {\r\n this.ngZone.run(() => {\r\n this.variablesService.opening_wallet.prepareContractsAfterOpen(contracts_data.contracts, this.variablesService.exp_med_ts, this.variablesService.height_app, this.variablesService.settings.viewedContracts, this.variablesService.settings.notViewedContracts);\r\n });\r\n }\r\n });\r\n this.ngZone.run(() => {\r\n this.walletSaved = true;\r\n this.progressWidth = '50%';\r\n });\r\n } else {\r\n this.modalService.prepareModal('error', 'RESTORE_WALLET.NOT_CORRECT_FILE_OR_PASSWORD');\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\\r\\n {{ 'BREADCRUMBS.SAVE_PHRASE' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n

{{ 'SEED_PHRASE.TITLE' | translate }}

\\r\\n\\r\\n
\\r\\n \\r\\n
{{(index + 1) + '. ' + word}}
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \":host {\\n position: relative; }\\n\\n.seed-phrase-title {\\n line-height: 2.2rem;\\n padding: 2.2rem 0; }\\n\\n.seed-phrase-content {\\n display: flex;\\n flex-direction: column;\\n flex-wrap: wrap;\\n padding: 1.4rem;\\n width: 100%;\\n height: 12rem; }\\n\\n.seed-phrase-content .word {\\n line-height: 2.2rem;\\n max-width: 13rem; }\\n\\n.wrap-buttons {\\n display: flex; }\\n\\n.wrap-buttons .seed-phrase-button {\\n margin: 2.8rem 0;\\n width: 25%;\\n min-width: 1.5rem; }\\n\\n.wrap-buttons .copy-button {\\n margin: 2.8rem 1rem;\\n width: 25%;\\n min-width: 1.5rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2VlZC1waHJhc2UvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcc2VlZC1waHJhc2VcXHNlZWQtcGhyYXNlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsbUJBQW1CO0VBQ25CLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsZUFBZTtFQUNmLGVBQWU7RUFDZixXQUFXO0VBQ1gsYUFBYSxFQUFBOztBQU5mO0lBU0ksbUJBQW1CO0lBQ25CLGdCQUFnQixFQUFBOztBQUlwQjtFQUNFLGFBQWEsRUFBQTs7QUFEZjtJQUlJLGdCQUFnQjtJQUNoQixVQUFVO0lBQ1YsaUJBQWlCLEVBQUE7O0FBTnJCO0lBVUksbUJBQW1CO0lBQ25CLFVBQVU7SUFDVixpQkFBaUIsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NlZWQtcGhyYXNlL3NlZWQtcGhyYXNlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLnNlZWQtcGhyYXNlLXRpdGxlIHtcclxuICBsaW5lLWhlaWdodDogMi4ycmVtO1xyXG4gIHBhZGRpbmc6IDIuMnJlbSAwO1xyXG59XHJcblxyXG4uc2VlZC1waHJhc2UtY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxuICBwYWRkaW5nOiAxLjRyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMnJlbTtcclxuXHJcbiAgLndvcmQge1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuMnJlbTtcclxuICAgIG1heC13aWR0aDogMTNyZW07XHJcbiAgfVxyXG59XHJcblxyXG4ud3JhcC1idXR0b25zIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG5cclxuICAuc2VlZC1waHJhc2UtYnV0dG9uIHtcclxuICAgIG1hcmdpbjogMi44cmVtIDA7XHJcbiAgICB3aWR0aDogMjUlO1xyXG4gICAgbWluLXdpZHRoOiAxLjVyZW07XHJcbiAgfVxyXG5cclxuICAuY29weS1idXR0b24ge1xyXG4gICAgbWFyZ2luOiAyLjhyZW0gMXJlbTtcclxuICAgIHdpZHRoOiAyNSU7XHJcbiAgICBtaW4td2lkdGg6IDEuNXJlbTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ== */\"","import {Component, NgZone, OnDestroy, OnInit} from '@angular/core';\r\nimport {Location} from '@angular/common';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\n\r\n@Component({\r\n selector: 'app-seed-phrase',\r\n templateUrl: './seed-phrase.component.html',\r\n styleUrls: ['./seed-phrase.component.scss']\r\n})\r\nexport class SeedPhraseComponent implements OnInit, OnDestroy {\r\n\r\n queryRouting;\r\n seedPhrase = '';\r\n wallet_id: number;\r\n seedPhraseCopied = false;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private location: Location,\r\n private backend: BackendService,\r\n public variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.queryRouting = this.route.queryParams.subscribe(params => {\r\n if (params.wallet_id) {\r\n this.wallet_id = params.wallet_id;\r\n this.backend.getSmartWalletInfo(params.wallet_id, (status, data) => {\r\n if (data.hasOwnProperty('restore_key')) {\r\n this.ngZone.run(() => {\r\n this.seedPhrase = data['restore_key'].trim();\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n runWallet() {\r\n let exists = false;\r\n this.variablesService.wallets.forEach((wallet) => {\r\n if (wallet.address === this.variablesService.opening_wallet.address) {\r\n exists = true;\r\n }\r\n });\r\n if (!exists) {\r\n this.backend.runWallet(this.wallet_id, (run_status, run_data) => {\r\n if (run_status) {\r\n this.variablesService.wallets.push(this.variablesService.opening_wallet);\r\n if (this.variablesService.appPass) {\r\n this.backend.storeSecureAppData();\r\n }\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.wallet_id]);\r\n });\r\n } else {\r\n console.log(run_data['error_code']);\r\n }\r\n });\r\n } else {\r\n this.variablesService.opening_wallet = null;\r\n this.modalService.prepareModal('error', 'OPEN_WALLET.WITH_ADDRESS_ALREADY_OPEN');\r\n this.backend.closeWallet(this.wallet_id, () => {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n });\r\n }\r\n }\r\n\r\n copySeedPhrase() {\r\n this.backend.setClipboard(this.seedPhrase, () => {\r\n this.ngZone.run(() => {\r\n this.seedPhraseCopied = true;\r\n });\r\n });\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.queryRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
{{item.name}}
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.ADDRESS_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.ADDRESS_NOT_VALID' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.ALIAS_NOT_VALID' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.AMOUNT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.AMOUNT_ZERO' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
= variablesService.maxCommentLength\\\">\\r\\n {{ 'SEND.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.AMOUNT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.FEE_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.FEE_MINIMUM' | translate : {fee: variablesService.default_fee} }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.form-send .input-blocks-row {\\n display: flex; }\\n\\n.form-send .input-blocks-row > div {\\n flex-basis: 50%; }\\n\\n.form-send .input-blocks-row > div:first-child {\\n margin-right: 1.5rem; }\\n\\n.form-send .input-blocks-row > div:last-child {\\n margin-left: 1.5rem; }\\n\\n.form-send .send-select {\\n display: flex;\\n align-items: center;\\n background: transparent;\\n border: none;\\n font-size: 1.3rem;\\n line-height: 1.3rem;\\n margin: 1.5rem 0 0;\\n padding: 0;\\n width: 100%;\\n max-width: 15rem;\\n height: 1.3rem; }\\n\\n.form-send .send-select .arrow {\\n margin-left: 1rem;\\n width: 0.8rem;\\n height: 0.8rem; }\\n\\n.form-send .send-select .arrow.down {\\n -webkit-mask: url('arrow-down.svg') no-repeat center;\\n mask: url('arrow-down.svg') no-repeat center; }\\n\\n.form-send .send-select .arrow.up {\\n -webkit-mask: url('arrow-up.svg') no-repeat center;\\n mask: url('arrow-up.svg') no-repeat center; }\\n\\n.form-send .additional-details {\\n display: flex;\\n margin-top: 1.5rem;\\n padding: 0.5rem 0 2rem; }\\n\\n.form-send .additional-details > div {\\n flex-basis: 25%; }\\n\\n.form-send .additional-details > div:first-child {\\n padding-left: 1.5rem;\\n padding-right: 1rem; }\\n\\n.form-send .additional-details > div:last-child {\\n padding-left: 1rem;\\n padding-right: 1.5rem; }\\n\\n.form-send .additional-details .checkbox-block {\\n flex-basis: 50%; }\\n\\n.form-send .additional-details .checkbox-block > label {\\n top: 3.5rem; }\\n\\n.form-send button {\\n margin: 2.4rem 0;\\n width: 100%;\\n max-width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2VuZC9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxzZW5kXFxzZW5kLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBR0ksYUFBYSxFQUFBOztBQUhqQjtJQU1NLGVBQWUsRUFBQTs7QUFOckI7TUFTUSxvQkFBb0IsRUFBQTs7QUFUNUI7TUFhUSxtQkFBbUIsRUFBQTs7QUFiM0I7RUFtQkksYUFBYTtFQUNiLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsWUFBWTtFQUNaLGlCQUFpQjtFQUNqQixtQkFBbUI7RUFDbkIsa0JBQWtCO0VBQ2xCLFVBQVU7RUFDVixXQUFXO0VBQ1gsZ0JBQWdCO0VBQ2hCLGNBQWMsRUFBQTs7QUE3QmxCO0lBZ0NNLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsY0FBYyxFQUFBOztBQWxDcEI7TUFxQ1Esb0RBQTREO2NBQTVELDRDQUE0RCxFQUFBOztBQXJDcEU7TUF5Q1Esa0RBQTBEO2NBQTFELDBDQUEwRCxFQUFBOztBQXpDbEU7RUErQ0ksYUFBYTtFQUNiLGtCQUFrQjtFQUNsQixzQkFBc0IsRUFBQTs7QUFqRDFCO0lBb0RNLGVBQWUsRUFBQTs7QUFwRHJCO01BdURRLG9CQUFvQjtNQUNwQixtQkFBbUIsRUFBQTs7QUF4RDNCO01BNERRLGtCQUFrQjtNQUNsQixxQkFBcUIsRUFBQTs7QUE3RDdCO0lBa0VNLGVBQWUsRUFBQTs7QUFsRXJCO01BcUVRLFdBQVcsRUFBQTs7QUFyRW5CO0VBMkVJLGdCQUFnQjtFQUNoQixXQUFXO0VBQ1gsZ0JBQWdCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zZW5kL3NlbmQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5mb3JtLXNlbmQge1xyXG5cclxuICAuaW5wdXQtYmxvY2tzLXJvdyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG5cclxuICAgID4gZGl2IHtcclxuICAgICAgZmxleC1iYXNpczogNTAlO1xyXG5cclxuICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEuNXJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnNlbmQtc2VsZWN0IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjNyZW07XHJcbiAgICBtYXJnaW46IDEuNXJlbSAwIDA7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gICAgaGVpZ2h0OiAxLjNyZW07XHJcblxyXG4gICAgLmFycm93IHtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDFyZW07XHJcbiAgICAgIHdpZHRoOiAwLjhyZW07XHJcbiAgICAgIGhlaWdodDogMC44cmVtO1xyXG5cclxuICAgICAgJi5kb3duIHtcclxuICAgICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvYXJyb3ctZG93bi5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYudXAge1xyXG4gICAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9hcnJvdy11cC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5hZGRpdGlvbmFsLWRldGFpbHMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIG1hcmdpbi10b3A6IDEuNXJlbTtcclxuICAgIHBhZGRpbmc6IDAuNXJlbSAwIDJyZW07XHJcblxyXG4gICAgPiBkaXYge1xyXG4gICAgICBmbGV4LWJhc2lzOiAyNSU7XHJcblxyXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMXJlbTtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuY2hlY2tib3gtYmxvY2sge1xyXG4gICAgICBmbGV4LWJhc2lzOiA1MCU7XHJcblxyXG4gICAgICA+IGxhYmVsIHtcclxuICAgICAgICB0b3A6IDMuNXJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYnV0dG9uIHtcclxuICAgIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, OnInit, OnDestroy, NgZone, HostListener} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Component({\r\n selector: 'app-send',\r\n templateUrl: './send.component.html',\r\n styleUrls: ['./send.component.scss']\r\n})\r\nexport class SendComponent implements OnInit, OnDestroy {\r\n\r\n isOpen = false;\r\n localAliases = [];\r\n\r\n currentWalletId = null;\r\n parentRouting;\r\n sendForm = new FormGroup({\r\n address: new FormControl('', [Validators.required, (g: FormControl) => {\r\n this.localAliases = [];\r\n if (g.value) {\r\n if (g.value.indexOf('@') !== 0) {\r\n this.isOpen = false;\r\n this.backend.validateAddress(g.value, (valid_status) => {\r\n this.ngZone.run(() => {\r\n if (valid_status === false) {\r\n g.setErrors(Object.assign({'address_not_valid': true}, g.errors));\r\n } else {\r\n if (g.hasError('address_not_valid')) {\r\n delete g.errors['address_not_valid'];\r\n if (Object.keys(g.errors).length === 0) {\r\n g.setErrors(null);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n return (g.hasError('address_not_valid')) ? {'address_not_valid': true} : null;\r\n } else {\r\n this.isOpen = true;\r\n this.localAliases = this.variablesService.aliases.filter((item) => {\r\n return item.name.indexOf(g.value) > -1;\r\n });\r\n if (!(/^@?[a-z0-9\\.\\-]{6,25}$/.test(g.value))) {\r\n g.setErrors(Object.assign({'alias_not_valid': true}, g.errors));\r\n } else {\r\n this.backend.getAliasByName(g.value.replace('@', ''), (alias_status) => {\r\n this.ngZone.run(() => {\r\n if (alias_status) {\r\n if (g.hasError('alias_not_valid')) {\r\n delete g.errors['alias_not_valid'];\r\n if (Object.keys(g.errors).length === 0) {\r\n g.setErrors(null);\r\n }\r\n }\r\n } else {\r\n g.setErrors(Object.assign({'alias_not_valid': true}, g.errors));\r\n }\r\n });\r\n });\r\n }\r\n return (g.hasError('alias_not_valid')) ? {'alias_not_valid': true} : null;\r\n }\r\n }\r\n return null;\r\n }]),\r\n amount: new FormControl(null, [Validators.required, (g: FormControl) => {\r\n if (new BigNumber(g.value).eq(0)) {\r\n return {'zero': true};\r\n }\r\n return null;\r\n }]),\r\n comment: new FormControl('', [(g: FormControl) => {\r\n if (g.value > this.variablesService.maxCommentLength) {\r\n return {'maxLength': true};\r\n } else {\r\n return null;\r\n }\r\n }]),\r\n mixin: new FormControl(0, Validators.required),\r\n fee: new FormControl(this.variablesService.default_fee, [Validators.required, (g: FormControl) => {\r\n if ((new BigNumber(g.value)).isLessThan(this.variablesService.default_fee)) {\r\n return {'less_min': true};\r\n }\r\n return null;\r\n }]),\r\n hide: new FormControl(false)\r\n });\r\n additionalOptions = false;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private backend: BackendService,\r\n public variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {\r\n }\r\n\r\n addressMouseDown(e) {\r\n if (e['button'] === 0 && this.sendForm.get('address').value && this.sendForm.get('address').value.indexOf('@') === 0) {\r\n this.isOpen = true;\r\n }\r\n }\r\n\r\n setAlias(alias) {\r\n this.sendForm.get('address').setValue(alias);\r\n }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(targetElement) {\r\n if (targetElement.id !== 'send-address' && this.isOpen) {\r\n this.isOpen = false;\r\n }\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(params => {\r\n this.currentWalletId = params['id'];\r\n this.sendForm.reset({\r\n address: this.variablesService.currentWallet.send_data['address'],\r\n amount: this.variablesService.currentWallet.send_data['amount'],\r\n comment: this.variablesService.currentWallet.send_data['comment'],\r\n mixin: this.variablesService.currentWallet.send_data['mixin'] || 0,\r\n fee: this.variablesService.currentWallet.send_data['fee'] || this.variablesService.default_fee,\r\n hide: this.variablesService.currentWallet.send_data['hide'] || false\r\n });\r\n });\r\n }\r\n\r\n onSend() {\r\n if (this.sendForm.valid) {\r\n if (this.sendForm.get('address').value.indexOf('@') !== 0) {\r\n this.backend.validateAddress(this.sendForm.get('address').value, (valid_status) => {\r\n if (valid_status === false) {\r\n this.ngZone.run(() => {\r\n this.sendForm.get('address').setErrors({'address_not_valid': true});\r\n });\r\n } else {\r\n this.backend.sendMoney(\r\n this.currentWalletId,\r\n this.sendForm.get('address').value,\r\n this.sendForm.get('amount').value,\r\n this.sendForm.get('fee').value,\r\n this.sendForm.get('mixin').value,\r\n this.sendForm.get('comment').value,\r\n this.sendForm.get('hide').value,\r\n (send_status) => {\r\n if (send_status) {\r\n this.modalService.prepareModal('success', 'SEND.SUCCESS_SENT');\r\n this.variablesService.currentWallet.send_data = {address: null, amount: null, comment: null, mixin: null, fee: null, hide: null};\r\n this.sendForm.reset({address: null, amount: null, comment: null, mixin: 0, fee: this.variablesService.default_fee, hide: false});\r\n }\r\n });\r\n }\r\n });\r\n } else {\r\n this.backend.getAliasByName(this.sendForm.get('address').value.replace('@', ''), (alias_status, alias_data) => {\r\n this.ngZone.run(() => {\r\n if (alias_status === false) {\r\n this.ngZone.run(() => {\r\n this.sendForm.get('address').setErrors({'alias_not_valid': true});\r\n });\r\n } else {\r\n this.backend.sendMoney(\r\n this.currentWalletId,\r\n alias_data.address, // this.sendForm.get('address').value,\r\n this.sendForm.get('amount').value,\r\n this.sendForm.get('fee').value,\r\n this.sendForm.get('mixin').value,\r\n this.sendForm.get('comment').value,\r\n this.sendForm.get('hide').value,\r\n (send_status) => {\r\n if (send_status) {\r\n this.modalService.prepareModal('success', 'SEND.SUCCESS_SENT');\r\n this.variablesService.currentWallet.send_data = {address: null, amount: null, comment: null, mixin: null, fee: null, hide: null};\r\n this.sendForm.reset({address: null, amount: null, comment: null, mixin: 0, fee: this.variablesService.default_fee, hide: false});\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n toggleOptions() {\r\n this.additionalOptions = !this.additionalOptions;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n this.variablesService.currentWallet.send_data = {\r\n address: this.sendForm.get('address').value,\r\n amount: this.sendForm.get('amount').value,\r\n comment: this.sendForm.get('comment').value,\r\n mixin: this.sendForm.get('mixin').value,\r\n fee: this.sendForm.get('fee').value,\r\n hide: this.sendForm.get('hide').value\r\n };\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n

{{ 'SETTINGS.TITLE' | translate }}

\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{item.name | translate}}\\r\\n \\r\\n \\r\\n {{item.name | translate}}\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n {{ 'SETTINGS.MASTER_PASSWORD.TITLE' | translate }}\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n {{ 'SETTINGS.FORM_ERRORS.PASS_NOT_MATCH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n {{ 'SETTINGS.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
{{ 'SETTINGS.LAST_BUILD' | translate : {value: currentBuild} }}
\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \".head {\\n justify-content: flex-end; }\\n\\n.settings-title {\\n font-size: 1.7rem; }\\n\\n.theme-selection {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n margin: 2.4rem 0;\\n width: 50%; }\\n\\n.theme-selection .radio-block {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n font-size: 1.3rem;\\n line-height: 2.7rem; }\\n\\n.lock-selection {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n margin: 2.4rem 0;\\n width: 50%; }\\n\\n.lock-selection .lock-selection-title {\\n display: flex;\\n font-size: 1.5rem;\\n line-height: 2.7rem;\\n margin-bottom: 1rem; }\\n\\n.scale-selection {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 0 0 4rem;\\n width: 50%;\\n height: 0.5rem; }\\n\\n.scale-selection .button-block {\\n position: relative;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex: 1 0 auto;\\n margin: 0 0.2rem;\\n padding: 0;\\n height: 0.5rem; }\\n\\n.scale-selection .button-block .label {\\n position: absolute;\\n bottom: -1rem;\\n left: 50%;\\n transform: translate(-50%, 100%);\\n font-size: 1rem;\\n white-space: nowrap; }\\n\\n.master-password {\\n width: 50%; }\\n\\n.master-password .master-password-title {\\n display: flex;\\n font-size: 1.5rem;\\n line-height: 2.7rem;\\n margin-bottom: 1rem; }\\n\\n.master-password button {\\n margin: 2.5rem auto;\\n width: 100%;\\n max-width: 15rem; }\\n\\n.last-build {\\n font-size: 1rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2V0dGluZ3MvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcc2V0dGluZ3NcXHNldHRpbmdzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UseUJBQXlCLEVBQUE7O0FBRzNCO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0Qix1QkFBdUI7RUFDdkIsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTs7QUFMWjtJQVFJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsMkJBQTJCO0lBQzNCLGlCQUFpQjtJQUNqQixtQkFBbUIsRUFBQTs7QUFJdkI7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLHVCQUF1QjtFQUN2QixnQkFBZ0I7RUFDaEIsVUFBVSxFQUFBOztBQUxaO0lBUUksYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsbUJBQW1CLEVBQUE7O0FBSXZCO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQiw4QkFBOEI7RUFDOUIsaUJBQWlCO0VBQ2pCLFVBQVU7RUFDVixjQUFjLEVBQUE7O0FBTmhCO0lBU0ksa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsVUFBVTtJQUNWLGNBQWMsRUFBQTs7QUFoQmxCO01BbUJNLGtCQUFrQjtNQUNsQixhQUFhO01BQ2IsU0FBUztNQUNULGdDQUFnQztNQUNoQyxlQUFlO01BQ2YsbUJBQW1CLEVBQUE7O0FBS3pCO0VBQ0UsVUFBVSxFQUFBOztBQURaO0lBSUksYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsbUJBQW1CLEVBQUE7O0FBUHZCO0lBV0ksbUJBQW1CO0lBQ25CLFdBQVc7SUFDWCxnQkFBZ0IsRUFBQTs7QUFJcEI7RUFDRSxlQUFlLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zZXR0aW5ncy9zZXR0aW5ncy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5oZWFkIHtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG59XHJcblxyXG4uc2V0dGluZ3MtdGl0bGUge1xyXG4gIGZvbnQtc2l6ZTogMS43cmVtO1xyXG59XHJcblxyXG4udGhlbWUtc2VsZWN0aW9uIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuICB3aWR0aDogNTAlO1xyXG5cclxuICAucmFkaW8tYmxvY2sge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAyLjdyZW07XHJcbiAgfVxyXG59XHJcblxyXG4ubG9jay1zZWxlY3Rpb24ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBtYXJnaW46IDIuNHJlbSAwO1xyXG4gIHdpZHRoOiA1MCU7XHJcblxyXG4gIC5sb2NrLXNlbGVjdGlvbi10aXRsZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICB9XHJcbn1cclxuXHJcbi5zY2FsZS1zZWxlY3Rpb24ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgcGFkZGluZzogMCAwIDRyZW07XHJcbiAgd2lkdGg6IDUwJTtcclxuICBoZWlnaHQ6IDAuNXJlbTtcclxuXHJcbiAgLmJ1dHRvbi1ibG9jayB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgZmxleDogMSAwIGF1dG87XHJcbiAgICBtYXJnaW46IDAgMC4ycmVtO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGhlaWdodDogMC41cmVtO1xyXG5cclxuICAgIC5sYWJlbCB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgYm90dG9tOiAtMXJlbTtcclxuICAgICAgbGVmdDogNTAlO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAxMDAlKTtcclxuICAgICAgZm9udC1zaXplOiAxcmVtO1xyXG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLm1hc3Rlci1wYXNzd29yZCB7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLm1hc3Rlci1wYXNzd29yZC10aXRsZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICB9XHJcblxyXG4gIGJ1dHRvbiB7XHJcbiAgICBtYXJnaW46IDIuNXJlbSBhdXRvO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmxhc3QtYnVpbGQge1xyXG4gIGZvbnQtc2l6ZTogMXJlbTtcclxufVxyXG4iXX0= */\"","import {Component, NgZone, OnInit, Renderer2} from '@angular/core';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {FormControl, FormGroup} from '@angular/forms';\r\nimport {Location} from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-settings',\r\n templateUrl: './settings.component.html',\r\n styleUrls: ['./settings.component.scss']\r\n})\r\nexport class SettingsComponent implements OnInit {\r\n\r\n theme: string;\r\n scale: number;\r\n changeForm: any;\r\n appLockOptions = [\r\n {\r\n id: 5,\r\n name: 'SETTINGS.APP_LOCK.TIME1'\r\n },\r\n {\r\n id: 15,\r\n name: 'SETTINGS.APP_LOCK.TIME2'\r\n },\r\n {\r\n id: 60,\r\n name: 'SETTINGS.APP_LOCK.TIME3'\r\n },\r\n {\r\n id: 0,\r\n name: 'SETTINGS.APP_LOCK.TIME4'\r\n }\r\n ];\r\n appScaleOptions = [\r\n {\r\n id: 7.5,\r\n name: '75% scale'\r\n },\r\n {\r\n id: 10,\r\n name: '100% scale'\r\n },\r\n {\r\n id: 12.5,\r\n name: '125% scale'\r\n },\r\n {\r\n id: 15,\r\n name: '150% scale'\r\n }\r\n ];\r\n appLogOptions = [\r\n {\r\n id: -1\r\n },\r\n {\r\n id: 0\r\n },\r\n {\r\n id: 1\r\n },\r\n {\r\n id: 2\r\n },\r\n {\r\n id: 3\r\n },\r\n {\r\n id: 4\r\n }\r\n ];\r\n\r\n currentBuild = '';\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n public variablesService: VariablesService,\r\n private backend: BackendService,\r\n private location: Location,\r\n private ngZone: NgZone\r\n ) {\r\n this.theme = this.variablesService.settings.theme;\r\n this.scale = this.variablesService.settings.scale;\r\n this.changeForm = new FormGroup({\r\n password: new FormControl(''),\r\n new_password: new FormControl(''),\r\n new_confirmation: new FormControl('')\r\n }, [(g: FormGroup) => {\r\n return g.get('new_password').value === g.get('new_confirmation').value ? null : {'confirm_mismatch': true};\r\n }, (g: FormGroup) => {\r\n if (this.variablesService.appPass) {\r\n return g.get('password').value === this.variablesService.appPass ? null : {'pass_mismatch': true};\r\n }\r\n return null;\r\n }]);\r\n }\r\n\r\n ngOnInit() {\r\n this.backend.getVersion((version) => {\r\n this.ngZone.run(() => {\r\n this.currentBuild = version;\r\n });\r\n });\r\n }\r\n\r\n setTheme(theme) {\r\n this.renderer.removeClass(document.body, 'theme-' + this.theme);\r\n this.theme = theme;\r\n this.variablesService.settings.theme = this.theme;\r\n this.renderer.addClass(document.body, 'theme-' + this.theme);\r\n this.backend.storeAppData();\r\n }\r\n\r\n setScale(scale) {\r\n this.scale = scale;\r\n this.variablesService.settings.scale = this.scale;\r\n this.renderer.setStyle(document.documentElement, 'font-size', this.scale + 'px');\r\n this.backend.storeAppData();\r\n }\r\n\r\n onSubmitChangePass() {\r\n if (this.changeForm.valid) {\r\n this.variablesService.appPass = this.changeForm.get('new_password').value;\r\n if (this.variablesService.appPass) {\r\n this.backend.storeSecureAppData();\r\n } else {\r\n this.backend.dropSecureAppData();\r\n }\r\n this.changeForm.reset();\r\n }\r\n }\r\n\r\n onLockChange() {\r\n if (this.variablesService.appLogin) {\r\n this.variablesService.restartCountdown();\r\n }\r\n this.backend.storeAppData();\r\n }\r\n\r\n onLogChange() {\r\n this.backend.setLogLevel(this.variablesService.settings.appLog);\r\n this.backend.storeAppData();\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n

{{ 'SIDEBAR.TITLE' | translate }}

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.OFFLINE' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.SYNCING' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.ONLINE' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.LOADING' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.ERROR' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.COMPLETE' | translate }}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ variablesService.sync.progress_value_text }}%
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ 'SIDEBAR.UPDATE.STANDARD' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{ 'SIDEBAR.UPDATE.IMPORTANT' | translate }}\\r\\n
\\r\\n {{ 'SIDEBAR.UPDATE.IMPORTANT_HINT' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{ 'SIDEBAR.UPDATE.CRITICAL' | translate }}\\r\\n
\\r\\n {{ 'SIDEBAR.UPDATE.IMPORTANT_HINT' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'SIDEBAR.UPDATE.TIME' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n flex: 0 0 25rem;\\n padding: 0 3rem;\\n max-width: 25rem; }\\n\\n.sidebar-accounts {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n flex: 1 1 auto; }\\n\\n.sidebar-accounts .sidebar-accounts-header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n flex: 0 0 auto;\\n height: 8rem;\\n font-weight: 400; }\\n\\n.sidebar-accounts .sidebar-accounts-header h3 {\\n font-size: 1.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-header button {\\n background: transparent;\\n border: none;\\n outline: none; }\\n\\n.sidebar-accounts .sidebar-accounts-list {\\n display: flex;\\n flex-direction: column;\\n flex: 1 1 auto;\\n margin: 0 -3rem;\\n overflow-y: overlay; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account {\\n display: flex;\\n flex-direction: column;\\n flex-shrink: 0;\\n cursor: pointer;\\n padding: 2rem 3rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row {\\n display: flex;\\n align-items: center;\\n justify-content: space-between; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-title-balance {\\n line-height: 2.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-title-balance .title {\\n font-size: 1.5rem;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-title-balance .balance {\\n font-size: 1.8rem;\\n font-weight: 600;\\n white-space: nowrap; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias {\\n font-size: 1.3rem;\\n line-height: 3.4rem;\\n margin-bottom: 0.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias .name {\\n display: flex;\\n align-items: center;\\n flex-shrink: 1;\\n line-height: 1.6rem;\\n padding-right: 1rem;\\n overflow: hidden; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias .name span {\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias .price {\\n flex-shrink: 0; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias .icon {\\n margin-left: 0.5rem;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias .icon.comment {\\n -webkit-mask: url('alert.svg') no-repeat center;\\n mask: url('alert.svg') no-repeat center; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-staking {\\n line-height: 2.9rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-staking .text {\\n font-size: 1.3rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-messages {\\n line-height: 2.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-messages .text {\\n font-size: 1.3rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-messages .indicator {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n border-radius: 1rem;\\n font-size: 1rem;\\n min-width: 2.4rem;\\n height: 1.6rem;\\n padding: 0 0.5rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\\n flex-direction: column;\\n height: 5.6rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .status {\\n align-self: flex-start;\\n font-size: 1.3rem;\\n line-height: 2.6rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .progress-bar-container {\\n display: flex;\\n margin: 0.4rem 0;\\n height: 0.7rem;\\n width: 100%; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .progress-bar-container .progress-bar {\\n flex: 1 0 auto; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .progress-bar-container .progress-bar .fill {\\n height: 100%; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .progress-bar-container .progress-percent {\\n flex: 0 0 auto;\\n font-size: 1.3rem;\\n line-height: 0.7rem;\\n padding-left: 0.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account:focus {\\n outline: none; }\\n\\n.sidebar-accounts:after {\\n content: '';\\n position: absolute;\\n bottom: 0;\\n left: -3rem;\\n width: calc(100% + 6rem);\\n height: 5rem; }\\n\\n.sidebar-settings {\\n flex: 0 0 auto;\\n padding-bottom: 1rem; }\\n\\n.sidebar-settings .wrap-button {\\n margin: 0 -3rem; }\\n\\n.sidebar-settings .wrap-button button {\\n display: flex;\\n align-items: center;\\n background: transparent;\\n border: none;\\n font-weight: 400;\\n line-height: 3rem;\\n outline: none;\\n padding: 0 3rem;\\n width: 100%; }\\n\\n.sidebar-settings .wrap-button button .icon {\\n margin-right: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.sidebar-settings .wrap-button button .icon.settings {\\n -webkit-mask: url('settings.svg') no-repeat center;\\n mask: url('settings.svg') no-repeat center; }\\n\\n.sidebar-settings .wrap-button button .icon.logout {\\n -webkit-mask: url('logout.svg') no-repeat center;\\n mask: url('logout.svg') no-repeat center; }\\n\\n.sidebar-synchronization-status {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n flex: 0 0 7rem;\\n font-size: 1.3rem; }\\n\\n.sidebar-synchronization-status .status-container {\\n position: relative;\\n flex-grow: 1;\\n text-align: left; }\\n\\n.sidebar-synchronization-status .status-container .offline, .sidebar-synchronization-status .status-container .online {\\n position: relative;\\n display: block;\\n line-height: 1.2rem;\\n padding-left: 2.2rem; }\\n\\n.sidebar-synchronization-status .status-container .offline:before, .sidebar-synchronization-status .status-container .online:before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n border-radius: 50%;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n.sidebar-synchronization-status .status-container .syncing, .sidebar-synchronization-status .status-container .loading {\\n line-height: 4rem; }\\n\\n.sidebar-synchronization-status .status-container .progress-bar-container {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n height: 0.7rem;\\n width: 100%; }\\n\\n.sidebar-synchronization-status .status-container .progress-bar-container .syncing {\\n display: flex; }\\n\\n.sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar {\\n flex: 1 0 auto; }\\n\\n.sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar .fill {\\n height: 100%; }\\n\\n.sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-percent {\\n flex: 0 0 auto;\\n font-size: 1.3rem;\\n line-height: 0.7rem;\\n padding-left: 0.7rem; }\\n\\n.sidebar-synchronization-status .status-container .progress-bar-container .loading {\\n -webkit-animation: move 5s linear infinite;\\n animation: move 5s linear infinite;\\n background-image: -webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.125, rgba(0, 0, 0, 0.15)), color-stop(0.125, transparent), color-stop(0.25, transparent), color-stop(0.25, rgba(0, 0, 0, 0.1)), color-stop(0.375, rgba(0, 0, 0, 0.1)), color-stop(0.375, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(0, 0, 0, 0.15)), color-stop(0.625, rgba(0, 0, 0, 0.15)), color-stop(0.625, transparent), color-stop(0.75, transparent), color-stop(0.75, rgba(0, 0, 0, 0.1)), color-stop(0.875, rgba(0, 0, 0, 0.1)), color-stop(0.875, transparent), to(transparent)), -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.125, rgba(0, 0, 0, 0.3)), color-stop(0.125, transparent), color-stop(0.25, transparent), color-stop(0.25, rgba(0, 0, 0, 0.25)), color-stop(0.375, rgba(0, 0, 0, 0.25)), color-stop(0.375, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(0, 0, 0, 0.3)), color-stop(0.625, rgba(0, 0, 0, 0.3)), color-stop(0.625, transparent), color-stop(0.75, transparent), color-stop(0.75, rgba(0, 0, 0, 0.25)), color-stop(0.875, rgba(0, 0, 0, 0.25)), color-stop(0.875, transparent), to(transparent));\\n background-size: 7rem 7rem;\\n height: 100%; }\\n\\n.sidebar-synchronization-status .update-container {\\n display: flex;\\n flex-grow: 1;\\n margin-left: 1rem;\\n text-align: right; }\\n\\n.sidebar-synchronization-status .update-container .update-text {\\n flex: 1 1 auto;\\n font-size: 1.2rem;\\n line-height: 1.8rem;\\n text-align: left; }\\n\\n.sidebar-synchronization-status .update-container .update-text.time {\\n font-size: 1.1rem; }\\n\\n.sidebar-synchronization-status .update-container .icon {\\n flex: 1 0 auto;\\n margin: 0.3rem 0 0 0.6rem;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n.sidebar-synchronization-status .update-container .icon.update {\\n -webkit-mask: url('update.svg') no-repeat center;\\n mask: url('update.svg') no-repeat center; }\\n\\n.sidebar-synchronization-status .update-container .icon.time {\\n -webkit-mask: url('time.svg') no-repeat center;\\n mask: url('time.svg') no-repeat center; }\\n\\n@-webkit-keyframes move {\\n 0% {\\n background-position: 100% -7rem; }\\n 100% {\\n background-position: 100% 7rem; } }\\n\\n@keyframes move {\\n 0% {\\n background-position: 100% -7rem; }\\n 100% {\\n background-position: 100% 7rem; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2lkZWJhci9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxzaWRlYmFyXFxzaWRlYmFyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0Qiw4QkFBOEI7RUFDOUIsZUFBZTtFQUNmLGVBQWU7RUFDZixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxrQkFBa0I7RUFDbEIsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixjQUFjLEVBQUE7O0FBSmhCO0lBT0ksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQiw4QkFBOEI7SUFDOUIsY0FBYztJQUNkLFlBQVk7SUFDWixnQkFBZ0IsRUFBQTs7QUFacEI7TUFlTSxpQkFBaUIsRUFBQTs7QUFmdkI7TUFtQk0sdUJBQXVCO01BQ3ZCLFlBQVk7TUFDWixhQUFhLEVBQUE7O0FBckJuQjtJQTBCSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLGNBQWM7SUFDZCxlQUFlO0lBQ2YsbUJBQW1CLEVBQUE7O0FBOUJ2QjtNQWlDTSxhQUFhO01BQ2Isc0JBQXNCO01BQ3RCLGNBQWM7TUFDZCxlQUFlO01BQ2Ysa0JBQWtCLEVBQUE7O0FBckN4QjtRQXdDUSxhQUFhO1FBQ2IsbUJBQW1CO1FBQ25CLDhCQUE4QixFQUFBOztBQTFDdEM7VUE2Q1UsbUJBQW1CLEVBQUE7O0FBN0M3QjtZQWdEWSxpQkFBaUI7WUFDakIsdUJBQXVCO1lBQ3ZCLGdCQUFnQjtZQUNoQixtQkFBbUIsRUFBQTs7QUFuRC9CO1lBdURZLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIsbUJBQW1CLEVBQUE7O0FBekQvQjtVQThEVSxpQkFBaUI7VUFDakIsbUJBQW1CO1VBQ25CLHFCQUFxQixFQUFBOztBQWhFL0I7WUFtRVksYUFBYTtZQUNiLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLG1CQUFtQjtZQUNu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ekIsYUFBYTtNQUNiLGNBQWMsRUFBQTs7QUEvR3BCO1FBa0hRLGdEQUF5RDtnQkFBekQsd0NBQXlELEVBQUE7O0FBbEhqRTtRQXNIUSw4Q0FBdUQ7Z0JBQXZELHNDQUF1RCxFQUFBOztBQU0vRDtFQUNFO0lBQ0UsK0JBQStCLEVBQUE7RUFFakM7SUFDRSw4QkFBOEIsRUFBQSxFQUFBOztBQUxsQztFQUNFO0lBQ0UsK0JBQStCLEVBQUE7RUFFakM7SUFDRSw4QkFBOEIsRUFBQSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgZmxleDogMCAwIDI1cmVtO1xyXG4gIHBhZGRpbmc6IDAgM3JlbTtcclxuICBtYXgtd2lkdGg6IDI1cmVtO1xyXG59XHJcblxyXG4uc2lkZWJhci1hY2NvdW50cyB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBmbGV4OiAxIDEgYXV0bztcclxuXHJcbiAgLnNpZGViYXItYWNjb3VudHMtaGVhZGVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgZmxleDogMCAwIGF1dG87XHJcbiAgICBoZWlnaHQ6IDhyZW07XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG5cclxuICAgIGgzIHtcclxuICAgICAgZm9udC1zaXplOiAxLjdyZW07XHJcbiAgICB9XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zaWRlYmFyLWFjY291bnRzLWxpc3Qge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBmbGV4OiAxIDEgYXV0bztcclxuICAgIG1hcmdpbjogMCAtM3JlbTtcclxuICAgIG92ZXJmbG93LXk6IG92ZXJsYXk7XHJcblxyXG4gICAgLnNpZGViYXItYWNjb3VudCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDJyZW0gM3JlbTtcclxuXHJcbiAgICAgIC5zaWRlYmFyLWFjY291bnQtcm93IHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cclxuICAgICAgICAmLmFjY291bnQtdGl0bGUtYmFsYW5jZSB7XHJcbiAgICAgICAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG5cclxuICAgICAgICAgIC50aXRsZSB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuYmFsYW5jZSB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS44cmVtO1xyXG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5hY2NvdW50LWFsaWFzIHtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDMuNHJlbTtcclxuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuN3JlbTtcclxuXHJcbiAgICAgICAgICAubmFtZSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAxO1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS42cmVtO1xyXG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xyXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAgICAgICAgICAgc3BhbiB7XHJcbiAgICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLnByaWNlIHtcclxuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLmljb24ge1xyXG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMC41cmVtO1xyXG4gICAgICAgICAgICB3aWR0aDogMS4ycmVtO1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDEuMnJlbTtcclxuXHJcbiAgICAgICAgICAgICYuY29tbWVudCB7XHJcbiAgICAgICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9hbGVydC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuYWNjb3VudC1zdGFraW5nIHtcclxuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyLjlyZW07XHJcblxyXG4gICAgICAgICAgLnRleHQge1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuYWNjb3VudC1tZXNzYWdlcyB7XHJcbiAgICAgICAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG5cclxuICAgICAgICAgIC50ZXh0IHtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLmluZGljYXRvciB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDFyZW07XHJcbiAgICAgICAgICAgIG1pbi13aWR0aDogMi40cmVtO1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDEuNnJlbTtcclxuICAgICAgICAgICAgcGFkZGluZzogMCAwLjVyZW07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcclxuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAgICBoZWlnaHQ6IDUuNnJlbTtcclxuXHJcbiAgICAgICAgICAuc3RhdHVzIHtcclxuICAgICAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyLjZyZW07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICBtYXJnaW46IDAuNHJlbSAwO1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDAuN3JlbTtcclxuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICAgICAgICAgICAucHJvZ3Jlc3MtYmFyIHtcclxuICAgICAgICAgICAgICBmbGV4OiAxIDAgYXV0bztcclxuXHJcbiAgICAgICAgICAgICAgLmZpbGwge1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLnByb2dyZXNzLXBlcmNlbnQge1xyXG4gICAgICAgICAgICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAwLjdyZW07XHJcbiAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjdyZW07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6Zm9jdXMge1xyXG4gICAgICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICY6YWZ0ZXIge1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICBsZWZ0OiAtM3JlbTtcclxuICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA2cmVtKTtcclxuICAgIGhlaWdodDogNXJlbTtcclxuICB9XHJcbn1cclxuXHJcbi5zaWRlYmFyLXNldHRpbmdzIHtcclxuICBmbGV4OiAwIDAgYXV0bztcclxuICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcclxuXHJcbiAgLndyYXAtYnV0dG9uIHtcclxuICAgIG1hcmdpbjogMCAtM3JlbTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgICBsaW5lLWhlaWdodDogM3JlbTtcclxuICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgICAgcGFkZGluZzogMCAzcmVtO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgIC5pY29uIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEuMnJlbTtcclxuICAgICAgICB3aWR0aDogMS43cmVtO1xyXG4gICAgICAgIGhlaWdodDogMS43cmVtO1xyXG5cclxuICAgICAgICAmLnNldHRpbmdzIHtcclxuICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvc2V0dGluZ3Muc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5sb2dvdXQge1xyXG4gICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9sb2dvdXQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICBmbGV4OiAwIDAgN3JlbTtcclxuICBmb250LXNpemU6IDEuM3JlbTtcclxuXHJcbiAgLnN0YXR1cy1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuXHJcbiAgICAub2ZmbGluZSwgLm9ubGluZSB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjJyZW07XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMi4ycmVtO1xyXG5cclxuICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB0b3A6IDA7XHJcbiAgICAgICAgbGVmdDogMDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgICAgd2lkdGg6IDEuMnJlbTtcclxuICAgICAgICBoZWlnaHQ6IDEuMnJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5zeW5jaW5nLCAubG9hZGluZyB7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiA0cmVtO1xyXG4gICAgfVxyXG5cclxuICAgIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IDA7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIGhlaWdodDogMC43cmVtO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgIC5zeW5jaW5nIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG5cclxuICAgICAgICAucHJvZ3Jlc3MtYmFyIHtcclxuICAgICAgICAgIGZsZXg6IDEgMCBhdXRvO1xyXG5cclxuICAgICAgICAgIC5maWxsIHtcclxuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnByb2dyZXNzLXBlcmNlbnQge1xyXG4gICAgICAgICAgZmxleDogMCAwIGF1dG87XHJcbiAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAwLjdyZW07XHJcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuN3JlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5sb2FkaW5nIHtcclxuICAgICAgICBhbmltYXRpb246IG1vdmUgNXMgbGluZWFyIGluZmluaXRlO1xyXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6XHJcbiAgICAgICAgICAtd2Via2l0LWdyYWRpZW50KFxyXG4gICAgICAgICAgICAgIGxpbmVhciwgMCAwLCAxMDAlIDEwMCUsXHJcbiAgICAgICAgICAgICAgY29sb3Itc3RvcCguMTI1LCByZ2JhKDAsIDAsIDAsIC4xNSkpLCBjb2xvci1zdG9wKC4xMjUsIHRyYW5zcGFyZW50KSxcclxuICAgICAgICAgICAgICBjb2xvci1zdG9wKC4yNTAsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCguMjUwLCByZ2JhKDAsIDAsIDAsIC4xMCkpLFxyXG4gICAgICAgICAgICAgIGNvbG9yLXN0b3AoLjM3NSwgcmdiYSgwLCAwLCAwLCAuMTApKSwgY29sb3Itc3RvcCguMzc1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgICAgY29sb3Itc3RvcCguNTAwLCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoLjUwMCwgcmdiYSgwLCAwLCAwLCAuMTUpKSxcclxuICAgICAgICAgICAgICBjb2xvci1zdG9wKC42MjUsIHJnYmEoMCwgMCwgMCwgLjE1KSksIGNvbG9yLXN0b3AoLjYyNSwgdHJhbnNwYXJlbnQpLFxyXG4gICAgICAgICAgICAgIGNvbG9yLXN0b3AoLjc1MCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC43NTAsIHJnYmEoMCwgMCwgMCwgLjEwKSksXHJcbiAgICAgICAgICAgICAgY29sb3Itc3RvcCguODc1LCByZ2JhKDAsIDAsIDAsIC4xMCkpLCBjb2xvci1zdG9wKC44NzUsIHRyYW5zcGFyZW50KSxcclxuICAgICAgICAgICAgICB0byh0cmFuc3BhcmVudClcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICAtd2Via2l0LWdyYWRpZW50KFxyXG4gICAgICAgICAgICAgIGxpbmVhciwgMCAxMDAlLCAxMDAlIDAsXHJcbiAgICAgICAgICAgICAgY29sb3Itc3RvcCguMTI1LCByZ2JhKDAsIDAsIDAsIC4zMCkpLCBjb2xvci1zdG9wKC4xMjUsIHRyYW5zcGFyZW50KSxcclxuICAgICAgICAgICAgICBjb2xvci1zdG9wKC4yNTAsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCguMjUwLCByZ2JhKDAsIDAsIDAsIC4yNSkpLFxyXG4gICAgICAgICAgICAgIGNvbG9yLXN0b3AoLjM3NSwgcmdiYSgwLCAwLCAwLCAuMjUpKSwgY29sb3Itc3RvcCguMzc1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgICAgY29sb3Itc3RvcCguNTAwLCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoLjUwMCwgcmdiYSgwLCAwLCAwLCAuMzApKSxcclxuICAgICAgICAgICAgICBjb2xvci1zdG9wKC42MjUsIHJnYmEoMCwgMCwgMCwgLjMwKSksIGNvbG9yLXN0b3AoLjYyNSwgdHJhbnNwYXJlbnQpLFxyXG4gICAgICAgICAgICAgIGNvbG9yLXN0b3AoLjc1MCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC43NTAsIHJnYmEoMCwgMCwgMCwgLjI1KSksXHJcbiAgICAgICAgICAgICAgY29sb3Itc3RvcCguODc1LCByZ2JhKDAsIDAsIDAsIC4yNSkpLCBjb2xvci1zdG9wKC44NzUsIHRyYW5zcGFyZW50KSxcclxuICAgICAgICAgICAgICB0byh0cmFuc3BhcmVudClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiA3cmVtIDdyZW07XHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudXBkYXRlLWNvbnRhaW5lciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07XHJcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuXHJcbiAgICAudXBkYXRlLXRleHQge1xyXG4gICAgICBmbGV4OiAxIDEgYXV0bztcclxuICAgICAgZm9udC1zaXplOiAxLjJyZW07XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjhyZW07XHJcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcblxyXG4gICAgICAmLnRpbWUge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBmbGV4OiAxIDAgYXV0bztcclxuICAgICAgbWFyZ2luOiAwLjNyZW0gMCAwIDAuNnJlbTtcclxuICAgICAgd2lkdGg6IDEuMnJlbTtcclxuICAgICAgaGVpZ2h0OiAxLjJyZW07XHJcblxyXG4gICAgICAmLnVwZGF0ZSB7XHJcbiAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy91cGRhdGUuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnRpbWUge1xyXG4gICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvdGltZS5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgbW92ZSB7XHJcbiAgMCUge1xyXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAtN3JlbTtcclxuICB9XHJcbiAgMTAwJSB7XHJcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDdyZW07XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnInit, OnDestroy} from '@angular/core';\r\nimport {ActivatedRoute, NavigationStart, Router} from '@angular/router';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\n\r\n@Component({\r\n selector: 'app-sidebar',\r\n templateUrl: './sidebar.component.html',\r\n styleUrls: ['./sidebar.component.scss']\r\n})\r\nexport class SidebarComponent implements OnInit, OnDestroy {\r\n walletSubRouting;\r\n\r\n walletActive: number;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n public variablesService: VariablesService,\r\n private backend: BackendService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n if (this.router.url.indexOf('/wallet/') !== -1) {\r\n const localPathArr = this.router.url.split('/');\r\n if (localPathArr.length >= 3) {\r\n this.walletActive = parseInt(localPathArr[2], 10);\r\n }\r\n } else if (this.router.url.indexOf('/details') !== -1) {\r\n this.walletActive = this.variablesService.currentWallet.wallet_id;\r\n } else {\r\n this.walletActive = null;\r\n }\r\n\r\n this.walletSubRouting = this.router.events.subscribe((event) => {\r\n if (event instanceof NavigationStart) {\r\n if (event.url.indexOf('/wallet/') !== -1) {\r\n const localPathArr = event.url.split('/');\r\n if (localPathArr.length >= 3) {\r\n this.walletActive = parseInt(localPathArr[2], 10);\r\n }\r\n } else if (event.url.indexOf('/details') !== -1) {\r\n this.walletActive = this.variablesService.currentWallet.wallet_id;\r\n } else {\r\n this.walletActive = null;\r\n }\r\n }\r\n });\r\n }\r\n\r\n getUpdate() {\r\n this.backend.openUrlInBrowser('zano.org/downloads.html');\r\n }\r\n\r\n logOut() {\r\n this.variablesService.stopCountdown();\r\n this.variablesService.appLogin = false;\r\n this.variablesService.appPass = '';\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/login'], {queryParams: {type: 'auth'}});\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.walletSubRouting.unsubscribe();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n {{ 'STAKING.TITLE' | translate }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'STAKING.TITLE_PENDING' | translate }}\\r\\n {{pending.total | intToMoney}} {{variablesService.defaultCurrency}}\\r\\n
\\r\\n
\\r\\n {{ 'STAKING.TITLE_TOTAL' | translate }}\\r\\n {{total | intToMoney}} {{variablesService.defaultCurrency}}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{selectedDate.date | date : 'MMM. EEEE, dd, yyyy'}}\\r\\n {{selectedDate.amount}} {{variablesService.defaultCurrency}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'STAKING.TITLE_PERIOD' | translate }}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ 'STAKING.TITLE_GROUP' | translate }}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n width: 100%; }\\n\\n.chart-header {\\n display: flex;\\n flex: 0 0 auto; }\\n\\n.chart-header .general {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n justify-content: center;\\n flex-grow: 1;\\n font-size: 1.3rem;\\n margin: -0.5rem 0; }\\n\\n.chart-header .general > div {\\n display: flex;\\n align-items: center;\\n margin: 0.5rem 0;\\n height: 2rem; }\\n\\n.chart-header .general > div .label {\\n display: inline-block;\\n width: 9rem; }\\n\\n.chart-header .selected {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-end;\\n justify-content: center;\\n flex-grow: 1;\\n font-size: 1.8rem; }\\n\\n.chart-header .selected span {\\n line-height: 2.9rem; }\\n\\n.chart {\\n position: relative;\\n display: flex;\\n align-items: center;\\n flex: 1 1 auto;\\n min-height: 40rem; }\\n\\n.chart > div {\\n position: absolute;\\n width: 100%;\\n height: 100%; }\\n\\n.chart-options {\\n display: flex;\\n align-items: center;\\n height: 2.4rem;\\n flex: 0 0 auto; }\\n\\n.chart-options .title {\\n font-size: 1.3rem;\\n padding: 0 1rem; }\\n\\n.chart-options .title:first-child {\\n padding-left: 0; }\\n\\n.chart-options .options {\\n display: flex;\\n justify-content: space-between;\\n flex-grow: 1;\\n height: 100%; }\\n\\n.chart-options .options button {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex: 1 1 auto;\\n cursor: pointer;\\n font-size: 1.3rem;\\n margin: 0 0.1rem;\\n padding: 0;\\n height: 100%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc3Rha2luZy9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxzdGFraW5nXFxzdGFraW5nLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxhQUFhO0VBQ2IsY0FBYyxFQUFBOztBQUZoQjtJQUtJLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsdUJBQXVCO0lBQ3ZCLHVCQUF1QjtJQUN2QixZQUFZO0lBQ1osaUJBQWlCO0lBQ2pCLGlCQUFpQixFQUFBOztBQVhyQjtNQWNNLGFBQWE7TUFDYixtQkFBbUI7TUFDbkIsZ0JBQWdCO01BQ2hCLFlBQVksRUFBQTs7QUFqQmxCO1FBb0JRLHFCQUFxQjtRQUNyQixXQUFXLEVBQUE7O0FBckJuQjtJQTJCSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLHFCQUFxQjtJQUNyQix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGlCQUFpQixFQUFBOztBQWhDckI7TUFtQ00sbUJBQW1CLEVBQUE7O0FBS3pCO0VBQ0Usa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsY0FBYztFQUNkLGlCQUFpQixFQUFBOztBQUxuQjtJQVFJLGtCQUFrQjtJQUNsQixXQUFXO0lBQ1gsWUFBWSxFQUFBOztBQUloQjtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsY0FBYztFQUNkLGNBQWMsRUFBQTs7QUFKaEI7SUFPSSxpQkFBaUI7SUFDakIsZUFBZSxFQUFBOztBQVJuQjtNQVdNLGVBQWUsRUFBQTs7QUFYckI7SUFnQkksYUFBYTtJQUNiLDhCQUE4QjtJQUM5QixZQUFZO0lBQ1osWUFBWSxFQUFBOztBQW5CaEI7TUFzQk0sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsY0FBYztNQUNkLGVBQWU7TUFDZixpQkFBaUI7TUFDakIsZ0JBQWdCO01BQ2hCLFVBQVU7TUFDVixZQUFZLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zdGFraW5nL3N0YWtpbmcuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uY2hhcnQtaGVhZGVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG5cclxuICAuZ2VuZXJhbCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbjogLTAuNXJlbSAwO1xyXG5cclxuICAgID4gZGl2IHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgbWFyZ2luOiAwLjVyZW0gMDtcclxuICAgICAgaGVpZ2h0OiAycmVtO1xyXG5cclxuICAgICAgLmxhYmVsIHtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgd2lkdGg6IDlyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zZWxlY3RlZCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gICAgZm9udC1zaXplOiAxLjhyZW07XHJcblxyXG4gICAgc3BhbiB7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjlyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uY2hhcnQge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZmxleDogMSAxIGF1dG87XHJcbiAgbWluLWhlaWdodDogNDByZW07XHJcblxyXG4gID4gZGl2IHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gIH1cclxufVxyXG5cclxuLmNoYXJ0LW9wdGlvbnMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBoZWlnaHQ6IDIuNHJlbTtcclxuICBmbGV4OiAwIDAgYXV0bztcclxuXHJcbiAgLnRpdGxlIHtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgcGFkZGluZzogMCAxcmVtO1xyXG5cclxuICAgICY6Zmlyc3QtY2hpbGR7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5vcHRpb25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICBtYXJnaW46IDAgMC4xcmVtO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnInit, OnDestroy} from '@angular/core';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {Chart} from 'angular-highcharts';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport {IntToMoneyPipe} from '../_helpers/pipes/int-to-money.pipe';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Component({\r\n selector: 'app-staking',\r\n templateUrl: './staking.component.html',\r\n styleUrls: ['./staking.component.scss']\r\n})\r\nexport class StakingComponent implements OnInit, OnDestroy {\r\n\r\n parentRouting;\r\n heightAppEvent;\r\n refreshStackingEvent;\r\n\r\n periods = [\r\n {\r\n title: this.translate.instant('STAKING.PERIOD.WEEK1'),\r\n key: '1 week',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.PERIOD.WEEK2'),\r\n key: '2 week',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.PERIOD.MONTH1'),\r\n key: '1 month',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.PERIOD.MONTH3'),\r\n key: '3 month',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.PERIOD.MONTH6'),\r\n key: '6 month',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.PERIOD.YEAR'),\r\n key: '1 year',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.PERIOD.ALL'),\r\n key: 'All',\r\n active: true\r\n }\r\n ];\r\n\r\n groups = [\r\n {\r\n title: this.translate.instant('STAKING.GROUP.DAY'),\r\n key: 'day',\r\n active: true\r\n },\r\n {\r\n title: this.translate.instant('STAKING.GROUP.WEEK'),\r\n key: 'week',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.GROUP.MONTH'),\r\n key: 'month',\r\n active: false\r\n }\r\n ];\r\n\r\n selectedDate = {\r\n date: null,\r\n amount: null\r\n };\r\n\r\n originalData = [];\r\n\r\n chart: Chart;\r\n\r\n total = new BigNumber(0);\r\n pending = {\r\n list: [],\r\n total: new BigNumber(0)\r\n };\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private variablesService: VariablesService,\r\n private backend: BackendService,\r\n private ngZone: NgZone,\r\n private intToMoneyPipe: IntToMoneyPipe,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n static makeGroupTime(key, date) {\r\n if (key === 'day') {\r\n return date.setHours(0, 0, 0, 0);\r\n } else if (key === 'week') {\r\n return new Date(date.setDate(date.getDate() - date.getDay())).setHours(0, 0, 0, 0);\r\n } else {\r\n return new Date(date.setDate(1)).setHours(0, 0, 0, 0);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(() => {\r\n this.getMiningHistory();\r\n });\r\n this.heightAppEvent = this.variablesService.getHeightAppEvent.subscribe((newHeight: number) => {\r\n if (!this.pending.total.isZero()) {\r\n const pendingCount = this.pending.list.length;\r\n for (let i = pendingCount - 1; i >= 0; i--) {\r\n if (newHeight - this.pending.list[i].h >= 10) {\r\n this.pending.list.splice(i, 1);\r\n }\r\n }\r\n if (pendingCount !== this.pending.list.length) {\r\n this.pending.total = new BigNumber(0);\r\n for (let i = 0; i < this.pending.list.length; i++) {\r\n this.pending.total = this.pending.total.plus(this.pending.list[i].a);\r\n }\r\n }\r\n }\r\n });\r\n this.refreshStackingEvent = this.variablesService.getRefreshStackingEvent.subscribe((wallet_id: number) => {\r\n if (this.variablesService.currentWallet.wallet_id === wallet_id) {\r\n this.getMiningHistory();\r\n }\r\n });\r\n }\r\n\r\n\r\n drawChart(data) {\r\n this.chart = new Chart({\r\n title: {text: ''},\r\n credits: {enabled: false},\r\n exporting: {enabled: false},\r\n legend: {enabled: false},\r\n chart: {\r\n type: 'line',\r\n backgroundColor: 'transparent',\r\n height: null,\r\n zoomType: null,\r\n events: {\r\n load: () => {\r\n this.changePeriod();\r\n }\r\n }\r\n },\r\n\r\n yAxis: {\r\n min: 0,\r\n tickAmount: 5,\r\n title: {\r\n text: ''\r\n },\r\n gridLineColor: '#2b3644',\r\n gridLineWidth: 2,\r\n lineColor: '#2b3644',\r\n lineWidth: 2,\r\n tickWidth: 2,\r\n tickLength: 120,\r\n tickColor: '#2b3644',\r\n labels: {\r\n y: -8,\r\n align: 'left',\r\n x: -120,\r\n style: {\r\n 'color': '#e0e0e0',\r\n 'fontSize': '13px'\r\n },\r\n format: '{value} ' + this.variablesService.defaultCurrency\r\n },\r\n showLastLabel: false,\r\n },\r\n\r\n xAxis: {\r\n type: 'datetime',\r\n gridLineColor: '#2b3644',\r\n lineColor: '#2b3644',\r\n lineWidth: 2,\r\n tickWidth: 2,\r\n tickLength: 10,\r\n tickColor: '#2b3644',\r\n labels: {\r\n style: {\r\n 'color': '#e0e0e0',\r\n 'fontSize': '13px'\r\n }\r\n },\r\n minPadding: 0,\r\n maxPadding: 0,\r\n minRange: 86400000,\r\n // tickInterval: 86400000,\r\n minTickInterval: 3600000,\r\n },\r\n\r\n tooltip: {\r\n enabled: false\r\n },\r\n\r\n plotOptions: {\r\n area: {\r\n fillColor: {\r\n linearGradient: {\r\n x1: 0,\r\n y1: 0,\r\n x2: 0,\r\n y2: 1\r\n },\r\n stops: [\r\n [0, 'rgba(124,181,236,0.2)'],\r\n [1, 'rgba(124,181,236,0)']\r\n ]\r\n },\r\n marker: {\r\n enabled: false,\r\n radius: 2\r\n },\r\n lineWidth: 2,\r\n threshold: null\r\n },\r\n\r\n series: {\r\n point: {\r\n events: {\r\n mouseOver: (obj) => {\r\n this.selectedDate.date = obj.target['x'];\r\n this.selectedDate.amount = obj.target['y'];\r\n }\r\n }\r\n },\r\n events: {\r\n mouseOut: () => {\r\n this.selectedDate.date = null;\r\n this.selectedDate.amount = null;\r\n }\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: 'area',\r\n data: data\r\n }\r\n ]\r\n });\r\n }\r\n\r\n\r\n getMiningHistory() {\r\n if (this.variablesService.currentWallet.loaded) {\r\n this.backend.getMiningHistory(this.variablesService.currentWallet.wallet_id, (status, data) => {\r\n this.total = new BigNumber(0);\r\n this.pending.list = [];\r\n this.pending.total = new BigNumber(0);\r\n this.originalData = [];\r\n if (data.mined_entries) {\r\n data.mined_entries.forEach((item, key) => {\r\n if (item.t.toString().length === 10) {\r\n data.mined_entries[key].t = (new Date(item.t * 1000)).setUTCMilliseconds(0);\r\n }\r\n });\r\n data.mined_entries.forEach((item) => {\r\n this.total = this.total.plus(item.a);\r\n if (this.variablesService.height_app - item.h < 10) {\r\n this.pending.list.push(item);\r\n this.pending.total = this.pending.total.plus(item.a);\r\n }\r\n this.originalData.push([parseInt(item.t, 10), parseFloat(this.intToMoneyPipe.transform(item.a))]);\r\n });\r\n this.originalData = this.originalData.sort(function (a, b) {\r\n return a[0] - b[0];\r\n });\r\n }\r\n this.ngZone.run(() => {\r\n this.drawChart([]);\r\n });\r\n });\r\n }\r\n }\r\n\r\n changePeriod(period?) {\r\n if (period) {\r\n this.periods.forEach((p) => {\r\n p.active = false;\r\n });\r\n period.active = true;\r\n } else {\r\n period = this.periods.find((p) => p.active);\r\n }\r\n\r\n const d = new Date();\r\n let min = null;\r\n const newData = [];\r\n\r\n const group = this.groups.find((g) => g.active);\r\n\r\n if (period.key === '1 week') {\r\n this.originalData.forEach((item) => {\r\n const time = StakingComponent.makeGroupTime(group.key, new Date(item[0]));\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear(), d.getMonth(), d.getDate() - 7, 0, 0, 0, 0);\r\n } else if (period.key === '2 week') {\r\n this.originalData.forEach((item) => {\r\n const time = StakingComponent.makeGroupTime(group.key, new Date(item[0]));\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear(), d.getMonth(), d.getDate() - 14, 0, 0, 0, 0);\r\n } else if (period.key === '1 month') {\r\n this.originalData.forEach((item) => {\r\n const time = StakingComponent.makeGroupTime(group.key, new Date(item[0]));\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear(), d.getMonth() - 1, d.getDate(), 0, 0, 0, 0);\r\n } else if (period.key === '3 month') {\r\n this.originalData.forEach((item) => {\r\n const time = StakingComponent.makeGroupTime(group.key, new Date(item[0]));\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear(), d.getMonth() - 3, d.getDate(), 0, 0, 0, 0);\r\n } else if (period.key === '6 month') {\r\n this.originalData.forEach((item) => {\r\n const time = StakingComponent.makeGroupTime(group.key, new Date(item[0]));\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear(), d.getMonth() - 6, d.getDate(), 0, 0, 0, 0);\r\n } else if (period.key === '1 year') {\r\n this.originalData.forEach((item) => {\r\n const time = StakingComponent.makeGroupTime(group.key, new Date(item[0]));\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear() - 1, d.getMonth(), d.getDate(), 0, 0, 0, 0);\r\n } else {\r\n this.originalData.forEach((item) => {\r\n const time = StakingComponent.makeGroupTime(group.key, new Date(item[0]));\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n }\r\n\r\n this.chart.ref.xAxis[0].setExtremes(min, null);\r\n }\r\n\r\n changeGroup(group) {\r\n this.groups.forEach((g) => {\r\n g.active = false;\r\n });\r\n group.active = true;\r\n this.changePeriod();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n this.heightAppEvent.unsubscribe();\r\n this.refreshStackingEvent.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ wallet.name }}\\r\\n {{ 'BREADCRUMBS.TRANSFER_ALIAS' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
0 && (transferAddressAlias || !transferAddressValid || (transferAddressValid && !permissionSend) || notEnoughMoney)\\\">\\r\\n
\\r\\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.WRONG_ADDRESS' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.ALIAS_EXISTS' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
{{ \\\"TRANSFER_ALIAS.COST\\\" | translate : {value: variablesService.default_fee, currency: variablesService.defaultCurrency} }}
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \".form-transfer {\\n margin: 2.4rem 0; }\\n .form-transfer .alias-name {\\n width: 50%; }\\n .form-transfer .alias-cost {\\n font-size: 1.3rem;\\n margin-top: 2rem; }\\n .form-transfer .wrap-buttons {\\n display: flex;\\n justify-content: space-between;\\n margin: 2.5rem -0.7rem; }\\n .form-transfer .wrap-buttons button {\\n margin: 0 0.7rem;\\n width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdHJhbnNmZXItYWxpYXMvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcdHJhbnNmZXItYWxpYXNcXHRyYW5zZmVyLWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQSIsImZpbGUiOiJzcmMvYXBwL3RyYW5zZmVyLWFsaWFzL3RyYW5zZmVyLWFsaWFzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmZvcm0tdHJhbnNmZXIge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcblxyXG4gIC5hbGlhcy1uYW1lIHtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgfVxyXG5cclxuICAuYWxpYXMtY29zdCB7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbi10b3A6IDJyZW07XHJcbiAgfVxyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcbiAgICAgIHdpZHRoOiAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {Location} from '@angular/common';\r\nimport {Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\n\r\n@Component({\r\n selector: 'app-transfer-alias',\r\n templateUrl: './transfer-alias.component.html',\r\n styleUrls: ['./transfer-alias.component.scss']\r\n})\r\nexport class TransferAliasComponent implements OnInit {\r\n\r\n wallet: Wallet;\r\n alias: any;\r\n transferAddress = '';\r\n transferAddressValid: boolean;\r\n transferAddressAlias: boolean;\r\n permissionSend: boolean;\r\n notEnoughMoney: boolean;\r\n requestProcessing = false;\r\n\r\n constructor(\r\n private location: Location,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.wallet = this.variablesService.currentWallet;\r\n const alias = this.backend.getWalletAlias(this.wallet.address);\r\n this.alias = {\r\n name: alias.name,\r\n address: alias.address,\r\n comment: alias.comment,\r\n tracking_key: alias.tracking_key\r\n };\r\n this.notEnoughMoney = this.wallet.unlocked_balance.isLessThan(this.variablesService.default_fee_big);\r\n }\r\n\r\n changeAddress() {\r\n this.backend.validateAddress(this.transferAddress, status => {\r\n this.transferAddressValid = status;\r\n if (status) {\r\n this.backend.getPoolInfo((statusPool, dataPool) => {\r\n if (dataPool.hasOwnProperty('aliases_que') && dataPool.aliases_que.length) {\r\n this.setStatus(!dataPool.aliases_que.some((el) => el.address === this.transferAddress));\r\n } else {\r\n this.setStatus(status);\r\n }\r\n });\r\n } else {\r\n this.setStatus(false);\r\n }\r\n });\r\n }\r\n\r\n setStatus(statusSet) {\r\n this.permissionSend = statusSet;\r\n if (statusSet) {\r\n this.backend.getAliasByAddress(this.transferAddress, (status) => {\r\n this.ngZone.run(() => {\r\n if (status) {\r\n this.transferAddressAlias = true;\r\n this.permissionSend = false;\r\n } else {\r\n this.transferAddressAlias = false;\r\n }\r\n });\r\n });\r\n } else {\r\n this.ngZone.run(() => {\r\n this.transferAddressAlias = false;\r\n });\r\n }\r\n }\r\n\r\n transferAlias() {\r\n if (this.requestProcessing || !this.permissionSend || !this.transferAddressValid || this.notEnoughMoney) {\r\n return;\r\n }\r\n this.requestProcessing = true;\r\n const newAlias = {\r\n name: this.alias.name,\r\n address: this.transferAddress,\r\n comment: this.alias.comment,\r\n tracking_key: this.alias.tracking_key\r\n };\r\n this.backend.updateAlias(this.wallet.wallet_id, newAlias, this.variablesService.default_fee, (status, data) => {\r\n if (status && data.hasOwnProperty('success') && data.success) {\r\n this.modalService.prepareModal('info', 'TRANSFER_ALIAS.REQUEST_SEND_REG');\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.wallet.wallet_id]);\r\n });\r\n }\r\n this.requestProcessing = false;\r\n });\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n @bitmain\\r\\n
\\r\\n \\r\\n \\r\\n {{ 'COMMON.BACK' | translate }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
10:39
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
11:44
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
12:15
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
13:13
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n width: 100%; }\\n\\n.head {\\n flex: 0 0 auto;\\n box-sizing: content-box;\\n margin: -3rem -3rem 0; }\\n\\n.messages-content {\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n flex-grow: 1; }\\n\\n.messages-content .messages-list {\\n display: flex;\\n flex-direction: column;\\n font-size: 1.3rem;\\n margin: 1rem -3rem;\\n padding: 0 3rem;\\n overflow-y: overlay; }\\n\\n.messages-content .messages-list div {\\n margin: 0.7rem 0; }\\n\\n.messages-content .messages-list div.date {\\n text-align: center; }\\n\\n.messages-content .messages-list div.my, .messages-content .messages-list div.buddy {\\n position: relative;\\n padding: 1.8rem;\\n max-width: 60%; }\\n\\n.messages-content .messages-list div.buddy {\\n align-self: flex-end; }\\n\\n.messages-content .type-message {\\n display: flex;\\n flex: 0 0 auto;\\n width: 100%;\\n height: 4.2rem; }\\n\\n.messages-content .type-message .input-block {\\n width: 100%; }\\n\\n.messages-content .type-message .input-block > textarea {\\n min-height: 4.2rem; }\\n\\n.messages-content .type-message button {\\n flex: 0 0 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdHlwaW5nLW1lc3NhZ2UvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcdHlwaW5nLW1lc3NhZ2VcXHR5cGluZy1tZXNzYWdlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxjQUFjO0VBQ2QsdUJBQXVCO0VBQ3ZCLHFCQUFxQixFQUFBOztBQUd2QjtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsOEJBQThCO0VBQzlCLFlBQVksRUFBQTs7QUFKZDtJQU9JLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixlQUFlO0lBQ2YsbUJBQW1CLEVBQUE7O0FBWnZCO01BZU0sZ0JBQWdCLEVBQUE7O0FBZnRCO1FBa0JRLGtCQUFrQixFQUFBOztBQWxCMUI7UUFzQlEsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixjQUFjLEVBQUE7O0FBeEJ0QjtRQTRCUSxvQkFBb0IsRUFBQTs7QUE1QjVCO0lBa0NJLGFBQWE7SUFDYixjQUFjO0lBQ2QsV0FBVztJQUNYLGNBQWMsRUFBQTs7QUFyQ2xCO01Bd0NNLFdBQVcsRUFBQTs7QUF4Q2pCO1FBMkNRLGtCQUFrQixFQUFBOztBQTNDMUI7TUFnRE0sZUFBZSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvdHlwaW5nLW1lc3NhZ2UvdHlwaW5nLW1lc3NhZ2UuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uaGVhZCB7XHJcbiAgZmxleDogMCAwIGF1dG87XHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XHJcbiAgbWFyZ2luOiAtM3JlbSAtM3JlbSAwO1xyXG59XHJcblxyXG4ubWVzc2FnZXMtY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBmbGV4LWdyb3c6IDE7XHJcblxyXG4gIC5tZXNzYWdlcy1saXN0IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBtYXJnaW46IDFyZW0gLTNyZW07XHJcbiAgICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgICBvdmVyZmxvdy15OiBvdmVybGF5O1xyXG5cclxuICAgIGRpdiB7XHJcbiAgICAgIG1hcmdpbjogMC43cmVtIDA7XHJcblxyXG4gICAgICAmLmRhdGUge1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5teSwgJi5idWRkeSB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIHBhZGRpbmc6IDEuOHJlbTtcclxuICAgICAgICBtYXgtd2lkdGg6IDYwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5idWRkeSB7XHJcbiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC50eXBlLW1lc3NhZ2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDQuMnJlbTtcclxuXHJcbiAgICAuaW5wdXQtYmxvY2sge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgID4gdGV4dGFyZWEge1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IDQuMnJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIGZsZXg6IDAgMCAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiJdfQ== */\"","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-typing-message',\r\n templateUrl: './typing-message.component.html',\r\n styleUrls: ['./typing-message.component.scss']\r\n})\r\nexport class TypingMessageComponent implements OnInit {\r\n\r\n messagesId: number;\r\n private subMessages: any;\r\n\r\n constructor(private route: ActivatedRoute) {\r\n this.route.params.subscribe( params => console.log(params) );\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{variablesService.currentWallet.name}}\\r\\n {{ 'BREADCRUMBS.WALLET_DETAILS' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'WALLET_DETAILS.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'WALLET_DETAILS.FORM_ERRORS.NAME_DUPLICATE' | translate }}\\r\\n
\\r\\n
\\r\\n
= variablesService.maxWalletNameLength\\\">\\r\\n {{ 'WALLET_DETAILS.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
{{ 'WALLET_DETAILS.SEED_PHRASE_HINT' | translate }}
\\r\\n
\\r\\n \\r\\n
{{(index + 1) + '. ' + word}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \".form-details {\\n margin-top: 1.8rem; }\\n .form-details .input-block:first-child {\\n width: 50%; }\\n .form-details .seed-phrase {\\n display: flex;\\n font-size: 1.4rem;\\n line-height: 1.5rem;\\n padding: 1.4rem;\\n width: 100%;\\n height: 8.8rem; }\\n .form-details .seed-phrase .seed-phrase-hint {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n cursor: pointer;\\n width: 100%;\\n height: 100%; }\\n .form-details .seed-phrase .seed-phrase-content {\\n display: flex;\\n flex-direction: column;\\n flex-wrap: wrap;\\n width: 100%;\\n height: 100%; }\\n .form-details .wallet-buttons {\\n display: flex;\\n align-items: center;\\n justify-content: space-between; }\\n .form-details .wallet-buttons button {\\n margin: 2.9rem 0;\\n width: 100%;\\n max-width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvd2FsbGV0LWRldGFpbHMvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcd2FsbGV0LWRldGFpbHNcXHdhbGxldC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7RUFEcEI7SUFNTSxVQUFVLEVBQUE7RUFOaEI7SUFXSSxhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsV0FBVztJQUNYLGNBQWMsRUFBQTtFQWhCbEI7TUFtQk0sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsZUFBZTtNQUNmLFdBQVc7TUFDWCxZQUFZLEVBQUE7RUF4QmxCO01BNEJNLGFBQWE7TUFDYixzQkFBc0I7TUFDdEIsZUFBZTtNQUNmLFdBQVc7TUFDWCxZQUFZLEVBQUE7RUFoQ2xCO0lBcUNJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsOEJBQThCLEVBQUE7RUF2Q2xDO01BMENNLGdCQUFnQjtNQUNoQixXQUFXO01BQ1gsZ0JBQWdCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC93YWxsZXQtZGV0YWlscy93YWxsZXQtZGV0YWlscy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWRldGFpbHMge1xyXG4gIG1hcmdpbi10b3A6IDEuOHJlbTtcclxuXHJcbiAgLmlucHV0LWJsb2NrIHtcclxuXHJcbiAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgd2lkdGg6IDUwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zZWVkLXBocmFzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZm9udC1zaXplOiAxLjRyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xyXG4gICAgcGFkZGluZzogMS40cmVtO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDguOHJlbTtcclxuXHJcbiAgICAuc2VlZC1waHJhc2UtaGludCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlZWQtcGhyYXNlLWNvbnRlbnQge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAud2FsbGV0LWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAyLjlyZW0gMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0= */\"","import {Component, NgZone, OnDestroy, OnInit} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {Router} from '@angular/router';\r\nimport {Location} from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-wallet-details',\r\n templateUrl: './wallet-details.component.html',\r\n styleUrls: ['./wallet-details.component.scss']\r\n})\r\nexport class WalletDetailsComponent implements OnInit, OnDestroy {\r\n seedPhrase = '';\r\n showSeed = false;\r\n\r\n detailsForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, (g: FormControl) => {\r\n for (let i = 0; i < this.variablesService.wallets.length; i++) {\r\n if (g.value === this.variablesService.wallets[i].name) {\r\n if (this.variablesService.wallets[i].wallet_id === this.variablesService.currentWallet.wallet_id) {\r\n return {'same': true};\r\n } else {\r\n return {'duplicate': true};\r\n }\r\n }\r\n }\r\n return null;\r\n }]),\r\n path: new FormControl('')\r\n });\r\n\r\n constructor(\r\n private router: Router,\r\n private backend: BackendService,\r\n public variablesService: VariablesService,\r\n private ngZone: NgZone,\r\n private location: Location\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.showSeed = false;\r\n this.detailsForm.get('name').setValue(this.variablesService.currentWallet.name);\r\n this.detailsForm.get('path').setValue(this.variablesService.currentWallet.path);\r\n this.backend.getSmartWalletInfo(this.variablesService.currentWallet.wallet_id, (status, data) => {\r\n if (data.hasOwnProperty('restore_key')) {\r\n this.ngZone.run(() => {\r\n this.seedPhrase = data['restore_key'].trim();\r\n });\r\n }\r\n });\r\n }\r\n\r\n showSeedPhrase() {\r\n this.showSeed = true;\r\n }\r\n\r\n onSubmitEdit() {\r\n if (this.detailsForm.value) {\r\n this.variablesService.currentWallet.name = this.detailsForm.get('name').value;\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.variablesService.currentWallet.wallet_id]);\r\n });\r\n }\r\n }\r\n\r\n closeWallet() {\r\n this.backend.closeWallet(this.variablesService.currentWallet.wallet_id, () => {\r\n for (let i = this.variablesService.wallets.length - 1; i >= 0; i--) {\r\n if (this.variablesService.wallets[i].wallet_id === this.variablesService.currentWallet.wallet_id) {\r\n this.variablesService.wallets.splice(i, 1);\r\n }\r\n }\r\n this.ngZone.run(() => {\r\n if (this.variablesService.wallets.length) {\r\n this.variablesService.currentWallet = this.variablesService.wallets[0];\r\n this.router.navigate(['/wallet/' + this.variablesService.currentWallet.wallet_id]);\r\n } else {\r\n this.router.navigate(['/']);\r\n }\r\n });\r\n if (this.variablesService.appPass) {\r\n this.backend.storeSecureAppData();\r\n }\r\n });\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n ngOnDestroy() {}\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n

{{variablesService.currentWallet.name}}

\\r\\n \\r\\n
\\r\\n {{variablesService.currentWallet.alias['name']}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{variablesService.currentWallet.address}}\\r\\n \\r\\n
\\r\\n
\\r\\n {{variablesService.currentWallet.balance | intToMoney : '3'}} {{variablesService.defaultCurrency}}\\r\\n $ {{variablesService.currentWallet.getMoneyEquivalent(variablesService.moneyEquivalent) | intToMoney | number : '1.2-2'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n {{ tab.title | translate }}\\r\\n {{variablesService.currentWallet.new_contracts}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\"","module.exports = \":host {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n padding: 0 3rem 3rem;\\n min-width: 95rem;\\n width: 100%;\\n height: 100%; }\\n\\n.header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n flex: 0 0 auto;\\n height: 8rem; }\\n\\n.header > div {\\n display: flex;\\n align-items: center; }\\n\\n.header > div :not(:last-child) {\\n margin-right: 3.2rem; }\\n\\n.header h3 {\\n font-size: 1.7rem;\\n font-weight: 600;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n max-width: 50rem;\\n line-height: 2.7rem; }\\n\\n.header button {\\n display: flex;\\n align-items: center;\\n background: transparent;\\n border: none;\\n cursor: pointer;\\n font-weight: 400;\\n outline: none;\\n padding: 0; }\\n\\n.header button .icon {\\n margin-right: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.header button .icon.account {\\n -webkit-mask: url('account.svg') no-repeat center;\\n mask: url('account.svg') no-repeat center; }\\n\\n.header button .icon.lock {\\n -webkit-mask: url('lock.svg') no-repeat center;\\n mask: url('lock.svg') no-repeat center; }\\n\\n.header button .icon.details {\\n -webkit-mask: url('details-settings.svg') no-repeat center;\\n mask: url('details-settings.svg') no-repeat center;\\n margin-right: 0; }\\n\\n.header button .icon.close-wallet {\\n -webkit-mask: url('close-wallet.svg') no-repeat center;\\n mask: url('close-wallet.svg') no-repeat center;\\n margin-right: 0; }\\n\\n.header .alias {\\n display: flex;\\n align-items: center;\\n font-size: 1.3rem; }\\n\\n.header .alias .icon {\\n cursor: pointer;\\n margin-right: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.header .alias .icon.edit {\\n -webkit-mask: url('details.svg') no-repeat center;\\n mask: url('details.svg') no-repeat center; }\\n\\n.header .alias .icon.transfer {\\n -webkit-mask: url('send.svg') no-repeat center;\\n mask: url('send.svg') no-repeat center; }\\n\\n.address {\\n display: flex;\\n align-items: center;\\n flex: 0 0 auto;\\n font-size: 1.4rem;\\n line-height: 1.7rem; }\\n\\n.address .icon {\\n cursor: pointer;\\n margin-left: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.address .icon.copy {\\n -webkit-mask: url('copy.svg') no-repeat center;\\n mask: url('copy.svg') no-repeat center; }\\n\\n.address .icon.copy:hover {\\n opacity: 0.75; }\\n\\n.address .icon.copied {\\n -webkit-mask: url('complete-testwallet.svg') no-repeat center;\\n mask: url('complete-testwallet.svg') no-repeat center; }\\n\\n.balance {\\n display: flex;\\n align-items: flex-end;\\n justify-content: flex-start;\\n flex: 0 0 auto;\\n margin: 2.6rem 0; }\\n\\n.balance :first-child {\\n font-size: 3.3rem;\\n font-weight: 600;\\n line-height: 2.4rem;\\n margin-right: 3.5rem; }\\n\\n.balance :last-child {\\n font-size: 1.8rem;\\n font-weight: 600;\\n line-height: 1.3rem; }\\n\\n.tabs {\\n display: flex;\\n flex-direction: column;\\n flex: 1 1 auto; }\\n\\n.tabs .tabs-header {\\n display: flex;\\n justify-content: space-between;\\n flex: 0 0 auto; }\\n\\n.tabs .tabs-header .tab {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex: 1 0 auto;\\n cursor: pointer;\\n padding: 0 1rem;\\n height: 5rem; }\\n\\n.tabs .tabs-header .tab .icon {\\n margin-right: 1.3rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.tabs .tabs-header .tab .icon.send {\\n -webkit-mask: url('send.svg') no-repeat center;\\n mask: url('send.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.receive {\\n -webkit-mask: url('receive.svg') no-repeat center;\\n mask: url('receive.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.history {\\n -webkit-mask: url('history.svg') no-repeat center;\\n mask: url('history.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.contracts {\\n -webkit-mask: url('contracts.svg') no-repeat center;\\n mask: url('contracts.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.messages {\\n -webkit-mask: url('message.svg') no-repeat center;\\n mask: url('message.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.staking {\\n -webkit-mask: url('staking.svg') no-repeat center;\\n mask: url('staking.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .indicator {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n border-radius: 1rem;\\n font-size: 1rem;\\n font-weight: 600;\\n margin-left: 1.3rem;\\n padding: 0 0.5rem;\\n min-width: 1.6rem;\\n height: 1.6rem; }\\n\\n.tabs .tabs-header .tab.disabled {\\n cursor: url('not-allowed.svg'), not-allowed; }\\n\\n.tabs .tabs-header .tab:not(:last-child) {\\n margin-right: 0.3rem; }\\n\\n.tabs .tabs-content {\\n display: flex;\\n padding: 3rem;\\n flex: 1 1 auto;\\n overflow-x: hidden;\\n overflow-y: overlay; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvd2FsbGV0L0Q6XFxQcm9qZWN0c1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHdhbGxldFxcd2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsb0JBQW9CO0VBQ3BCLGdCQUFnQjtFQUNoQixXQUFXO0VBQ1gsWUFBWSxFQUFBOztBQUdkO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQiw4QkFBOEI7RUFDOUIsY0FBYztFQUNkLFlBQVksRUFBQTs7QUFMZDtJQVFJLGFBQWE7SUFDYixtQkFBbUIsRUFBQTs7QUFUdkI7TUFZTSxvQkFBb0IsRUFBQTs7QUFaMUI7SUFpQkksaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQix1QkFBdUI7SUFDdkIsZ0JBQWdCO0lBQ2hCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsbUJBQW1CLEVBQUE7O0FBdkJ2QjtJQTJCSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixZQUFZO0lBQ1osZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsVUFBVSxFQUFBOztBQWxDZDtNQXFDTSxvQkFBb0I7TUFDcEIsYUFBYTtNQUNiLGNBQWMsRUFBQTs7QUF2Q3BCO1FBMENRLGlEQUEwRDtnQkFBMUQseUNBQTBELEVBQUE7O0FBMUNsRTtRQThDUSw4Q0FBdUQ7Z0JBQXZELHNDQUF1RCxFQUFBOztBQTlDL0Q7UUFrRFEsMERBQW1FO2dCQUFuRSxrREFBbUU7UUFDbkUsZUFBZSxFQUFBOztBQW5EdkI7UUF1RFEsc0RBQStEO2dCQUEvRCw4Q0FBK0Q7UUFDL0QsZUFBZSxFQUFBOztBQXhEdkI7SUE4REksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixpQkFBaUIsRUFBQTs7QUFoRXJCO01BbUVNLGVBQWU7TUFDZixvQkFBb0I7TUFDcEIsYUFBYTtNQUNiLGNBQWMsRUFBQTs7QUF0RXBCO1FBeUVRLGlEQUEwRDtnQkFBMUQseUNBQTBELEVBQUE7O0FBekVsRTtRQTZFUSw4Q0FBdUQ7Z0JBQXZELHNDQUF1RCxFQUFBOztBQU0vRDtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsY0FBYztFQUNkLGlCQUFpQjtFQUNqQixtQkFBbUIsRUFBQTs7QUFMckI7SUFRSSxlQUFlO0lBQ2YsbUJBQW1CO0lBQ25CLGFBQWE7SUFDYixjQUFjLEVBQUE7O0FBWGxCO01BY00sOENBQXVEO2NBQXZELHNDQUF1RCxFQUFBOztBQWQ3RDtRQWlCUSxhQUFhLEVBQUE7O0FBakJyQjtNQXNCTSw2REFBc0U7Y0FBdEUscURBQXNFLEVBQUE7O0FBSzVFO0VBQ0UsYUFBYTtFQUNiLHFCQUFxQjtFQUNyQiwyQkFBMkI7RUFDM0IsY0FBYztFQUNkLGdCQUFnQixFQUFBOztBQUxsQjtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsbUJBQW1CO0lBQ25CLG9CQUFvQixFQUFBOztBQVh4QjtJQWVJLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsbUJBQW1CLEVBQUE7O0FBSXZCO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixjQUFjLEVBQUE7O0FBSGhCO0lBTUksYUFBYTtJQUNiLDhCQUE4QjtJQUM5QixjQUFjLEVBQUE7O0FBUmxCO01BV00sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsY0FBYztNQUNkLGVBQWU7TUFDZixlQUFlO01BQ2YsWUFBWSxFQUFBOztBQWpCbEI7UUFvQlEsb0JBQW9CO1FBQ3BCLGFBQWE7UUFDYixjQUFjLEVBQUE7O0FBdEJ0QjtVQXlCVSw4Q0FBdUQ7a0JBQXZELHNDQUF1RCxFQUFBOztBQXpCakU7VUE2QlUsaURBQTBEO2tCQUExRCx5Q0FBMEQsRUFBQTs7QUE3QnBFO1VBaUNVLGlEQUEwRDtrQkFBMUQseUNBQTBELEVBQUE7O0FBakNwRTtVQXFDVSxtREFBNEQ7a0JBQTVELDJDQUE0RCxFQUFBOztBQXJDdEU7VUF5Q1UsaURBQTBEO2tCQUExRCx5Q0FBMEQsRUFBQTs7QUF6Q3BFO1VBNkNVLGlEQUEwRDtrQkFBMUQseUNBQTBELEVBQUE7O0FBN0NwRTtRQWtEUSxhQUFhO1FBQ2IsbUJBQW1CO1FBQ25CLHVCQUF1QjtRQUN2QixtQkFBbUI7UUFDbkIsZUFBZTtRQUNmLGdCQUFnQjtRQUNoQixtQkFBbUI7UUFDbkIsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixjQUFjLEVBQUE7O0FBM0R0QjtRQStEUSwyQ0FBNEQsRUFBQTs7QUEvRHBFO1FBbUVRLG9CQUFvQixFQUFBOztBQW5FNUI7SUF5RUksYUFBYTtJQUNiLGFBQWE7SUFDYixjQUFjO0lBQ2Qsa0JBQWtCO0lBQ2xCLG1CQUFtQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvd2FsbGV0L3dhbGxldC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHBhZGRpbmc6IDAgM3JlbSAzcmVtO1xyXG4gIG1pbi13aWR0aDogOTVyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4uaGVhZGVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG4gIGhlaWdodDogOHJlbTtcclxuXHJcbiAgPiBkaXYge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gICAgOm5vdCg6bGFzdC1jaGlsZCkge1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDMuMnJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGgzIHtcclxuICAgIGZvbnQtc2l6ZTogMS43cmVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICBtYXgtd2lkdGg6IDUwcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuN3JlbTtcclxuICB9XHJcblxyXG4gIGJ1dHRvbiB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG5cclxuICAgIC5pY29uIHtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAxLjJyZW07XHJcbiAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgIGhlaWdodDogMS43cmVtO1xyXG5cclxuICAgICAgJi5hY2NvdW50IHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2FjY291bnQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmxvY2sge1xyXG4gICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvbG9jay5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuZGV0YWlscyB7XHJcbiAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9kZXRhaWxzLXNldHRpbmdzLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuY2xvc2Utd2FsbGV0IHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2Nsb3NlLXdhbGxldC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWxpYXMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuXHJcbiAgICAuaWNvbiB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAxLjJyZW07XHJcbiAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgIGhlaWdodDogMS43cmVtO1xyXG5cclxuICAgICAgJi5lZGl0IHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2RldGFpbHMuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnRyYW5zZmVyIHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3NlbmQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYWRkcmVzcyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG4gIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gIC5pY29uIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIG1hcmdpbi1sZWZ0OiAxLjJyZW07XHJcbiAgICB3aWR0aDogMS43cmVtO1xyXG4gICAgaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gICAgJi5jb3B5IHtcclxuICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9jb3B5LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuXHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIG9wYWNpdHk6IDAuNzU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLmNvcGllZCB7XHJcbiAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvY29tcGxldGUtdGVzdHdhbGxldC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYmFsYW5jZSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG4gIG1hcmdpbjogMi42cmVtIDA7XHJcblxyXG4gIDpmaXJzdC1jaGlsZCB7XHJcbiAgICBmb250LXNpemU6IDMuM3JlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMi40cmVtO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAzLjVyZW07XHJcbiAgfVxyXG5cclxuICA6bGFzdC1jaGlsZCB7XHJcbiAgICBmb250LXNpemU6IDEuOHJlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMS4zcmVtO1xyXG4gIH1cclxufVxyXG5cclxuLnRhYnMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBmbGV4OiAxIDEgYXV0bztcclxuXHJcbiAgLnRhYnMtaGVhZGVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmbGV4OiAwIDAgYXV0bztcclxuXHJcbiAgICAudGFiIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGZsZXg6IDEgMCBhdXRvO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDAgMXJlbTtcclxuICAgICAgaGVpZ2h0OiA1cmVtO1xyXG5cclxuICAgICAgLmljb24ge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMS4zcmVtO1xyXG4gICAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgICAgaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gICAgICAgICYuc2VuZCB7XHJcbiAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3NlbmQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5yZWNlaXZlIHtcclxuICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvcmVjZWl2ZS5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmhpc3Rvcnkge1xyXG4gICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9oaXN0b3J5LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuY29udHJhY3RzIHtcclxuICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvY29udHJhY3RzLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYubWVzc2FnZXMge1xyXG4gICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9tZXNzYWdlLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuc3Rha2luZyB7XHJcbiAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3N0YWtpbmcuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmluZGljYXRvciB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XHJcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEuM3JlbTtcclxuICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbTtcclxuICAgICAgICBtaW4td2lkdGg6IDEuNnJlbTtcclxuICAgICAgICBoZWlnaHQ6IDEuNnJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5kaXNhYmxlZCB7XHJcbiAgICAgICAgY3Vyc29yOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL25vdC1hbGxvd2VkLnN2ZyksIG5vdC1hbGxvd2VkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMC4zcmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudGFicy1jb250ZW50IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBwYWRkaW5nOiAzcmVtO1xyXG4gICAgZmxleDogMSAxIGF1dG87XHJcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XHJcbiAgICBvdmVyZmxvdy15OiBvdmVybGF5O1xyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, OnInit, OnDestroy, NgZone, ViewChild, ElementRef} from '@angular/core';\r\nimport {ActivatedRoute, Router, RoutesRecognized} from '@angular/router';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {IntToMoneyPipe} from '../_helpers/pipes/int-to-money.pipe';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-wallet',\r\n templateUrl: './wallet.component.html',\r\n styleUrls: ['./wallet.component.scss']\r\n})\r\nexport class WalletComponent implements OnInit, OnDestroy {\r\n subRouting1;\r\n subRouting2;\r\n walletID;\r\n copyAnimation = false;\r\n copyAnimationTimeout;\r\n balanceTooltip;\r\n\r\n @ViewChild('scrolledContent') private scrolledContent: ElementRef;\r\n\r\n tabs = [\r\n {\r\n title: 'WALLET.TABS.HISTORY',\r\n icon: 'history',\r\n link: '/history',\r\n indicator: false,\r\n active: true\r\n },\r\n {\r\n title: 'WALLET.TABS.SEND',\r\n icon: 'send',\r\n link: '/send',\r\n indicator: false,\r\n active: false\r\n },\r\n {\r\n title: 'WALLET.TABS.RECEIVE',\r\n icon: 'receive',\r\n link: '/receive',\r\n indicator: false,\r\n active: false\r\n },\r\n {\r\n title: 'WALLET.TABS.CONTRACTS',\r\n icon: 'contracts',\r\n link: '/contracts',\r\n indicator: 1,\r\n active: false\r\n },\r\n /*{\r\n title: 'WALLET.TABS.MESSAGES',\r\n icon: 'messages',\r\n link: '/messages',\r\n indicator: 32,\r\n active: false\r\n },*/\r\n {\r\n title: 'WALLET.TABS.STAKING',\r\n icon: 'staking',\r\n link: '/staking',\r\n indicator: false,\r\n active: false\r\n }\r\n ];\r\n aliasSubscription: Subscription;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private backend: BackendService,\r\n public variablesService: VariablesService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService,\r\n private intToMoneyPipe: IntToMoneyPipe\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.subRouting1 = this.route.params.subscribe(params => {\r\n this.walletID = +params['id'];\r\n this.variablesService.setCurrentWallet(this.walletID);\r\n this.scrolledContent.nativeElement.scrollTop = 0;\r\n clearTimeout(this.copyAnimationTimeout);\r\n this.copyAnimation = false;\r\n });\r\n this.subRouting2 = this.router.events.subscribe(val => {\r\n if (val instanceof RoutesRecognized) {\r\n if ( val.state.root.firstChild && val.state.root.firstChild.firstChild ) {\r\n for (let i = 0; i < this.tabs.length; i++) {\r\n this.tabs[i].active = (this.tabs[i].link === '/' + val.state.root.firstChild.firstChild.url[0].path);\r\n }\r\n }\r\n }\r\n });\r\n if (this.variablesService.currentWallet.alias.hasOwnProperty('name')) {\r\n this.variablesService.currentWallet.wakeAlias = false;\r\n }\r\n this.aliasSubscription = this.variablesService.getAliasChangedEvent.subscribe(() => {\r\n if (this.variablesService.currentWallet.alias.hasOwnProperty('name')) {\r\n this.variablesService.currentWallet.wakeAlias = false;\r\n }\r\n });\r\n }\r\n\r\n changeTab(index) {\r\n if ((this.tabs[index].link === '/send' || this.tabs[index].link === '/contracts' || this.tabs[index].link === '/staking') && (this.variablesService.daemon_state !== 2 || !this.variablesService.currentWallet.loaded)) {\r\n return;\r\n }\r\n this.tabs.forEach((tab) => {\r\n tab.active = false;\r\n });\r\n this.tabs[index].active = true;\r\n this.ngZone.run( () => {\r\n this.scrolledContent.nativeElement.scrollTop = 0;\r\n this.router.navigate(['wallet/' + this.walletID + this.tabs[index].link]);\r\n });\r\n }\r\n\r\n copyAddress() {\r\n this.backend.setClipboard(this.variablesService.currentWallet.address);\r\n this.copyAnimation = true;\r\n this.copyAnimationTimeout = window.setTimeout(() => {\r\n this.copyAnimation = false;\r\n }, 2000);\r\n }\r\n\r\n getTooltip() {\r\n this.balanceTooltip = document.createElement('div');\r\n const available = document.createElement('span');\r\n available.setAttribute('class', 'available');\r\n available.innerHTML = this.translate.instant('WALLET.AVAILABLE_BALANCE', {available: this.intToMoneyPipe.transform(this.variablesService.currentWallet.unlocked_balance), currency: this.variablesService.defaultCurrency});\r\n this.balanceTooltip.appendChild(available);\r\n const locked = document.createElement('span');\r\n locked.setAttribute('class', 'locked');\r\n locked.innerHTML = this.translate.instant('WALLET.LOCKED_BALANCE', {locked: this.intToMoneyPipe.transform(this.variablesService.currentWallet.balance.minus(this.variablesService.currentWallet.unlocked_balance)), currency: this.variablesService.defaultCurrency});\r\n this.balanceTooltip.appendChild(locked);\r\n const link = document.createElement('span');\r\n link.setAttribute('class', 'link');\r\n link.innerHTML = this.translate.instant('WALLET.LOCKED_BALANCE_LINK');\r\n link.addEventListener('click', () => {\r\n this.openInBrowser('docs.zano.org/docs/locked-balance');\r\n });\r\n this.balanceTooltip.appendChild(link);\r\n return this.balanceTooltip;\r\n }\r\n\r\n onHideTooltip() {\r\n this.balanceTooltip = null;\r\n }\r\n\r\n openInBrowser(link) {\r\n this.backend.openUrlInBrowser(link);\r\n }\r\n\r\n closeWallet() {\r\n this.backend.closeWallet(this.variablesService.currentWallet.wallet_id, () => {\r\n for (let i = this.variablesService.wallets.length - 1; i >= 0; i--) {\r\n if (this.variablesService.wallets[i].wallet_id === this.variablesService.currentWallet.wallet_id) {\r\n this.variablesService.wallets.splice(i, 1);\r\n }\r\n }\r\n this.ngZone.run(() => {\r\n if (this.variablesService.wallets.length) {\r\n this.variablesService.currentWallet = this.variablesService.wallets[0];\r\n this.router.navigate(['/wallet/' + this.variablesService.currentWallet.wallet_id]);\r\n } else {\r\n this.router.navigate(['/']);\r\n }\r\n });\r\n if (this.variablesService.appPass) {\r\n this.backend.storeSecureAppData();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subRouting1.unsubscribe();\r\n this.subRouting2.unsubscribe();\r\n this.aliasSubscription.unsubscribe();\r\n clearTimeout(this.copyAnimationTimeout);\r\n }\r\n\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/_helpers/directives/input-disable-selection/input-disable-selection.directive.ts","webpack:///./src/app/_helpers/directives/input-validate/input-validate.directive.ts","webpack:///./src/app/_helpers/directives/modal-container/modal-container.component.html","webpack:///./src/app/_helpers/directives/modal-container/modal-container.component.scss","webpack:///./src/app/_helpers/directives/modal-container/modal-container.component.ts","webpack:///./src/app/_helpers/directives/progress-container/progress-container.component.html","webpack:///./src/app/_helpers/directives/progress-container/progress-container.component.scss","webpack:///./src/app/_helpers/directives/progress-container/progress-container.component.ts","webpack:///./src/app/_helpers/directives/staking-switch/staking-switch.component.html","webpack:///./src/app/_helpers/directives/staking-switch/staking-switch.component.scss","webpack:///./src/app/_helpers/directives/staking-switch/staking-switch.component.ts","webpack:///./src/app/_helpers/directives/tooltip.directive.ts","webpack:///./src/app/_helpers/directives/transaction-details/transaction-details.component.html","webpack:///./src/app/_helpers/directives/transaction-details/transaction-details.component.scss","webpack:///./src/app/_helpers/directives/transaction-details/transaction-details.component.ts","webpack:///./src/app/_helpers/models/transaction.model.ts","webpack:///./src/app/_helpers/models/wallet.model.ts","webpack:///./src/app/_helpers/pipes/contract-status-messages.pipe.ts","webpack:///./src/app/_helpers/pipes/contract-time-left.pipe.ts","webpack:///./src/app/_helpers/pipes/history-type-messages.pipe.ts","webpack:///./src/app/_helpers/pipes/int-to-money.pipe.ts","webpack:///./src/app/_helpers/pipes/money-to-int.pipe.ts","webpack:///./src/app/_helpers/services/backend.service.ts","webpack:///./src/app/_helpers/services/modal.service.ts","webpack:///./src/app/_helpers/services/variables.service.ts","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.scss","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/assign-alias/assign-alias.component.html","webpack:///./src/app/assign-alias/assign-alias.component.scss","webpack:///./src/app/assign-alias/assign-alias.component.ts","webpack:///./src/app/contracts/contracts.component.html","webpack:///./src/app/contracts/contracts.component.scss","webpack:///./src/app/contracts/contracts.component.ts","webpack:///./src/app/create-wallet/create-wallet.component.html","webpack:///./src/app/create-wallet/create-wallet.component.scss","webpack:///./src/app/create-wallet/create-wallet.component.ts","webpack:///./src/app/edit-alias/edit-alias.component.html","webpack:///./src/app/edit-alias/edit-alias.component.scss","webpack:///./src/app/edit-alias/edit-alias.component.ts","webpack:///./src/app/history/history.component.html","webpack:///./src/app/history/history.component.scss","webpack:///./src/app/history/history.component.ts","webpack:///./src/app/login/login.component.html","webpack:///./src/app/login/login.component.scss","webpack:///./src/app/login/login.component.ts","webpack:///./src/app/main/main.component.html","webpack:///./src/app/main/main.component.scss","webpack:///./src/app/main/main.component.ts","webpack:///./src/app/messages/messages.component.html","webpack:///./src/app/messages/messages.component.scss","webpack:///./src/app/messages/messages.component.ts","webpack:///./src/app/open-wallet-modal/open-wallet-modal.component.html","webpack:///./src/app/open-wallet-modal/open-wallet-modal.component.scss","webpack:///./src/app/open-wallet-modal/open-wallet-modal.component.ts","webpack:///./src/app/open-wallet/open-wallet.component.html","webpack:///./src/app/open-wallet/open-wallet.component.scss","webpack:///./src/app/open-wallet/open-wallet.component.ts","webpack:///./src/app/purchase/purchase.component.html","webpack:///./src/app/purchase/purchase.component.scss","webpack:///./src/app/purchase/purchase.component.ts","webpack:///./src/app/receive/receive.component.html","webpack:///./src/app/receive/receive.component.scss","webpack:///./src/app/receive/receive.component.ts","webpack:///./src/app/restore-wallet/restore-wallet.component.html","webpack:///./src/app/restore-wallet/restore-wallet.component.scss","webpack:///./src/app/restore-wallet/restore-wallet.component.ts","webpack:///./src/app/seed-phrase/seed-phrase.component.html","webpack:///./src/app/seed-phrase/seed-phrase.component.scss","webpack:///./src/app/seed-phrase/seed-phrase.component.ts","webpack:///./src/app/send/send.component.html","webpack:///./src/app/send/send.component.scss","webpack:///./src/app/send/send.component.ts","webpack:///./src/app/settings/settings.component.html","webpack:///./src/app/settings/settings.component.scss","webpack:///./src/app/settings/settings.component.ts","webpack:///./src/app/sidebar/sidebar.component.html","webpack:///./src/app/sidebar/sidebar.component.scss","webpack:///./src/app/sidebar/sidebar.component.ts","webpack:///./src/app/staking/staking.component.html","webpack:///./src/app/staking/staking.component.scss","webpack:///./src/app/staking/staking.component.ts","webpack:///./src/app/transfer-alias/transfer-alias.component.html","webpack:///./src/app/transfer-alias/transfer-alias.component.scss","webpack:///./src/app/transfer-alias/transfer-alias.component.ts","webpack:///./src/app/typing-message/typing-message.component.html","webpack:///./src/app/typing-message/typing-message.component.scss","webpack:///./src/app/typing-message/typing-message.component.ts","webpack:///./src/app/wallet-details/wallet-details.component.html","webpack:///./src/app/wallet-details/wallet-details.component.scss","webpack:///./src/app/wallet-details/wallet-details.component.ts","webpack:///./src/app/wallet/wallet.component.html","webpack:///./src/app/wallet/wallet.component.scss","webpack:///./src/app/wallet/wallet.component.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","import {Directive, HostListener} from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'input'\r\n})\r\nexport class InputDisableSelectionDirective {\r\n\r\n constructor() {}\r\n\r\n @HostListener('mousedown', ['$event'])\r\n handleInput(event: Event) {\r\n if ((event.target).readOnly) {\r\n event.preventDefault();\r\n }\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, HostListener} from '@angular/core';\r\nimport {VariablesService} from '../../services/variables.service';\r\n\r\n@Directive({\r\n selector: '[appInputValidate]'\r\n})\r\nexport class InputValidateDirective {\r\n\r\n private type: string;\r\n\r\n constructor(private el: ElementRef, private variablesService: VariablesService) {\r\n }\r\n\r\n @Input('appInputValidate')\r\n public set defineInputType(type: string) {\r\n this.type = type;\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n handleInput(event: Event) {\r\n if ( this.type === 'money' ) {\r\n this.moneyValidation(event);\r\n } else if ( this.type === 'integer' ) {\r\n this.integerValidation(event);\r\n }\r\n }\r\n\r\n private moneyValidation(event: Event) {\r\n let currentValue = (event.target).value;\r\n const originalValue = currentValue;\r\n const OnlyD = /[^\\d\\.]/g;\r\n const _has_error = currentValue.match(OnlyD);\r\n if (_has_error && _has_error.length) {\r\n currentValue = currentValue.replace(',', '.').replace(OnlyD, '');\r\n }\r\n const _double_separator = currentValue.match(/\\./g);\r\n if (_double_separator && _double_separator.length > 1) {\r\n currentValue = currentValue.substr(0, currentValue.lastIndexOf('.'));\r\n }\r\n if (currentValue.indexOf('.') === 0) {\r\n currentValue = '0' + currentValue;\r\n }\r\n const _zero_fill = currentValue.split('.');\r\n if (_zero_fill[0].length > 7) {\r\n _zero_fill[0] = _zero_fill[0].substr(0, 7);\r\n }\r\n\r\n if (1 in _zero_fill && _zero_fill[1].length) {\r\n _zero_fill[1] = _zero_fill[1].substr(0, this.variablesService.digits);\r\n }\r\n currentValue = _zero_fill.join('.');\r\n if (currentValue !== originalValue) {\r\n const cursorPosition = (event.target).selectionEnd;\r\n (event.target).value = currentValue;\r\n (event.target).setSelectionRange(cursorPosition, cursorPosition);\r\n (event.target).dispatchEvent(new Event('input'));\r\n }\r\n }\r\n\r\n private integerValidation(event: Event) {\r\n let currentValue = (event.target).value;\r\n const originalValue = currentValue;\r\n const OnlyD = /[^\\d]/g;\r\n const _has_error = currentValue.match(OnlyD);\r\n if (_has_error && _has_error.length) {\r\n currentValue = currentValue.replace(OnlyD, '');\r\n }\r\n if (currentValue !== originalValue) {\r\n const cursorPosition = (event.target).selectionEnd;\r\n (event.target).value = currentValue;\r\n (event.target).setSelectionRange(cursorPosition, cursorPosition);\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n
\\r\\n {{title}}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\"","module.exports = \":host {\\n position: fixed;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: rgba(255, 255, 255, 0.25); }\\n\\n.modal {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n background-position: center;\\n background-size: 200%;\\n padding: 2rem;\\n width: 34rem; }\\n\\n.modal .content {\\n display: flex;\\n margin: 1.2rem 0; }\\n\\n.modal .content .icon {\\n flex: 0 0 auto;\\n width: 4.4rem;\\n height: 4.4rem; }\\n\\n.modal .content .icon.error {\\n -webkit-mask: url('modal-alert.svg') no-repeat center;\\n mask: url('modal-alert.svg') no-repeat center; }\\n\\n.modal .content .icon.success {\\n -webkit-mask: url('modal-success.svg') no-repeat center;\\n mask: url('modal-success.svg') no-repeat center; }\\n\\n.modal .content .icon.info {\\n -webkit-mask: url('modal-info.svg') no-repeat center;\\n mask: url('modal-info.svg') no-repeat center; }\\n\\n.modal .content .message-container {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n justify-content: center;\\n margin-left: 2rem; }\\n\\n.modal .content .message-container .title {\\n font-size: 1.8rem;\\n font-weight: 600;\\n line-height: 2.2rem; }\\n\\n.modal .content .message-container .message {\\n font-size: 1.3rem;\\n line-height: 1.8rem;\\n margin-top: 0.4rem; }\\n\\n.modal .action-button {\\n margin: 1.2rem auto 0.6rem;\\n width: 10rem;\\n height: 2.4rem; }\\n\\n.modal .close-button {\\n position: absolute;\\n top: 0;\\n right: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: transparent;\\n margin: 0;\\n padding: 0;\\n width: 2.4rem;\\n height: 2.4rem; }\\n\\n.modal .close-button .icon {\\n -webkit-mask: url('close.svg') no-repeat center;\\n mask: url('close.svg') no-repeat center;\\n width: 2.4rem;\\n height: 2.4rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy9tb2RhbC1jb250YWluZXIvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcX2hlbHBlcnNcXGRpcmVjdGl2ZXNcXG1vZGFsLWNvbnRhaW5lclxcbW9kYWwtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZUFBZTtFQUNmLE1BQU07RUFDTixTQUFTO0VBQ1QsT0FBTztFQUNQLFFBQVE7RUFDUixhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLHVCQUF1QjtFQUN2QixxQ0FBcUMsRUFBQTs7QUFFdkM7RUFDRSxrQkFBa0I7RUFDbEIsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QiwyQkFBMkI7RUFDM0IscUJBQXFCO0VBQ3JCLGFBQWE7RUFDYixZQUFZLEVBQUE7O0FBUGQ7SUFVSSxhQUFhO0lBQ2IsZ0JBQWdCLEVBQUE7O0FBWHBCO01BY00sY0FBYztNQUNkLGFBQWE7TUFDYixjQUFjLEVBQUE7O0FBaEJwQjtRQW1CUSxxREFBNkQ7Z0JBQTdELDZDQUE2RCxFQUFBOztBQW5CckU7UUF1QlEsdURBQStEO2dCQUEvRCwrQ0FBK0QsRUFBQTs7QUF2QnZFO1FBMkJRLG9EQUE0RDtnQkFBNUQsNENBQTRELEVBQUE7O0FBM0JwRTtNQWdDTSxhQUFhO01BQ2Isc0JBQXNCO01BQ3RCLHVCQUF1QjtNQUN2Qix1QkFBdUI7TUFDdkIsaUJBQWlCLEVBQUE7O0FBcEN2QjtRQXVDUSxpQkFBaUI7UUFDakIsZ0JBQWdCO1FBQ2hCLG1CQUFtQixFQUFBOztBQXpDM0I7UUE2Q1EsaUJBQWlCO1FBQ2pCLG1CQUFtQjtRQUNuQixrQkFBa0IsRUFBQTs7QUEvQzFCO0lBcURJLDBCQUEwQjtJQUMxQixZQUFZO0lBQ1osY0FBYyxFQUFBOztBQXZEbEI7SUEyREksa0JBQWtCO0lBQ2xCLE1BQU07SUFDTixRQUFRO0lBQ1IsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsdUJBQXVCO0lBQ3ZCLFNBQVM7SUFDVCxVQUFVO0lBQ1YsYUFBYTtJQUNiLGNBQWMsRUFBQTs7QUFyRWxCO01Bd0VNLCtDQUF1RDtjQUF2RCx1Q0FBdUQ7TUFDdkQsYUFBYTtNQUNiLGNBQWMsRUFBQSIsImZpbGUiOiJzcmMvYXBwL19oZWxwZXJzL2RpcmVjdGl2ZXMvbW9kYWwtY29udGFpbmVyL21vZGFsLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgdG9wOiAwO1xyXG4gIGJvdHRvbTogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHJpZ2h0OiAwO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpO1xyXG59XHJcbi5tb2RhbCB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XHJcbiAgYmFja2dyb3VuZC1zaXplOiAyMDAlO1xyXG4gIHBhZGRpbmc6IDJyZW07XHJcbiAgd2lkdGg6IDM0cmVtO1xyXG5cclxuICAuY29udGVudCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAxLjJyZW0gMDtcclxuXHJcbiAgICAuaWNvbiB7XHJcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgICB3aWR0aDogNC40cmVtO1xyXG4gICAgICBoZWlnaHQ6IDQuNHJlbTtcclxuXHJcbiAgICAgICYuZXJyb3Ige1xyXG4gICAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9tb2RhbC1hbGVydC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuc3VjY2VzcyB7XHJcbiAgICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL21vZGFsLXN1Y2Nlc3Muc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmluZm8ge1xyXG4gICAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9tb2RhbC1pbmZvLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5tZXNzYWdlLWNvbnRhaW5lciB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDJyZW07XHJcblxyXG4gICAgICAudGl0bGUge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMS44cmVtO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIuMnJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLm1lc3NhZ2Uge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjhyZW07XHJcbiAgICAgICAgbWFyZ2luLXRvcDogMC40cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWN0aW9uLWJ1dHRvbiB7XHJcbiAgICBtYXJnaW46IDEuMnJlbSBhdXRvIDAuNnJlbTtcclxuICAgIHdpZHRoOiAxMHJlbTtcclxuICAgIGhlaWdodDogMi40cmVtO1xyXG4gIH1cclxuXHJcbiAgLmNsb3NlLWJ1dHRvbiB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7XHJcbiAgICByaWdodDogMDtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICB3aWR0aDogMi40cmVtO1xyXG4gICAgaGVpZ2h0OiAyLjRyZW07XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvY2xvc2Uuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB3aWR0aDogMi40cmVtO1xyXG4gICAgICBoZWlnaHQ6IDIuNHJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef} from '@angular/core';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-modal-container',\r\n templateUrl: './modal-container.component.html',\r\n styleUrls: ['./modal-container.component.scss']\r\n})\r\nexport class ModalContainerComponent implements OnInit {\r\n\r\n public title: string;\r\n @Input() type: string;\r\n @Input() message: string;\r\n @Output() close = new EventEmitter();\r\n @ViewChild('btn') button: ElementRef;\r\n\r\n constructor(private translate: TranslateService) {}\r\n\r\n ngOnInit() {\r\n this.button.nativeElement.focus();\r\n switch (this.type) {\r\n case 'error': this.title = this.translate.instant('MODALS.ERROR'); break;\r\n case 'success': this.title = this.translate.instant('MODALS.SUCCESS'); break;\r\n case 'info': this.title = this.translate.instant('MODALS.INFO'); break;\r\n }\r\n }\r\n\r\n onClose() {\r\n this.close.emit();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{ label | translate }}\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \".progress-bar-container {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n padding: 0 3rem;\\n width: 100%;\\n height: 3rem; }\\n .progress-bar-container .progress-bar {\\n position: absolute;\\n top: -0.7rem;\\n left: 0;\\n margin: 0 3rem;\\n width: calc(100% - 6rem);\\n height: 0.7rem; }\\n .progress-bar-container .progress-bar .progress-bar-full {\\n height: 0.7rem; }\\n .progress-bar-container .progress-labels {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n font-size: 1.2rem;\\n height: 100%; }\\n .progress-bar-container .progress-labels span {\\n flex: 1 0 0;\\n text-align: center; }\\n .progress-bar-container .progress-labels span:first-child {\\n text-align: left; }\\n .progress-bar-container .progress-labels span:last-child {\\n text-align: right; }\\n .progress-bar-container .progress-time {\\n position: absolute;\\n top: -3rem;\\n left: 50%;\\n transform: translateX(-50%);\\n font-size: 1.2rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy9wcm9ncmVzcy1jb250YWluZXIvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcX2hlbHBlcnNcXGRpcmVjdGl2ZXNcXHByb2dyZXNzLWNvbnRhaW5lclxccHJvZ3Jlc3MtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCO0VBQ2xCLFNBQVM7RUFDVCxPQUFPO0VBQ1AsZUFBZTtFQUNmLFdBQVc7RUFDWCxZQUFZLEVBQUE7RUFOZDtJQVNJLGtCQUFrQjtJQUNsQixZQUFZO0lBQ1osT0FBTztJQUNQLGNBQWM7SUFDZCx3QkFBd0I7SUFDeEIsY0FBYyxFQUFBO0VBZGxCO01BaUJNLGNBQWMsRUFBQTtFQWpCcEI7SUFzQkksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQiw4QkFBOEI7SUFDOUIsaUJBQWlCO0lBQ2pCLFlBQVksRUFBQTtFQTFCaEI7TUE2Qk0sV0FBVztNQUNYLGtCQUFrQixFQUFBO0VBOUJ4QjtRQWlDUSxnQkFBZ0IsRUFBQTtFQWpDeEI7UUFxQ1EsaUJBQWlCLEVBQUE7RUFyQ3pCO0lBMkNJLGtCQUFrQjtJQUNsQixVQUFVO0lBQ1YsU0FBUztJQUNULDJCQUEyQjtJQUMzQixpQkFBaUIsRUFBQSIsImZpbGUiOiJzcmMvYXBwL19oZWxwZXJzL2RpcmVjdGl2ZXMvcHJvZ3Jlc3MtY29udGFpbmVyL3Byb2dyZXNzLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgYm90dG9tOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgcGFkZGluZzogMCAzcmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogM3JlbTtcclxuXHJcbiAgLnByb2dyZXNzLWJhciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IC0wLjdyZW07XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgbWFyZ2luOiAwIDNyZW07XHJcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gNnJlbSk7XHJcbiAgICBoZWlnaHQ6IDAuN3JlbTtcclxuXHJcbiAgICAucHJvZ3Jlc3MtYmFyLWZ1bGwge1xyXG4gICAgICBoZWlnaHQ6IDAuN3JlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy1sYWJlbHMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmb250LXNpemU6IDEuMnJlbTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuXHJcbiAgICBzcGFuIHtcclxuICAgICAgZmxleDogMSAwIDA7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy10aW1lIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogLTNyZW07XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICBmb250LXNpemU6IDEuMnJlbTtcclxuICB9XHJcbn1cclxuIl19 */\"","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-progress-container',\r\n templateUrl: './progress-container.component.html',\r\n styleUrls: ['./progress-container.component.scss']\r\n})\r\nexport class ProgressContainerComponent implements OnInit {\r\n\r\n @Input() width: string;\r\n @Input() labels: [];\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n}\r\n","module.exports = \"
\\r\\n {{ 'STAKING.SWITCH.ON' | translate }}\\r\\n \\r\\n {{ 'STAKING.SWITCH.OFF' | translate }}\\r\\n
\\r\\n\"","module.exports = \".switch {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n border-radius: 1rem;\\n cursor: pointer;\\n font-size: 1rem;\\n padding: 0.5rem;\\n width: 5rem;\\n height: 2rem; }\\n .switch .circle {\\n border-radius: 1rem;\\n width: 1.2rem;\\n height: 1.2rem; }\\n .switch .option {\\n margin: 0 0.2rem;\\n line-height: 1.2rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy9zdGFraW5nLXN3aXRjaC9FOlxcWmFub1xcY2hlY2tcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxfaGVscGVyc1xcZGlyZWN0aXZlc1xcc3Rha2luZy1zd2l0Y2hcXHN0YWtpbmctc3dpdGNoLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQiw4QkFBOEI7RUFDOUIsbUJBQW1CO0VBQ25CLGVBQWU7RUFDZixlQUFlO0VBQ2YsZUFBZTtFQUNmLFdBQVc7RUFDWCxZQUFZLEVBQUE7RUFUZDtJQVlJLG1CQUFtQjtJQUNuQixhQUFhO0lBQ2IsY0FBYyxFQUFBO0VBZGxCO0lBa0JJLGdCQUFnQjtJQUNoQixtQkFBbUIsRUFBQSIsImZpbGUiOiJzcmMvYXBwL19oZWxwZXJzL2RpcmVjdGl2ZXMvc3Rha2luZy1zd2l0Y2gvc3Rha2luZy1zd2l0Y2guY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuc3dpdGNoIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIGJvcmRlci1yYWRpdXM6IDFyZW07XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGZvbnQtc2l6ZTogMXJlbTtcclxuICBwYWRkaW5nOiAwLjVyZW07XHJcbiAgd2lkdGg6IDVyZW07XHJcbiAgaGVpZ2h0OiAycmVtO1xyXG5cclxuICAuY2lyY2xlIHtcclxuICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XHJcbiAgICB3aWR0aDogMS4ycmVtO1xyXG4gICAgaGVpZ2h0OiAxLjJyZW07XHJcbiAgfVxyXG5cclxuICAub3B0aW9uIHtcclxuICAgIG1hcmdpbjogMCAwLjJyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS4ycmVtO1xyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, OnInit, Input, Output, EventEmitter} from '@angular/core';\r\nimport {BackendService} from '../../services/backend.service';\r\nimport {VariablesService} from '../../services/variables.service';\r\n\r\n@Component({\r\n selector: 'app-staking-switch',\r\n templateUrl: './staking-switch.component.html',\r\n styleUrls: ['./staking-switch.component.scss']\r\n})\r\nexport class StakingSwitchComponent implements OnInit {\r\n\r\n @Input() wallet_id: boolean;\r\n @Input() staking: boolean;\r\n @Output() stakingChange = new EventEmitter();\r\n\r\n constructor(private backend: BackendService, private variablesService: VariablesService) {}\r\n\r\n ngOnInit() {}\r\n\r\n toggleStaking() {\r\n const wallet = this.variablesService.getWallet(this.wallet_id);\r\n if (wallet && wallet.loaded) {\r\n this.stakingChange.emit(!this.staking);\r\n if (!this.staking) {\r\n this.backend.startPosMining(this.wallet_id);\r\n } else {\r\n this.backend.stopPosMining(this.wallet_id);\r\n }\r\n }\r\n }\r\n}\r\n","import {Directive, Input, Output, ElementRef, HostListener, Renderer2, HostBinding, OnDestroy, EventEmitter} from '@angular/core';\r\nimport {ActivatedRoute} from '@angular/router';\r\n\r\n@Directive({\r\n selector: '[tooltip]'\r\n})\r\n\r\nexport class TooltipDirective implements OnDestroy {\r\n\r\n @HostBinding('style.cursor') cursor;\r\n\r\n @Input('tooltip') tooltipInner: any;\r\n @Input() placement: string;\r\n @Input() tooltipClass: string;\r\n @Input() timeout = 0;\r\n @Input() delay = 0;\r\n @Input() showWhenNoOverflow = true;\r\n @Output() onHide = new EventEmitter();\r\n tooltip: HTMLElement;\r\n private enter: (event: MouseEvent) => void;\r\n private leave: (event: MouseEvent) => void;\r\n\r\n removeTooltipTimeout;\r\n removeTooltipTimeoutInner;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2, private route: ActivatedRoute) {\r\n }\r\n\r\n @HostListener('mouseenter') onMouseEnter() {\r\n if (this.showWhenNoOverflow || (!this.showWhenNoOverflow && this.el.nativeElement.offsetWidth < this.el.nativeElement.scrollWidth)) {\r\n this.cursor = 'pointer';\r\n if (!this.tooltip) {\r\n this.show();\r\n } else {\r\n this.cancelHide();\r\n }\r\n }\r\n }\r\n\r\n @HostListener('mouseleave') onMouseLeave() {\r\n if (this.tooltip) {\r\n this.hide();\r\n }\r\n }\r\n\r\n show() {\r\n this.create();\r\n this.placement = this.placement === null ? 'top' : this.placement;\r\n this.setPosition(this.placement);\r\n }\r\n\r\n hide() {\r\n this.removeTooltipTimeout = setTimeout(() => {\r\n this.renderer.setStyle(this.tooltip, 'opacity', '0');\r\n this.removeTooltipTimeoutInner = setTimeout(() => {\r\n this.renderer.removeChild(document.body, this.tooltip);\r\n this.tooltip.removeEventListener('mouseenter', this.enter);\r\n this.tooltip.removeEventListener('mouseleave', this.leave);\r\n this.tooltip = null;\r\n this.onHide.emit(true);\r\n }, this.delay);\r\n }, this.timeout);\r\n }\r\n\r\n cancelHide() {\r\n clearTimeout(this.removeTooltipTimeout);\r\n clearTimeout(this.removeTooltipTimeoutInner);\r\n this.renderer.setStyle(this.tooltip, 'opacity', '1');\r\n }\r\n\r\n create() {\r\n this.tooltip = this.renderer.createElement('div');\r\n let innerBlock = this.renderer.createElement('div');\r\n if (typeof this.tooltipInner === 'string') {\r\n innerBlock.innerHTML = this.tooltipInner;\r\n } else {\r\n innerBlock = this.tooltipInner;\r\n }\r\n this.renderer.addClass(innerBlock, 'tooltip-inner');\r\n this.renderer.addClass(innerBlock, 'scrolled-content');\r\n this.renderer.appendChild(this.tooltip, innerBlock);\r\n this.renderer.appendChild(document.body, this.tooltip);\r\n\r\n this.enter = () => {\r\n this.cancelHide();\r\n };\r\n this.tooltip.addEventListener('mouseenter', this.enter);\r\n this.leave = () => {\r\n if (this.tooltip) {\r\n this.hide();\r\n }\r\n };\r\n this.tooltip.addEventListener('mouseleave', this.leave);\r\n\r\n this.renderer.setStyle(document.body, 'position', 'relative');\r\n this.renderer.setStyle(this.tooltip, 'position', 'absolute');\r\n if (this.tooltipClass !== null) {\r\n const classes = this.tooltipClass.split(' ');\r\n for (let i = 0; i < classes.length; i++) {\r\n this.renderer.addClass(this.tooltip, classes[i]);\r\n }\r\n }\r\n this.renderer.setStyle(this.tooltip, 'opacity', '0');\r\n this.renderer.setStyle(this.tooltip, '-webkit-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, '-moz-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, '-o-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, 'transition', `opacity ${this.delay}ms`);\r\n window.setTimeout(() => {\r\n this.renderer.setStyle(this.tooltip, 'opacity', '1');\r\n }, 0);\r\n }\r\n\r\n setPosition(placement) {\r\n const hostPos = this.el.nativeElement.getBoundingClientRect();\r\n this.renderer.addClass(this.tooltip, 'ng-tooltip-' + placement);\r\n const topExit = hostPos.top - this.tooltip.getBoundingClientRect().height - parseInt(getComputedStyle(this.tooltip).marginTop, 10) < 0;\r\n const bottomExit = window.innerHeight < hostPos.bottom + this.tooltip.getBoundingClientRect().height + parseInt(getComputedStyle(this.tooltip).marginTop, 10);\r\n\r\n switch (placement) {\r\n case 'top':\r\n if (topExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('bottom');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left + (hostPos.right - hostPos.left) / 2 - this.tooltip.getBoundingClientRect().width / 2 + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top - this.tooltip.getBoundingClientRect().height + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'top-left':\r\n if (topExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('bottom-left');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top - this.tooltip.getBoundingClientRect().height + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'top-right':\r\n if (topExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('bottom-right');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.right - this.tooltip.offsetWidth + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top - this.tooltip.getBoundingClientRect().height + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'bottom':\r\n if (bottomExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('top');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left + (hostPos.right - hostPos.left) / 2 - this.tooltip.getBoundingClientRect().width / 2 + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'bottom-left':\r\n if (bottomExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('top-left');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'bottom-right':\r\n if (bottomExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('top-right');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.right - this.tooltip.offsetWidth + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'left':\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left - this.tooltip.getBoundingClientRect().width + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top + (hostPos.bottom - hostPos.top) / 2 - this.tooltip.getBoundingClientRect().height / 2 + 'px');\r\n break;\r\n case 'left-top':\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left - this.tooltip.getBoundingClientRect().width + 'px');\r\n break;\r\n case 'left-bottom':\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left - this.tooltip.getBoundingClientRect().width + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom - this.tooltip.getBoundingClientRect().height + 'px');\r\n break;\r\n case 'right':\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.right + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top + (hostPos.bottom - hostPos.top) / 2 - this.tooltip.getBoundingClientRect().height / 2 + 'px');\r\n break;\r\n case 'right-top':\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.right + 'px');\r\n break;\r\n case 'right-bottom':\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.right + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom - this.tooltip.getBoundingClientRect().height + 'px');\r\n break;\r\n }\r\n }\r\n\r\n checkSides() {\r\n if (this.tooltip.getBoundingClientRect().left < 0) {\r\n this.renderer.setStyle(this.tooltip, 'left', 0);\r\n }\r\n if (this.tooltip.getBoundingClientRect().right > window.innerWidth) {\r\n this.renderer.setStyle(this.tooltip, 'left', window.innerWidth - this.tooltip.getBoundingClientRect().width + 'px');\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n clearTimeout(this.removeTooltipTimeout);\r\n clearTimeout(this.removeTooltipTimeoutInner);\r\n if (this.tooltip) {\r\n this.renderer.removeChild(document.body, this.tooltip);\r\n this.tooltip = null;\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.ID' | translate }}\\r\\n {{transaction.tx_hash}}\\r\\n {{ 'HISTORY.DETAILS.SIZE' | translate }}\\r\\n {{ 'HISTORY.DETAILS.SIZE_VALUE' | translate : {value: transaction.tx_blob_size} }}\\r\\n
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.HEIGHT' | translate }}\\r\\n {{transaction.height}}\\r\\n {{ 'HISTORY.DETAILS.CONFIRMATION' | translate }}\\r\\n {{transaction.height === 0 ? 0 : variablesService.height_app - transaction.height}}\\r\\n
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.INPUTS' | translate }}\\r\\n {{inputs.join(', ')}}\\r\\n {{ 'HISTORY.DETAILS.OUTPUTS' | translate }}\\r\\n {{outputs.join(', ')}}\\r\\n
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.PAYMENT_ID' | translate }}\\r\\n \\r\\n {{transaction.payment_id}}\\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.COMMENT' | translate }}\\r\\n \\r\\n {{transaction.comment}}\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%; }\\n\\n.table {\\n border-top: 0.2rem solid #ebebeb;\\n margin: 0 3rem;\\n padding: 0.5rem 0; }\\n\\n.table .row {\\n display: flex;\\n justify-content: flex-start;\\n align-items: center;\\n border-top: none;\\n line-height: 3rem;\\n margin: 0 -3rem;\\n width: 100%;\\n height: 3rem; }\\n\\n.table .row .cell {\\n flex-shrink: 0;\\n flex-grow: 0;\\n padding: 0 1rem;\\n overflow: hidden;\\n text-overflow: ellipsis; }\\n\\n.table .row .cell:first-child {\\n padding-left: 3rem; }\\n\\n.table .row .cell:last-child {\\n padding-right: 3rem; }\\n\\n.table .row .cell.key-value {\\n cursor: pointer; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy90cmFuc2FjdGlvbi1kZXRhaWxzL0U6XFxaYW5vXFxjaGVja1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXF9oZWxwZXJzXFxkaXJlY3RpdmVzXFx0cmFuc2FjdGlvbi1kZXRhaWxzXFx0cmFuc2FjdGlvbi1kZXRhaWxzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCO0VBQ2xCLE1BQU07RUFDTixPQUFPO0VBQ1AsV0FBVyxFQUFBOztBQUdiO0VBQ0UsZ0NBQWdDO0VBQ2hDLGNBQWM7RUFDZCxpQkFBaUIsRUFBQTs7QUFIbkI7SUFNSSxhQUFhO0lBQ2IsMkJBQTJCO0lBQzNCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGVBQWU7SUFDZixXQUFXO0lBQ1gsWUFBWSxFQUFBOztBQWJoQjtNQWdCTSxjQUFjO01BQ2QsWUFBWTtNQUNaLGVBQWU7TUFDZixnQkFBZ0I7TUFDaEIsdUJBQXVCLEVBQUE7O0FBcEI3QjtRQXVCUSxrQkFBa0IsRUFBQTs7QUF2QjFCO1FBMkJRLG1CQUFtQixFQUFBOztBQTNCM0I7UUErQlEsZUFBZSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy90cmFuc2FjdGlvbi1kZXRhaWxzL3RyYW5zYWN0aW9uLWRldGFpbHMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4udGFibGUge1xyXG4gIGJvcmRlci10b3A6IDAuMnJlbSBzb2xpZCAjZWJlYmViO1xyXG4gIG1hcmdpbjogMCAzcmVtO1xyXG4gIHBhZGRpbmc6IDAuNXJlbSAwO1xyXG5cclxuICAucm93IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgYm9yZGVyLXRvcDogbm9uZTtcclxuICAgIGxpbmUtaGVpZ2h0OiAzcmVtO1xyXG4gICAgbWFyZ2luOiAwIC0zcmVtO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDNyZW07XHJcblxyXG4gICAgLmNlbGwge1xyXG4gICAgICBmbGV4LXNocmluazogMDtcclxuICAgICAgZmxleC1ncm93OiAwO1xyXG4gICAgICBwYWRkaW5nOiAwIDFyZW07XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG5cclxuICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYua2V5LXZhbHVlIHtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, OnInit, OnDestroy, Input} from '@angular/core';\r\nimport {Transaction} from '../../models/transaction.model';\r\nimport {VariablesService} from '../../services/variables.service';\r\nimport {BackendService} from '../../services/backend.service';\r\nimport {IntToMoneyPipe} from '../../pipes/int-to-money.pipe';\r\n\r\n@Component({\r\n selector: 'app-transaction-details',\r\n templateUrl: './transaction-details.component.html',\r\n styleUrls: ['./transaction-details.component.scss']\r\n})\r\nexport class TransactionDetailsComponent implements OnInit, OnDestroy {\r\n\r\n @Input() transaction: Transaction;\r\n @Input() sizes: Array;\r\n inputs: Array = [];\r\n outputs: Array = [];\r\n\r\n constructor(public variablesService: VariablesService, private backendService: BackendService, private intToMoneyPipe: IntToMoneyPipe) {}\r\n\r\n ngOnInit() {\r\n for (const input in this.transaction.td['spn']) {\r\n if (this.transaction.td['spn'].hasOwnProperty(input)) {\r\n this.inputs.push(this.intToMoneyPipe.transform(this.transaction.td['spn'][input]));\r\n }\r\n }\r\n for (const output in this.transaction.td['rcv']) {\r\n if (this.transaction.td['rcv'].hasOwnProperty(output)) {\r\n this.outputs.push(this.intToMoneyPipe.transform(this.transaction.td['rcv'][output]));\r\n }\r\n }\r\n }\r\n\r\n openInBrowser(tr) {\r\n this.backendService.openUrlInBrowser('explorer.zano.org/transaction/' + tr);\r\n }\r\n\r\n ngOnDestroy() {}\r\n}\r\n","import {BigNumber} from 'bignumber.js';\r\n\r\nexport class Transaction {\r\n amount: BigNumber;\r\n comment: string;\r\n contract: any[];\r\n fee: BigNumber;\r\n height: number;\r\n is_income: boolean;\r\n is_mining: boolean;\r\n is_mixing: boolean;\r\n is_service: boolean;\r\n payment_id: string;\r\n show_sender: boolean;\r\n td: object;\r\n timestamp: number;\r\n tx_blob_size: number;\r\n tx_hash: string;\r\n tx_type: number;\r\n unlock_time: number;\r\n\r\n sortAmount?: BigNumber;\r\n sortFee?: BigNumber;\r\n}\r\n","import {Contract} from './contract.model';\r\nimport {Transaction} from './transaction.model';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\nexport class Wallet {\r\n wallet_id: number;\r\n name: string;\r\n pass: string;\r\n path: string;\r\n address: string;\r\n balance: BigNumber;\r\n unlocked_balance: BigNumber;\r\n mined_total: number;\r\n tracking_hey: string;\r\n alias_available: boolean;\r\n\r\n alias?: object;\r\n wakeAlias?: boolean;\r\n staking?: boolean;\r\n new_messages?: number;\r\n new_contracts?: number;\r\n\r\n history: Array = [];\r\n excluded_history: Array = [];\r\n\r\n contracts: Array = [];\r\n\r\n progress?: number;\r\n loaded?: boolean;\r\n\r\n send_data?: any = {\r\n address: null,\r\n amount: null,\r\n comment: null,\r\n mixin: null,\r\n fee: null,\r\n hide: null\r\n };\r\n\r\n constructor(id, name, pass, path, address, balance, unlocked_balance, mined = 0, tracking = '') {\r\n this.wallet_id = id;\r\n this.name = name;\r\n this.pass = pass;\r\n this.path = path;\r\n this.address = address;\r\n this.balance = balance;\r\n this.unlocked_balance = unlocked_balance;\r\n this.mined_total = mined;\r\n this.tracking_hey = tracking;\r\n\r\n this.alias = {};\r\n this.staking = false;\r\n this.new_messages = 0;\r\n this.new_contracts = 0;\r\n\r\n this.history = [];\r\n this.excluded_history = [];\r\n\r\n this.progress = 0;\r\n this.loaded = false;\r\n }\r\n\r\n getMoneyEquivalent(equivalent) {\r\n return this.balance.multipliedBy(equivalent).toFixed(0);\r\n }\r\n\r\n havePass(): boolean {\r\n return (this.pass !== '' && this.pass !== null);\r\n }\r\n\r\n isActive(id): boolean {\r\n return this.wallet_id === id;\r\n }\r\n\r\n prepareHistoryItem(item: Transaction): any {\r\n if (item.tx_type === 4) {\r\n item.sortFee = item.amount.plus(item.fee).negated();\r\n item.sortAmount = new BigNumber(0);\r\n } else if (item.tx_type === 3) {\r\n item.sortFee = new BigNumber(0);\r\n } else if ((item.hasOwnProperty('contract') && (item.contract[0].state === 3 || item.contract[0].state === 6 || item.contract[0].state === 601) && !item.contract[0].is_a)) {\r\n item.sortFee = item.fee.negated();\r\n item.sortAmount = item.amount;\r\n } else {\r\n if (!item.is_income) {\r\n item.sortFee = item.fee.negated();\r\n item.sortAmount = item.amount.negated();\r\n } else {\r\n item.sortAmount = item.amount;\r\n }\r\n }\r\n return item;\r\n }\r\n\r\n prepareHistory(items: Transaction[]): void {\r\n for (let i = 0; i < items.length; i++) {\r\n if ((items[i].tx_type === 7 && items[i].is_income) || (items[i].tx_type === 11 && items[i].is_income) || (items[i].amount.eq(0) && items[i].fee.eq(0))) {\r\n let exists = false;\r\n for (let j = 0; j < this.excluded_history.length; j++) {\r\n if (this.excluded_history[j].tx_hash === items[i].tx_hash) {\r\n exists = true;\r\n if (this.excluded_history[j].height !== items[i].height) {\r\n this.excluded_history[j] = items[i];\r\n }\r\n break;\r\n }\r\n }\r\n if (!exists) {\r\n this.excluded_history.push(items[i]);\r\n }\r\n } else {\r\n let exists = false;\r\n for (let j = 0; j < this.history.length; j++) {\r\n if (this.history[j].tx_hash === items[i].tx_hash) {\r\n exists = true;\r\n if (this.history[j].height !== items[i].height) {\r\n this.history[j] = this.prepareHistoryItem(items[i]);\r\n }\r\n break;\r\n }\r\n }\r\n if (!exists) {\r\n if (this.history.length && items[i].timestamp >= this.history[0].timestamp) {\r\n this.history.unshift(this.prepareHistoryItem(items[i]));\r\n } else {\r\n this.history.push(this.prepareHistoryItem(items[i]));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n removeFromHistory(hash: string): void {\r\n for (let i = 0; i < this.history.length; i++) {\r\n if (this.history[i].tx_hash === hash) {\r\n this.history.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n prepareContractsAfterOpen(items: any[], exp_med_ts, height_app, viewedContracts, notViewedContracts): void {\r\n const wallet = this;\r\n for (let i = 0; i < items.length; i++) {\r\n const contract = items[i];\r\n let contractTransactionExist = false;\r\n if (wallet && wallet.history) {\r\n contractTransactionExist = wallet.history.some(elem => elem.contract && elem.contract.length && elem.contract[0].contract_id === contract.contract_id);\r\n }\r\n if (!contractTransactionExist && wallet && wallet.excluded_history) {\r\n contractTransactionExist = wallet.excluded_history.some(elem => elem.contract && elem.contract.length && elem.contract[0].contract_id === contract.contract_id);\r\n }\r\n\r\n if (!contractTransactionExist) {\r\n contract.state = 140;\r\n } else if (contract.state === 1 && contract.expiration_time < exp_med_ts) {\r\n contract.state = 110;\r\n } else if (contract.state === 2 && contract.cancel_expiration_time !== 0 && contract.cancel_expiration_time < exp_med_ts && contract.height === 0) {\r\n const searchResult1 = viewedContracts.some(elem => elem.state === 2 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (!searchResult1) {\r\n contract.state = 130;\r\n contract.is_new = true;\r\n }\r\n } else if (contract.state === 1) {\r\n const searchResult2 = notViewedContracts.find(elem => elem.state === 110 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult2) {\r\n if (searchResult2.time === contract.expiration_time) {\r\n contract.state = 110;\r\n } else {\r\n for (let j = 0; j < notViewedContracts.length; j++) {\r\n if (notViewedContracts[j].contract_id === contract.contract_id && notViewedContracts[j].is_a === contract.is_a) {\r\n notViewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n for (let j = 0; j < viewedContracts.length; j++) {\r\n if (viewedContracts[j].contract_id === contract.contract_id && viewedContracts[j].is_a === contract.is_a) {\r\n viewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (contract.state === 2 && (contract.height === 0 || (height_app - contract.height) < 10)) {\r\n contract.state = 201;\r\n } else if (contract.state === 2) {\r\n const searchResult3 = viewedContracts.some(elem => elem.state === 120 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult3) {\r\n contract.state = 120;\r\n }\r\n } else if (contract.state === 5) {\r\n const searchResult4 = notViewedContracts.find(elem => elem.state === 130 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult4) {\r\n if (searchResult4.time === contract.cancel_expiration_time) {\r\n contract.state = 130;\r\n } else {\r\n for (let j = 0; j < notViewedContracts.length; j++) {\r\n if (notViewedContracts[j].contract_id === contract.contract_id && notViewedContracts[j].is_a === contract.is_a) {\r\n notViewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n for (let j = 0; j < viewedContracts.length; j++) {\r\n if (viewedContracts[j].contract_id === contract.contract_id && viewedContracts[j].is_a === contract.is_a) {\r\n viewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (contract.state === 6 && (contract.height === 0 || (height_app - contract.height) < 10)) {\r\n contract.state = 601;\r\n }\r\n const searchResult = viewedContracts.some(elem => elem.state === contract.state && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n contract.is_new = !searchResult;\r\n\r\n wallet.contracts.push(contract);\r\n }\r\n this.recountNewContracts();\r\n }\r\n\r\n recountNewContracts() {\r\n this.new_contracts = (this.contracts.filter(item => item.is_new === true )).length;\r\n }\r\n\r\n getContract(id): Contract {\r\n for (let i = 0; i < this.contracts.length; i++) {\r\n if (this.contracts[i].contract_id === id) {\r\n return this.contracts[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'contractStatusMessages'\r\n})\r\nexport class ContractStatusMessagesPipe implements PipeTransform {\r\n\r\n constructor(private translate: TranslateService) {}\r\n\r\n getStateSeller(stateNum: number): string {\r\n const state = {part1: '', part2: ''};\r\n switch (stateNum) {\r\n case 1:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.NEW_CONTRACT');\r\n break;\r\n case 110:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.IGNORED');\r\n break;\r\n case 201:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.ACCEPTED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.WAIT');\r\n break;\r\n case 2:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.WAITING_BUYER');\r\n break;\r\n case 3:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.COMPLETED');\r\n break;\r\n case 4:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.NOT_RECEIVED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.NULLIFIED');\r\n break;\r\n case 5:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.PROPOSAL_CANCEL');\r\n break;\r\n case 601:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.BEING_CANCELLED');\r\n break;\r\n case 6:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.CANCELLED');\r\n break;\r\n case 130:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.IGNORED_CANCEL');\r\n break;\r\n case 140:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.EXPIRED');\r\n break;\r\n }\r\n return state.part1 + (state.part2.length ? '. ' + state.part2 : '');\r\n }\r\n\r\n getStateBuyer(stateNum: number): string {\r\n const state = {part1: '', part2: ''};\r\n switch (stateNum) {\r\n case 1:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.WAITING');\r\n break;\r\n case 110:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.IGNORED');\r\n break;\r\n case 201:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.ACCEPTED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.WAIT');\r\n break;\r\n case 2:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.ACCEPTED');\r\n break;\r\n case 120:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.WAITING_SELLER');\r\n break;\r\n case 3:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.COMPLETED');\r\n break;\r\n case 4:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.NOT_RECEIVED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.NULLIFIED');\r\n break;\r\n case 5:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.WAITING_CANCEL');\r\n break;\r\n case 601:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.BEING_CANCELLED');\r\n break;\r\n case 6:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.CANCELLED');\r\n break;\r\n case 130:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.IGNORED_CANCEL');\r\n break;\r\n case 140:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.EXPIRED');\r\n break;\r\n }\r\n return state.part1 + (state.part2.length ? '. ' + state.part2 : '');\r\n }\r\n\r\n transform(state: number, is_a?: boolean): any {\r\n if (is_a) {\r\n return this.getStateBuyer(state);\r\n } else {\r\n return this.getStateSeller(state);\r\n }\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {VariablesService} from '../services/variables.service';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'contractTimeLeft'\r\n})\r\nexport class ContractTimeLeftPipe implements PipeTransform {\r\n\r\n constructor(private service: VariablesService, private translate: TranslateService) {}\r\n\r\n transform(value: any, arg?: any): any {\r\n const time = parseInt(((parseInt(value, 10) - this.service.exp_med_ts) / 3600).toFixed(0), 10);\r\n const type = arg || 0;\r\n if (time === 0) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_LESS_ONE');\r\n }\r\n if (this.service.settings.language === 'en') {\r\n if (type === 0) {\r\n if (time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY', {time: time});\r\n }\r\n } else if (type === 1) {\r\n if (time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE_RESPONSE', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_RESPONSE', {time: time});\r\n }\r\n } else if (type === 2) {\r\n if (time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE_WAITING', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_WAITING', {time: time});\r\n }\r\n }\r\n } else {\r\n const rest = time % 10;\r\n if (type === 0) {\r\n if (((time > 20 ) && (rest === 1)) || time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE', {time: time});\r\n } else if ((time > 1) && (time < 5) || ((time > 20 ) && (rest === 2 || rest === 3 || rest === 4))) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_ALT', {time: time});\r\n }\r\n } else if (type === 1) {\r\n if (((time > 20 ) && (rest === 1)) || time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE_RESPONSE', {time: time});\r\n } else if ((time > 1) && (time < 5) || ((time > 20 ) && (rest === 2 || rest === 3 || rest === 4))) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_RESPONSE', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_ALT_RESPONSE', {time: time});\r\n }\r\n } else if (type === 2) {\r\n if (((time > 20 ) && (rest === 1)) || time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE_WAITING', {time: time});\r\n } else if ((time > 1) && (time < 5) || ((time > 20 ) && (rest === 2 || rest === 3 || rest === 4))) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_WAITING', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_ALT_WAITING', {time: time});\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'historyTypeMessages'\r\n})\r\nexport class HistoryTypeMessagesPipe implements PipeTransform {\r\n\r\n constructor(private translate: TranslateService) {}\r\n\r\n transform(item: any, args?: any): any {\r\n\r\n if (item.tx_type === 0) {\r\n if (item.remote_addresses && item.remote_addresses[0]) {\r\n return item.remote_addresses[0];\r\n } else {\r\n if (item.is_income) {\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.HIDDEN');\r\n } else {\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.UNDEFINED');\r\n }\r\n }\r\n } else if (item.tx_type === 6 && item.height === 0) {\r\n return 'unknown';\r\n } else if (item.tx_type === 9) {\r\n if (item.hasOwnProperty('contract') && item.contract[0].is_a) {\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.COMPLETE_BUYER');\r\n } else {\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.COMPLETE_SELLER');\r\n }\r\n } else {\r\n switch (item.tx_type) {\r\n // case 0:\r\n // return '';\r\n // case 1:\r\n // return '';\r\n // case 2:\r\n // return '';\r\n // case 3:\r\n // return '';\r\n case 4:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.CREATE_ALIAS');\r\n case 5:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.UPDATE_ALIAS');\r\n case 6:\r\n return (item.td['spn'] && item.td['spn'].length) ? this.translate.instant('HISTORY.TYPE_MESSAGES.POS_REWARD') : this.translate.instant('HISTORY.TYPE_MESSAGES.POW_REWARD');\r\n case 7:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.CREATE_CONTRACT');\r\n case 8:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.PLEDGE_CONTRACT');\r\n // case 9:\r\n // return '';\r\n case 10:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.NULLIFY_CONTRACT');\r\n case 11:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.PROPOSAL_CANCEL_CONTRACT');\r\n case 12:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.CANCEL_CONTRACT');\r\n }\r\n }\r\n\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.UNDEFINED');\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {VariablesService} from '../services/variables.service';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Pipe({\r\n name: 'intToMoney'\r\n})\r\nexport class IntToMoneyPipe implements PipeTransform {\r\n\r\n constructor(private variablesService: VariablesService) {}\r\n\r\n transform(value: any, args?: any): any {\r\n if (value === 0 || value === undefined) {\r\n return '0';\r\n }\r\n let maxFraction = this.variablesService.digits;\r\n if (args) {\r\n maxFraction = parseInt(args, 10);\r\n }\r\n const power = Math.pow(10, this.variablesService.digits);\r\n let str = (new BigNumber(value)).div(power).toFixed(maxFraction);\r\n\r\n for (let i = str.length - 1; i >= 0; i--) {\r\n if (str[i] !== '0') {\r\n str = str.substr(0, i + 1);\r\n break;\r\n }\r\n }\r\n if (str[str.length - 1] === '.') {\r\n str = str.substr(0, str.length - 1);\r\n }\r\n return str;\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {VariablesService} from '../services/variables.service';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Pipe({\r\n name: 'moneyToInt'\r\n})\r\nexport class MoneyToIntPipe implements PipeTransform {\r\n\r\n constructor(private variablesService: VariablesService) {}\r\n\r\n transform(value: any, args?: any): any {\r\n const CURRENCY_DISPLAY_DECIMAL_POINT = this.variablesService.digits;\r\n let result;\r\n if (value) {\r\n let am_str = value.toString().trim();\r\n const point_index = am_str.indexOf('.');\r\n let fraction_size = 0;\r\n if (-1 !== point_index) {\r\n fraction_size = am_str.length - point_index - 1;\r\n while (CURRENCY_DISPLAY_DECIMAL_POINT < fraction_size && '0' === am_str[am_str.length - 1]) {\r\n am_str = am_str.slice(0, am_str.length - 1);\r\n --fraction_size;\r\n }\r\n if (CURRENCY_DISPLAY_DECIMAL_POINT < fraction_size) {\r\n return undefined;\r\n }\r\n am_str = am_str.slice(0, point_index) + am_str.slice(point_index + 1, am_str.length);\r\n } else {\r\n fraction_size = 0;\r\n }\r\n if (!am_str.length) {\r\n return undefined;\r\n }\r\n if (fraction_size < CURRENCY_DISPLAY_DECIMAL_POINT) {\r\n for (let i = 0; i !== CURRENCY_DISPLAY_DECIMAL_POINT - fraction_size; i++) {\r\n am_str = am_str + '0';\r\n }\r\n }\r\n result = (new BigNumber(am_str)).integerValue();\r\n }\r\n return result;\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable} from 'rxjs';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {VariablesService} from './variables.service';\r\nimport {ModalService} from './modal.service';\r\nimport {MoneyToIntPipe} from '../pipes/money-to-int.pipe';\r\nimport JSONBigNumber from 'json-bignumber';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Injectable()\r\nexport class BackendService {\r\n\r\n backendObject: any;\r\n backendLoaded = false;\r\n\r\n constructor(\r\n private translate: TranslateService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private moneyToIntPipe: MoneyToIntPipe\r\n ) {\r\n }\r\n\r\n static bigNumberParser(key, val) {\r\n if (val.constructor.name === 'BigNumber' && ['balance', 'unlocked_balance', 'amount', 'fee', 'b_fee', 'to_pay', 'a_pledge', 'b_pledge', 'coast', 'a'].indexOf(key) === -1) {\r\n return val.toNumber();\r\n }\r\n if (key === 'rcv' || key === 'spn') {\r\n for (let i = 0; i < val.length; i++) {\r\n val[i] = new BigNumber(val[i]);\r\n }\r\n }\r\n return val;\r\n }\r\n\r\n static Debug(type, message) {\r\n switch (type) {\r\n case 0:\r\n console.error(message);\r\n break;\r\n case 1:\r\n console.warn(message);\r\n break;\r\n case 2:\r\n console.log(message);\r\n break;\r\n default:\r\n console.log(message);\r\n break;\r\n }\r\n }\r\n\r\n private informerRun(error, params, command) {\r\n let error_translate = '';\r\n\r\n switch (error) {\r\n case 'NOT_ENOUGH_MONEY':\r\n error_translate = 'ERRORS.NOT_ENOUGH_MONEY';\r\n break;\r\n case 'CORE_BUSY':\r\n if (command !== 'get_all_aliases') {\r\n error_translate = 'ERRORS.CORE_BUSY';\r\n }\r\n break;\r\n case 'OVERFLOW':\r\n if (command !== 'get_all_aliases') {\r\n error_translate = '';\r\n }\r\n break;\r\n case 'INTERNAL_ERROR:daemon is busy':\r\n error_translate = 'ERRORS.DAEMON_BUSY';\r\n break;\r\n case 'INTERNAL_ERROR:not enough money':\r\n case 'INTERNAL_ERROR:NOT_ENOUGH_MONEY':\r\n if (command === 'cancel_offer') {\r\n error_translate = this.translate.instant('ERRORS.NO_MONEY_REMOVE_OFFER', {\r\n 'fee': this.variablesService.default_fee,\r\n 'currency': this.variablesService.defaultCurrency\r\n });\r\n } else {\r\n error_translate = 'ERRORS.NO_MONEY';\r\n }\r\n break;\r\n case 'INTERNAL_ERROR:not enough outputs to mix':\r\n error_translate = 'ERRORS.NOT_ENOUGH_OUTPUTS_TO_MIX';\r\n break;\r\n case 'INTERNAL_ERROR:transaction is too big':\r\n error_translate = 'ERRORS.TRANSACTION_IS_TO_BIG';\r\n break;\r\n case 'INTERNAL_ERROR:Transfer attempt while daemon offline':\r\n error_translate = 'ERRORS.TRANSFER_ATTEMPT';\r\n break;\r\n case 'ACCESS_DENIED':\r\n error_translate = 'ERRORS.ACCESS_DENIED';\r\n break;\r\n case 'INTERNAL_ERROR:transaction was rejected by daemon':\r\n // if (command === 'request_alias_registration') {\r\n // error_translate = 'INFORMER.ALIAS_IN_REGISTER';\r\n // } else {\r\n error_translate = 'ERRORS.TRANSACTION_ERROR';\r\n // }\r\n break;\r\n case 'INTERNAL_ERROR':\r\n error_translate = 'ERRORS.TRANSACTION_ERROR';\r\n break;\r\n case 'BAD_ARG':\r\n error_translate = 'ERRORS.BAD_ARG';\r\n break;\r\n case 'WALLET_WRONG_ID':\r\n error_translate = 'ERRORS.WALLET_WRONG_ID';\r\n break;\r\n case 'WRONG_PASSWORD':\r\n case 'WRONG_PASSWORD:invalid password':\r\n params = JSON.parse(params);\r\n if (!params.testEmpty) {\r\n error_translate = 'ERRORS.WRONG_PASSWORD';\r\n }\r\n break;\r\n case 'FILE_RESTORED':\r\n if (command === 'open_wallet') {\r\n error_translate = 'ERRORS.FILE_RESTORED';\r\n }\r\n break;\r\n case 'FILE_NOT_FOUND':\r\n if (command !== 'open_wallet' && command !== 'get_alias_info_by_name' && command !== 'get_alias_info_by_address') {\r\n error_translate = this.translate.instant('ERRORS.FILE_NOT_FOUND');\r\n params = JSON.parse(params);\r\n if (params.path) {\r\n error_translate += ': ' + params.path;\r\n }\r\n }\r\n break;\r\n case 'NOT_FOUND':\r\n if (command !== 'open_wallet' && command !== 'get_alias_info_by_name' && command !== 'get_alias_info_by_address') {\r\n error_translate = this.translate.instant('ERRORS.FILE_NOT_FOUND');\r\n params = JSON.parse(params);\r\n if (params.path) {\r\n error_translate += ': ' + params.path;\r\n }\r\n }\r\n break;\r\n case 'CANCELED':\r\n case '':\r\n break;\r\n case 'FAIL':\r\n if (command === 'create_proposal' || command === 'accept_proposal' || command === 'release_contract' || command === 'request_cancel_contract' || command === 'accept_cancel_contract') {\r\n error_translate = ' ';\r\n }\r\n break;\r\n case 'ALREADY_EXISTS':\r\n error_translate = 'ERRORS.FILE_EXIST';\r\n break;\r\n default:\r\n error_translate = error;\r\n }\r\n if (error.indexOf('FAIL:failed to save file') > -1) {\r\n error_translate = 'ERRORS.FILE_NOT_SAVED';\r\n }\r\n if (error.indexOf('FAILED:failed to open binary wallet file for saving') > -1 && command === 'generate_wallet') {\r\n error_translate = '';\r\n }\r\n if (error_translate !== '') {\r\n this.modalService.prepareModal('error', error_translate);\r\n }\r\n }\r\n\r\n\r\n private commandDebug(command, params, result) {\r\n BackendService.Debug(2, '----------------- ' + command + ' -----------------');\r\n const debug = {\r\n _send_params: params,\r\n _result: result\r\n };\r\n BackendService.Debug(2, debug);\r\n try {\r\n BackendService.Debug(2, JSONBigNumber.parse(result, BackendService.bigNumberParser));\r\n } catch (e) {\r\n BackendService.Debug(2, {response_data: result, error_code: 'OK'});\r\n }\r\n }\r\n\r\n private backendCallback(resultStr, params, callback, command) {\r\n let Result = resultStr;\r\n if (command !== 'get_clipboard') {\r\n if (!resultStr || resultStr === '') {\r\n Result = {};\r\n } else {\r\n try {\r\n Result = JSONBigNumber.parse(resultStr, BackendService.bigNumberParser);\r\n } catch (e) {\r\n Result = {response_data: resultStr, error_code: 'OK'};\r\n }\r\n }\r\n } else {\r\n Result = {\r\n error_code: 'OK',\r\n response_data: Result\r\n };\r\n }\r\n\r\n const Status = (Result.error_code === 'OK' || Result.error_code === 'TRUE');\r\n\r\n if (!Status && Status !== undefined && Result.error_code !== undefined) {\r\n BackendService.Debug(1, 'API error for command: \"' + command + '\". Error code: ' + Result.error_code);\r\n }\r\n const data = ((typeof Result === 'object') && 'response_data' in Result) ? Result.response_data : Result;\r\n\r\n let res_error_code = false;\r\n if (typeof Result === 'object' && 'error_code' in Result && Result.error_code !== 'OK' && Result.error_code !== 'TRUE' && Result.error_code !== 'FALSE') {\r\n this.informerRun(Result.error_code, params, command);\r\n res_error_code = Result.error_code;\r\n }\r\n\r\n // if ( command === 'get_offers_ex' ){\r\n // Service.printLog( \"get_offers_ex offers count \"+((data.offers)?data.offers.length:0) );\r\n // }\r\n\r\n if (typeof callback === 'function') {\r\n callback(Status, data, res_error_code);\r\n } else {\r\n return data;\r\n }\r\n }\r\n\r\n\r\n private runCommand(command, params?, callback?) {\r\n if (this.backendObject) {\r\n const Action = this.backendObject[command];\r\n if (!Action) {\r\n BackendService.Debug(0, 'Run Command Error! Command \"' + command + '\" don\\'t found in backendObject');\r\n } else {\r\n const that = this;\r\n params = (typeof params === 'string') ? params : JSONBigNumber.stringify(params);\r\n if (params === undefined || params === '{}') {\r\n Action(function (resultStr) {\r\n that.commandDebug(command, params, resultStr);\r\n return that.backendCallback(resultStr, params, callback, command);\r\n });\r\n } else {\r\n Action(params, function (resultStr) {\r\n that.commandDebug(command, params, resultStr);\r\n return that.backendCallback(resultStr, params, callback, command);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n eventSubscribe(command, callback) {\r\n if (command === 'on_core_event') {\r\n this.backendObject[command].connect(callback);\r\n } else {\r\n this.backendObject[command].connect((str) => {\r\n callback(JSONBigNumber.parse(str, BackendService.bigNumberParser));\r\n });\r\n }\r\n }\r\n\r\n\r\n initService() {\r\n return new Observable(\r\n observer => {\r\n if (!this.backendLoaded) {\r\n this.backendLoaded = true;\r\n const that = this;\r\n (window).QWebChannel((window).qt.webChannelTransport, function (channel) {\r\n that.backendObject = channel.objects.mediator_object;\r\n observer.next('ok');\r\n });\r\n } else {\r\n if (!this.backendObject) {\r\n observer.error('error');\r\n observer.error('error');\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n webkitLaunchedScript() {\r\n return this.runCommand('webkit_launched_script');\r\n }\r\n\r\n quitRequest() {\r\n return this.runCommand('on_request_quit');\r\n }\r\n\r\n getAppData(callback) {\r\n this.runCommand('get_app_data', {}, callback);\r\n }\r\n\r\n storeAppData(callback?) {\r\n if (this.variablesService.wallets.length) {\r\n this.variablesService.settings.wallets = [];\r\n this.variablesService.wallets.forEach((wallet) => {\r\n this.variablesService.settings.wallets.push({name: wallet.name, path: wallet.path});\r\n });\r\n }\r\n this.runCommand('store_app_data', this.variablesService.settings, callback);\r\n }\r\n\r\n getSecureAppData(pass, callback) {\r\n this.runCommand('get_secure_app_data', pass, callback);\r\n }\r\n\r\n setMasterPassword(pass, callback) {\r\n this.runCommand('set_master_password', pass, callback);\r\n }\r\n\r\n checkMasterPassword(pass, callback) {\r\n this.runCommand('check_master_password', pass, callback);\r\n }\r\n storeSecureAppData(callback?) {\r\n const wallets = [];\r\n this.variablesService.wallets.forEach((wallet) => {\r\n wallets.push({name: wallet.name, pass: wallet.pass, path: wallet.path, staking: wallet.staking});\r\n });\r\n this.backendObject['store_secure_app_data'](JSON.stringify(wallets), this.variablesService.appPass, (dataStore) => {\r\n this.backendCallback(dataStore, {}, callback, 'store_secure_app_data');\r\n });\r\n }\r\n\r\n dropSecureAppData(callback?) {\r\n this.backendObject['drop_secure_app_data']((dataStore) => {\r\n this.backendCallback(dataStore, {}, callback, 'drop_secure_app_data');\r\n });\r\n }\r\n\r\n haveSecureAppData(callback) {\r\n this.runCommand('have_secure_app_data', {}, callback);\r\n }\r\n\r\n saveFileDialog(caption, fileMask, default_path, callback) {\r\n const dir = default_path ? default_path : '/';\r\n const params = {\r\n caption: caption,\r\n filemask: fileMask,\r\n default_dir: dir\r\n };\r\n this.runCommand('show_savefile_dialog', params, callback);\r\n }\r\n\r\n openFileDialog(caption, fileMask, default_path, callback) {\r\n const dir = default_path ? default_path : '/';\r\n const params = {\r\n caption: caption,\r\n filemask: fileMask,\r\n default_dir: dir\r\n };\r\n this.runCommand('show_openfile_dialog', params, callback);\r\n }\r\n\r\n generateWallet(path, pass, callback) {\r\n const params = {\r\n path: path,\r\n pass: pass\r\n };\r\n this.runCommand('generate_wallet', params, callback);\r\n }\r\n\r\n openWallet(path, pass, testEmpty, callback) {\r\n const params = {\r\n path: path,\r\n pass: pass\r\n };\r\n params['testEmpty'] = !!(testEmpty);\r\n this.runCommand('open_wallet', params, callback);\r\n }\r\n\r\n closeWallet(wallet_id, callback?) {\r\n this.runCommand('close_wallet', {wallet_id: +wallet_id}, callback);\r\n }\r\n\r\n getSmartWalletInfo(wallet_id, callback) {\r\n this.runCommand('get_smart_wallet_info', {wallet_id: +wallet_id}, callback);\r\n }\r\n\r\n runWallet(wallet_id, callback?) {\r\n this.runCommand('run_wallet', {wallet_id: +wallet_id}, callback);\r\n }\r\n\r\n isValidRestoreWalletText(text, callback) {\r\n this.runCommand('is_valid_restore_wallet_text', text, callback);\r\n }\r\n\r\n restoreWallet(path, pass, restore_key, callback) {\r\n const params = {\r\n restore_key: restore_key,\r\n path: path,\r\n pass: pass\r\n };\r\n this.runCommand('restore_wallet', params, callback);\r\n }\r\n\r\n sendMoney(from_wallet_id, to_address, amount, fee, mixin, comment, hide, callback) {\r\n const params = {\r\n wallet_id: parseInt(from_wallet_id, 10),\r\n destinations: [\r\n {\r\n address: to_address,\r\n amount: amount\r\n }\r\n ],\r\n mixin_count: (mixin) ? parseInt(mixin, 10) : 0,\r\n lock_time: 0,\r\n fee: this.moneyToIntPipe.transform(fee),\r\n comment: comment,\r\n push_payer: !hide\r\n };\r\n this.runCommand('transfer', params, callback);\r\n }\r\n\r\n validateAddress(address, callback) {\r\n this.runCommand('validate_address', address, callback);\r\n }\r\n\r\n setClipboard(str, callback?) {\r\n return this.runCommand('set_clipboard', str, callback);\r\n }\r\n\r\n getClipboard(callback) {\r\n return this.runCommand('get_clipboard', {}, callback);\r\n }\r\n\r\n createProposal(wallet_id, title, comment, a_addr, b_addr, to_pay, a_pledge, b_pledge, time, payment_id, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n details: {\r\n t: title,\r\n c: comment,\r\n a_addr: a_addr,\r\n b_addr: b_addr,\r\n to_pay: this.moneyToIntPipe.transform(to_pay),\r\n a_pledge: this.moneyToIntPipe.transform(a_pledge),\r\n b_pledge: this.moneyToIntPipe.transform(b_pledge)\r\n },\r\n payment_id: payment_id,\r\n expiration_period: parseInt(time, 10) * 60 * 60,\r\n fee: this.variablesService.default_fee_big,\r\n b_fee: this.variablesService.default_fee_big\r\n };\r\n BackendService.Debug(1, params);\r\n this.runCommand('create_proposal', params, callback);\r\n }\r\n\r\n getContracts(wallet_id, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10)\r\n };\r\n BackendService.Debug(1, params);\r\n this.runCommand('get_contracts', params, callback);\r\n }\r\n\r\n acceptProposal(wallet_id, contract_id, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n contract_id: contract_id\r\n };\r\n BackendService.Debug(1, params);\r\n this.runCommand('accept_proposal', params, callback);\r\n }\r\n\r\n releaseProposal(wallet_id, contract_id, release_type, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n contract_id: contract_id,\r\n release_type: release_type // \"normal\" or \"burn\"\r\n };\r\n BackendService.Debug(1, params);\r\n this.runCommand('release_contract', params, callback);\r\n }\r\n\r\n requestCancelContract(wallet_id, contract_id, time, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n contract_id: contract_id,\r\n fee: this.variablesService.default_fee_big,\r\n expiration_period: parseInt(time, 10) * 60 * 60\r\n };\r\n BackendService.Debug(1, params);\r\n this.runCommand('request_cancel_contract', params, callback);\r\n }\r\n\r\n acceptCancelContract(wallet_id, contract_id, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n contract_id: contract_id\r\n };\r\n BackendService.Debug(1, params);\r\n this.runCommand('accept_cancel_contract', params, callback);\r\n }\r\n\r\n getMiningHistory(wallet_id, callback) {\r\n this.runCommand('get_mining_history', {wallet_id: parseInt(wallet_id, 10)}, callback);\r\n }\r\n\r\n startPosMining(wallet_id, callback?) {\r\n this.runCommand('start_pos_mining', {wallet_id: parseInt(wallet_id, 10)}, callback);\r\n }\r\n\r\n stopPosMining(wallet_id, callback?) {\r\n this.runCommand('stop_pos_mining', {wallet_id: parseInt(wallet_id, 10)}, callback);\r\n }\r\n\r\n openUrlInBrowser(url, callback?) {\r\n this.runCommand('open_url_in_browser', url, callback);\r\n }\r\n\r\n start_backend(node, host, port, callback) {\r\n const params = {\r\n configure_for_remote_node: node,\r\n remote_node_host: host,\r\n remote_node_port: parseInt(port, 10)\r\n };\r\n this.runCommand('start_backend', params, callback);\r\n }\r\n\r\n getDefaultFee(callback) {\r\n this.runCommand('get_default_fee', {}, callback);\r\n }\r\n\r\n setBackendLocalization(stringsArray, title, callback?) {\r\n const params = {\r\n strings: stringsArray,\r\n language_title: title\r\n };\r\n this.runCommand('set_localization_strings', params, callback);\r\n }\r\n\r\n registerAlias(wallet_id, alias, address, fee, comment, reward, callback) {\r\n const params = {\r\n wallet_id: wallet_id,\r\n alias: {\r\n alias: alias,\r\n address: address,\r\n tracking_key: '',\r\n comment: comment\r\n },\r\n fee: this.moneyToIntPipe.transform(fee),\r\n reward: this.moneyToIntPipe.transform(reward)\r\n };\r\n this.runCommand('request_alias_registration', params, callback);\r\n }\r\n\r\n updateAlias(wallet_id, alias, fee, callback) {\r\n const params = {\r\n wallet_id: wallet_id,\r\n alias: {\r\n alias: alias.name.replace('@', ''),\r\n address: alias.address,\r\n tracking_key: '',\r\n comment: alias.comment\r\n },\r\n fee: this.moneyToIntPipe.transform(fee)\r\n };\r\n this.runCommand('request_alias_update', params, callback);\r\n }\r\n\r\n getAllAliases(callback) {\r\n this.runCommand('get_all_aliases', {}, callback);\r\n }\r\n\r\n getAliasByName(value, callback) {\r\n return this.runCommand('get_alias_info_by_name', value, callback);\r\n }\r\n\r\n getAliasByAddress(value, callback) {\r\n return this.runCommand('get_alias_info_by_address', value, callback);\r\n }\r\n\r\n getAliasCoast(alias, callback) {\r\n this.runCommand('get_alias_coast', {v: alias}, callback);\r\n }\r\n\r\n getWalletAlias(address) {\r\n if (address !== null && this.variablesService.daemon_state === 2) {\r\n if (this.variablesService.aliasesChecked[address] == null) {\r\n this.variablesService.aliasesChecked[address] = {};\r\n if (this.variablesService.aliases.length) {\r\n for (let i = 0, length = this.variablesService.aliases.length; i < length; i++) {\r\n if (i in this.variablesService.aliases && this.variablesService.aliases[i]['address'] === address) {\r\n this.variablesService.aliasesChecked[address]['name'] = this.variablesService.aliases[i].name;\r\n this.variablesService.aliasesChecked[address]['address'] = this.variablesService.aliases[i].address;\r\n this.variablesService.aliasesChecked[address]['comment'] = this.variablesService.aliases[i].comment;\r\n return this.variablesService.aliasesChecked[address];\r\n }\r\n }\r\n }\r\n this.getAliasByAddress(address, (status, data) => {\r\n if (status) {\r\n this.variablesService.aliasesChecked[data.address]['name'] = '@' + data.alias;\r\n this.variablesService.aliasesChecked[data.address]['address'] = data.address;\r\n this.variablesService.aliasesChecked[data.address]['comment'] = data.comment;\r\n }\r\n });\r\n }\r\n return this.variablesService.aliasesChecked[address];\r\n }\r\n return {};\r\n }\r\n\r\n getPoolInfo(callback) {\r\n this.runCommand('get_tx_pool_info', {}, callback);\r\n }\r\n\r\n getVersion(callback) {\r\n this.runCommand('get_version', {}, (status, version) => {\r\n callback(version);\r\n });\r\n }\r\n\r\n setLogLevel(level) {\r\n return this.runCommand('set_log_level', {v: level});\r\n }\r\n\r\n}\r\n\r\n\r\n/*\r\n\r\n toggleAutoStart: function (value) {\r\n return this.runCommand('toggle_autostart', asVal(value));\r\n },\r\n\r\n getOptions: function (callback) {\r\n return this.runCommand('get_options', {}, callback);\r\n },\r\n\r\n isFileExist: function (path, callback) {\r\n return this.runCommand('is_file_exist', path, callback);\r\n },\r\n\r\n isAutoStartEnabled: function (callback) {\r\n this.runCommand('is_autostart_enabled', {}, function (status, data) {\r\n if (angular.isFunction(callback)) {\r\n callback('error_code' in data && data.error_code !== 'FALSE')\r\n }\r\n });\r\n },\r\n\r\n resetWalletPass: function (wallet_id, pass, callback) {\r\n this.runCommand('reset_wallet_password', {wallet_id: wallet_id, pass: pass}, callback);\r\n },\r\n\r\n\r\n\r\n getOsVersion: function (callback) {\r\n this.runCommand('get_os_version', {}, function (status, version) {\r\n callback(version)\r\n })\r\n },\r\n\r\n getLogFile: function (callback) {\r\n this.runCommand('get_log_file', {}, function (status, version) {\r\n callback(version)\r\n })\r\n },\r\n\r\n resync_wallet: function (wallet_id, callback) {\r\n this.runCommand('resync_wallet', {wallet_id: wallet_id}, callback);\r\n },\r\n\r\n storeFile: function (path, buff, callback) {\r\n this.backendObject['store_to_file'](path, (typeof buff === 'string' ? buff : JSON.stringify(buff)), function (data) {\r\n backendCallback(data, {}, callback, 'store_to_file');\r\n });\r\n },\r\n\r\n getMiningEstimate: function (amount_coins, time, callback) {\r\n var params = {\r\n \"amount_coins\": $filter('money_to_int')(amount_coins),\r\n \"time\": parseInt(time)\r\n };\r\n this.runCommand('get_mining_estimate', params, callback);\r\n },\r\n\r\n backupWalletKeys: function (wallet_id, path, callback) {\r\n var params = {\r\n \"wallet_id\": wallet_id,\r\n \"path\": path\r\n };\r\n this.runCommand('backup_wallet_keys', params, callback);\r\n },\r\n\r\n setBlockedIcon: function (enabled, callback) {\r\n var mode = (enabled) ? \"blocked\" : \"normal\";\r\n Service.runCommand('bool_toggle_icon', mode, callback);\r\n },\r\n\r\n getWalletInfo: function (wallet_id, callback) {\r\n this.runCommand('get_wallet_info', {wallet_id: wallet_id}, callback);\r\n },\r\n\r\n printText: function (content) {\r\n return this.runCommand('print_text', {html_text: content});\r\n },\r\n\r\n printLog: function (msg, log_level) {\r\n return this.runCommand('print_log', {msg: msg, log_level: log_level});\r\n },\r\n\r\n*/\r\n\r\n","import {Injectable, Injector, ComponentFactoryResolver, EmbeddedViewRef, ApplicationRef, NgZone} from '@angular/core';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {ModalContainerComponent} from '../directives/modal-container/modal-container.component';\r\n\r\n@Injectable()\r\nexport class ModalService {\r\n\r\n private components: any[] = [];\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private appRef: ApplicationRef,\r\n private injector: Injector,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {}\r\n\r\n prepareModal(type, message) {\r\n const length = this.components.push(\r\n this.componentFactoryResolver.resolveComponentFactory(ModalContainerComponent).create(this.injector)\r\n );\r\n\r\n this.components[length - 1].instance['type'] = type;\r\n this.components[length - 1].instance['message'] = message.length ? this.translate.instant(message) : '';\r\n this.components[length - 1].instance['close'].subscribe(() => {\r\n this.removeModal(length - 1);\r\n });\r\n\r\n this.ngZone.run(() => {\r\n this.appendModal(length - 1);\r\n });\r\n }\r\n\r\n appendModal(index) {\r\n this.appRef.attachView(this.components[index].hostView);\r\n const domElem = (this.components[index].hostView as EmbeddedViewRef).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElem);\r\n }\r\n\r\n removeModal(index) {\r\n if (this.components[index]) {\r\n this.appRef.detachView(this.components[index].hostView);\r\n this.components[index].destroy();\r\n this.components.splice(index, 1);\r\n } else {\r\n const last = this.components.length - 1;\r\n this.appRef.detachView(this.components[last].hostView);\r\n this.components[last].destroy();\r\n this.components.splice(last, 1);\r\n }\r\n }\r\n}\r\n","import {Injectable, NgZone} from '@angular/core';\r\nimport {Wallet} from '../models/wallet.model';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {Idle} from 'idlejs/dist';\r\nimport {Router} from '@angular/router';\r\nimport {ContextMenuComponent, ContextMenuService} from 'ngx-contextmenu';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VariablesService {\r\n\r\n public digits = 12;\r\n public appPass = '';\r\n public appLogin = false;\r\n public moneyEquivalent = 0;\r\n public defaultTheme = 'dark';\r\n public defaultCurrency = 'ZANO';\r\n public opening_wallet: Wallet;\r\n public exp_med_ts = 0;\r\n public net_time_delta_median = 0;\r\n public height_app = 0;\r\n public last_build_available = '';\r\n public last_build_displaymode = 0;\r\n public daemon_state = 3;\r\n public sync = {\r\n progress_value: 0,\r\n progress_value_text: '0'\r\n };\r\n public default_fee = '0.010000000000';\r\n public default_fee_big = new BigNumber('10000000000');\r\n\r\n public settings = {\r\n appLockTime: 15,\r\n appLog: 0,\r\n theme: '',\r\n scale: 10,\r\n language: 'en',\r\n default_path: '/',\r\n viewedContracts: [],\r\n notViewedContracts: [],\r\n wallets: []\r\n };\r\n\r\n public wallets: Array = [];\r\n public currentWallet: Wallet;\r\n public aliases: any = [];\r\n public aliasesChecked: any = {};\r\n public enableAliasSearch = false;\r\n public maxWalletNameLength = 25;\r\n public maxCommentLength = 255;\r\n public dataIsLoaded = false; \r\n\r\n getExpMedTsEvent = new BehaviorSubject(null);\r\n getHeightAppEvent = new BehaviorSubject(null);\r\n getRefreshStackingEvent = new BehaviorSubject(null);\r\n getAliasChangedEvent = new BehaviorSubject(null);\r\n\r\n public idle = new Idle()\r\n .whenNotInteractive()\r\n .do(() => {\r\n this.ngZone.run(() => {\r\n this.idle.stop();\r\n this.appPass = '';\r\n this.appLogin = false;\r\n this.router.navigate(['/login'], {queryParams: {type: 'auth'}});\r\n });\r\n });\r\n\r\n public allContextMenu: ContextMenuComponent;\r\n public onlyCopyContextMenu: ContextMenuComponent;\r\n public pasteSelectContextMenu: ContextMenuComponent;\r\n\r\n constructor(private router: Router, private ngZone: NgZone, private contextMenuService: ContextMenuService) {\r\n }\r\n\r\n setExpMedTs(timestamp: number) {\r\n if (timestamp !== this.exp_med_ts) {\r\n this.exp_med_ts = timestamp;\r\n this.getExpMedTsEvent.next(timestamp);\r\n }\r\n }\r\n\r\n setHeightApp(height: number) {\r\n if (height !== this.height_app) {\r\n this.height_app = height;\r\n this.getHeightAppEvent.next(height);\r\n }\r\n }\r\n\r\n setRefreshStacking(wallet_id: number) {\r\n this.getHeightAppEvent.next(wallet_id);\r\n }\r\n\r\n changeAliases() {\r\n this.getAliasChangedEvent.next(true);\r\n }\r\n\r\n setCurrentWallet(id): void {\r\n this.wallets.forEach((wallet) => {\r\n if (wallet.wallet_id === id) {\r\n this.currentWallet = wallet;\r\n }\r\n });\r\n }\r\n\r\n getWallet(id): Wallet {\r\n for (let i = 0; i < this.wallets.length; i++) {\r\n if (this.wallets[i].wallet_id === id) {\r\n return this.wallets[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n startCountdown() {\r\n this.idle.within(this.settings.appLockTime).start();\r\n }\r\n\r\n stopCountdown() {\r\n this.idle.stop();\r\n }\r\n\r\n restartCountdown() {\r\n this.idle.within(this.settings.appLockTime).restart();\r\n }\r\n\r\n public onContextMenu($event: MouseEvent): void {\r\n $event.target['contextSelectionStart'] = $event.target['selectionStart'];\r\n $event.target['contextSelectionEnd'] = $event.target['selectionEnd'];\r\n if ($event.target && ($event.target['nodeName'].toUpperCase() === 'TEXTAREA' || $event.target['nodeName'].toUpperCase() === 'INPUT') && !$event.target['readOnly']) {\r\n this.contextMenuService.show.next({\r\n contextMenu: this.allContextMenu,\r\n event: $event,\r\n item: $event.target,\r\n });\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n }\r\n\r\n public onContextMenuOnlyCopy($event: MouseEvent, copyText?: string): void {\r\n this.contextMenuService.show.next({\r\n contextMenu: this.onlyCopyContextMenu,\r\n event: $event,\r\n item: copyText\r\n });\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n\r\n public onContextMenuPasteSelect($event: MouseEvent): void {\r\n $event.target['contextSelectionStart'] = $event.target['selectionStart'];\r\n $event.target['contextSelectionEnd'] = $event.target['selectionEnd'];\r\n\r\n console.warn($event.target);\r\n console.warn($event.target['disabled']);\r\n\r\n\r\n if ($event.target && ($event.target['nodeName'].toUpperCase() === 'TEXTAREA' || $event.target['nodeName'].toUpperCase() === 'INPUT') && !$event.target['readOnly']) {\r\n this.contextMenuService.show.next({\r\n contextMenu: this.pasteSelectContextMenu,\r\n event: $event,\r\n item: $event.target,\r\n });\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\n// Components\r\nimport { MainComponent } from './main/main.component';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { WalletComponent } from './wallet/wallet.component';\r\nimport { SendComponent } from './send/send.component';\r\nimport { ReceiveComponent } from './receive/receive.component';\r\nimport { HistoryComponent } from './history/history.component';\r\nimport { ContractsComponent } from './contracts/contracts.component';\r\nimport { PurchaseComponent } from './purchase/purchase.component';\r\nimport { MessagesComponent } from './messages/messages.component';\r\nimport { TypingMessageComponent } from './typing-message/typing-message.component';\r\nimport { StakingComponent } from './staking/staking.component';\r\nimport { SettingsComponent } from './settings/settings.component';\r\nimport { CreateWalletComponent } from './create-wallet/create-wallet.component';\r\nimport { OpenWalletComponent } from './open-wallet/open-wallet.component';\r\nimport { RestoreWalletComponent } from './restore-wallet/restore-wallet.component';\r\nimport { SeedPhraseComponent } from './seed-phrase/seed-phrase.component';\r\nimport { WalletDetailsComponent } from './wallet-details/wallet-details.component';\r\nimport { AssignAliasComponent } from './assign-alias/assign-alias.component';\r\nimport { EditAliasComponent } from \"./edit-alias/edit-alias.component\";\r\nimport { TransferAliasComponent } from \"./transfer-alias/transfer-alias.component\";\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: MainComponent\r\n },\r\n {\r\n path: 'main',\r\n component: MainComponent\r\n },\r\n {\r\n path: 'login',\r\n component: LoginComponent\r\n },\r\n {\r\n path: 'wallet/:id',\r\n component: WalletComponent,\r\n children: [\r\n {\r\n path: 'send',\r\n component: SendComponent\r\n },\r\n {\r\n path: 'receive',\r\n component: ReceiveComponent\r\n },\r\n {\r\n path: 'history',\r\n component: HistoryComponent\r\n },\r\n {\r\n path: 'contracts',\r\n component: ContractsComponent,\r\n },\r\n {\r\n path: 'purchase',\r\n component: PurchaseComponent\r\n },\r\n {\r\n path: 'purchase/:id',\r\n component: PurchaseComponent\r\n },\r\n {\r\n path: 'messages',\r\n component: MessagesComponent,\r\n },\r\n {\r\n path: 'messages/:id',\r\n component: TypingMessageComponent,\r\n },\r\n {\r\n path: 'staking',\r\n component: StakingComponent\r\n },\r\n {\r\n path: '',\r\n redirectTo: 'history',\r\n pathMatch: 'full'\r\n }\r\n ]\r\n },\r\n {\r\n path: 'create',\r\n component: CreateWalletComponent\r\n },\r\n {\r\n path: 'open',\r\n component: OpenWalletComponent\r\n },\r\n {\r\n path: 'restore',\r\n component: RestoreWalletComponent\r\n },\r\n {\r\n path: 'seed-phrase',\r\n component: SeedPhraseComponent\r\n },\r\n {\r\n path: 'details',\r\n component: WalletDetailsComponent\r\n },\r\n {\r\n path: 'assign-alias',\r\n component: AssignAliasComponent\r\n },\r\n {\r\n path: 'edit-alias',\r\n component: EditAliasComponent\r\n },\r\n {\r\n path: 'transfer-alias',\r\n component: TransferAliasComponent\r\n },\r\n {\r\n path: 'settings',\r\n component: SettingsComponent\r\n },\r\n {\r\n path: '',\r\n redirectTo: '/',\r\n pathMatch: 'full'\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\n\r\n\r\nexport class AppRoutingModule { }\r\n","module.exports = \"\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.LOADING' | translate }}\\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.ERROR' | translate }}\\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.COMPLETE' | translate }}\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n {{ 'CONTEXT_MENU.COPY' | translate }}\\r\\n {{ 'CONTEXT_MENU.PASTE' | translate }}\\r\\n {{ 'CONTEXT_MENU.SELECT' | translate }}\\r\\n\\r\\n\\r\\n\\r\\n {{ 'CONTEXT_MENU.COPY' | translate }}\\r\\n\\r\\n\\r\\n\\r\\n {{ 'CONTEXT_MENU.PASTE' | translate }}\\r\\n {{ 'CONTEXT_MENU.SELECT' | translate }}\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","module.exports = \"/*\\r\\n* Implementation of themes\\r\\n*/\\n.app-content {\\n display: flex;\\n overflow-x: overlay;\\n overflow-y: hidden;\\n width: 100%; }\\n.app-content .preloader {\\n align-self: center;\\n color: #fff;\\n font-size: 2rem;\\n margin: 0 auto;\\n text-align: center;\\n width: 50%; }\\n.app-content .preloader .loading-bar {\\n display: block;\\n -webkit-animation: move 5s linear infinite;\\n animation: move 5s linear infinite;\\n background-image: -webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.125, rgba(0, 0, 0, 0.15)), color-stop(0.125, transparent), color-stop(0.25, transparent), color-stop(0.25, rgba(0, 0, 0, 0.1)), color-stop(0.375, rgba(0, 0, 0, 0.1)), color-stop(0.375, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(0, 0, 0, 0.15)), color-stop(0.625, rgba(0, 0, 0, 0.15)), color-stop(0.625, transparent), color-stop(0.75, transparent), color-stop(0.75, rgba(0, 0, 0, 0.1)), color-stop(0.875, rgba(0, 0, 0, 0.1)), color-stop(0.875, transparent), to(transparent)), -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.125, rgba(0, 0, 0, 0.3)), color-stop(0.125, transparent), color-stop(0.25, transparent), color-stop(0.25, rgba(0, 0, 0, 0.25)), color-stop(0.375, rgba(0, 0, 0, 0.25)), color-stop(0.375, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(0, 0, 0, 0.3)), color-stop(0.625, rgba(0, 0, 0, 0.3)), color-stop(0.625, transparent), color-stop(0.75, transparent), color-stop(0.75, rgba(0, 0, 0, 0.25)), color-stop(0.875, rgba(0, 0, 0, 0.25)), color-stop(0.875, transparent), to(transparent));\\n background-size: 10rem 10rem;\\n margin-top: 2rem;\\n width: 100%;\\n height: 1rem; }\\n@-webkit-keyframes move {\\n 0% {\\n background-position: 100% -10rem; }\\n 100% {\\n background-position: 100% 10rem; } }\\n@keyframes move {\\n 0% {\\n background-position: 100% -10rem; }\\n 100% {\\n background-position: 100% 10rem; } }\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcYmFzZVxcX21peGlucy5zY3NzIiwic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL0U6XFxaYW5vXFxjaGVja1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXGFwcC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4RUE7O0NDNUVDO0FDQUQ7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLGtCQUFrQjtFQUNsQixXQUFXLEVBQUE7QUFKYjtJQU9JLGtCQUFrQjtJQUNsQixXQUFXO0lBQ1gsZUFBZTtJQUNmLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsVUFBVSxFQUFBO0FBWmQ7TUFlTSxjQUFjO01BQ2QsMENBQWtDO2NBQWxDLGtDQUFrQztNQUNsQywrbENBc0JHO01BQ0gsNEJBQTRCO01BQzVCLGdCQUFnQjtNQUNoQixXQUFXO01BQ1gsWUFBWSxFQUFBO0FBSWhCO0VBQ0U7SUFDRSxnQ0FBZ0MsRUFBQTtFQUVsQztJQUNFLCtCQUErQixFQUFBLEVBQUE7QUFMbkM7RUFDRTtJQUNFLGdDQUFnQyxFQUFBO0VBRWxDO0lBQ0UsK0JBQStCLEVBQUEsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBtaXhpbiB0ZXh0LXRydW5jYXRlIHtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbn1cclxuQG1peGluIHRleHRXcmFwIHtcclxuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xyXG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XHJcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xyXG4gIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcclxuICBsaW5lLWJyZWFrOiBzdHJpY3Q7XHJcbiAgLXdlYmtpdC1oeXBoZW5zOiBhdXRvO1xyXG4gIC1tcy1oeXBoZW5zOiBhdXRvO1xyXG4gIGh5cGhlbnM6IGF1dG87XHJcbn1cclxuQG1peGluIGNvdmVyQm94IHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0dG9wOiAwO1xyXG5cdGxlZnQ6IDA7XHJcblx0d2lkdGg6IDEwMCU7XHJcblx0aGVpZ2h0OiAxMDAlO1xyXG59XHJcbkBtaXhpbiBhYnMgKCR0b3A6IGF1dG8sICRyaWdodDogYXV0bywgJGJvdHRvbTogYXV0bywgJGxlZnQ6IGF1dG8pIHtcclxuICB0b3A6ICR0b3A7XHJcbiAgcmlnaHQ6ICRyaWdodDtcclxuICBib3R0b206ICRib3R0b207XHJcbiAgbGVmdDogJGxlZnQ7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG59XHJcbkBtaXhpbiBjb3ZlckltZyB7XHJcblx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclxuXHQtd2Via2l0LWJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcblx0LW8tYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuXHRiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG5cdGJhY2tncm91bmQtcG9zaXRpb246IDUwJSA1MCU7XHJcbn1cclxuQG1peGluIHZhbGluZ0JveCB7XHJcblx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdHRvcDogIDUwJTtcclxuXHRsZWZ0OiA1MCU7XHJcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbn1cclxuQG1peGluIHVuU2VsZWN0IHtcclxuXHQtd2Via2l0LXRvdWNoLWNvbGxvdXQ6IG5vbmU7XHJcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcclxuICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcclxuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XHJcbn1cclxuQG1peGluIG1heDExOTkgeyAvLyBtYWtldCAxMTcxXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDExOTlweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtYXgxMTcwIHsgLy8gbWFrZXRzIDk5MlxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiAxMTcwcHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbWF4OTkxIHsgLy8gbWFrZXRzIDc2MlxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtYXg3NjEgeyAvLyBtYWtldHMgNTc2XHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2MXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1heDU3NSB7IC8vIG1ha2V0cyA0MDBcclxuICBAbWVkaWEgKG1heC13aWR0aDogNTc1cHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbW9iaWxlIHtcclxuICBAbWVkaWEgKG1heC13aWR0aDogMzk5cHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gaWNvQ2VudGVyIHtcclxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xyXG59XHJcbkBtaXhpbiBwc2V1ZG8gKCRkaXNwbGF5OiBibG9jaywgJHBvczogYWJzb2x1dGUsICRjb250ZW50OiAnJyl7XHJcbiAgY29udGVudDogJGNvbnRlbnQ7XHJcbiAgZGlzcGxheTogJGRpc3BsYXk7XHJcbiAgcG9zaXRpb246ICRwb3M7XHJcbn1cclxuXHJcbi8qXHJcbiogSW1wbGVtZW50YXRpb24gb2YgdGhlbWVzXHJcbiovXHJcbkBtaXhpbiB0aGVtaWZ5KCR0aGVtZXM6ICR0aGVtZXMpIHtcclxuICBAZWFjaCAkdGhlbWUsICRtYXAgaW4gJHRoZW1lcyB7XHJcbiAgICAudGhlbWUtI3skdGhlbWV9ICYge1xyXG4gICAgICAkdGhlbWUtbWFwOiAoKSAhZ2xvYmFsO1xyXG4gICAgICBAZWFjaCAka2V5LCAkc3VibWFwIGluICRtYXAge1xyXG4gICAgICAgICR2YWx1ZTogbWFwLWdldChtYXAtZ2V0KCR0aGVtZXMsICR0aGVtZSksICcjeyRrZXl9Jyk7XHJcbiAgICAgICAgJHRoZW1lLW1hcDogbWFwLW1lcmdlKCR0aGVtZS1tYXAsICgka2V5OiAkdmFsdWUpKSAhZ2xvYmFsO1xyXG4gICAgICB9XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgICAkdGhlbWUtbWFwOiBudWxsICFnbG9iYWw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AZnVuY3Rpb24gdGhlbWVkKCRrZXkpIHtcclxuICBAcmV0dXJuIG1hcC1nZXQoJHRoZW1lLW1hcCwgJGtleSk7XHJcbn1cclxuIiwiLypcclxuKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGVtZXNcclxuKi9cbi5hcHAtY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG92ZXJmbG93LXg6IG92ZXJsYXk7XG4gIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgd2lkdGg6IDEwMCU7IH1cbiAgLmFwcC1jb250ZW50IC5wcmVsb2FkZXIge1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBmb250LXNpemU6IDJyZW07XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHdpZHRoOiA1MCU7IH1cbiAgICAuYXBwLWNvbnRlbnQgLnByZWxvYWRlciAubG9hZGluZy1iYXIge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBhbmltYXRpb246IG1vdmUgNXMgbGluZWFyIGluZmluaXRlO1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMCwgMTAwJSAxMDAlLCBjb2xvci1zdG9wKDAuMTI1LCByZ2JhKDAsIDAsIDAsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjEyNSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjI1LCByZ2JhKDAsIDAsIDAsIDAuMSkpLCBjb2xvci1zdG9wKDAuMzc1LCByZ2JhKDAsIDAsIDAsIDAuMSkpLCBjb2xvci1zdG9wKDAuMzc1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCByZ2JhKDAsIDAsIDAsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjYyNSwgcmdiYSgwLCAwLCAwLCAwLjE1KSksIGNvbG9yLXN0b3AoMC42MjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC43NSwgcmdiYSgwLCAwLCAwLCAwLjEpKSwgY29sb3Itc3RvcCgwLjg3NSwgcmdiYSgwLCAwLCAwLCAwLjEpKSwgY29sb3Itc3RvcCgwLjg3NSwgdHJhbnNwYXJlbnQpLCB0byh0cmFuc3BhcmVudCkpLCAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAxMDAlLCAxMDAlIDAsIGNvbG9yLXN0b3AoMC4xMjUsIHJnYmEoMCwgMCwgMCwgMC4zKSksIGNvbG9yLXN0b3AoMC4xMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC4yNSwgcmdiYSgwLCAwLCAwLCAwLjI1KSksIGNvbG9yLXN0b3AoMC4zNzUsIHJnYmEoMCwgMCwgMCwgMC4yNSkpLCBjb2xvci1zdG9wKDAuMzc1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCByZ2JhKDAsIDAsIDAsIDAuMykpLCBjb2xvci1zdG9wKDAuNjI1LCByZ2JhKDAsIDAsIDAsIDAuMykpLCBjb2xvci1zdG9wKDAuNjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC43NSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuNzUsIHJnYmEoMCwgMCwgMCwgMC4yNSkpLCBjb2xvci1zdG9wKDAuODc1LCByZ2JhKDAsIDAsIDAsIDAuMjUpKSwgY29sb3Itc3RvcCgwLjg3NSwgdHJhbnNwYXJlbnQpLCB0byh0cmFuc3BhcmVudCkpO1xuICAgICAgYmFja2dyb3VuZC1zaXplOiAxMHJlbSAxMHJlbTtcbiAgICAgIG1hcmdpbi10b3A6IDJyZW07XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMXJlbTsgfVxuXG5Aa2V5ZnJhbWVzIG1vdmUge1xuICAwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAtMTByZW07IH1cbiAgMTAwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAxMHJlbTsgfSB9XG4iLCJAaW1wb3J0ICd+c3JjL2Fzc2V0cy9zY3NzL2Jhc2UvbWl4aW5zJztcclxuXHJcbi5hcHAtY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBvdmVyZmxvdy14OiBvdmVybGF5O1xyXG4gIG92ZXJmbG93LXk6IGhpZGRlbjtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgLnByZWxvYWRlciB7XHJcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIGZvbnQtc2l6ZTogMnJlbTtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgd2lkdGg6IDUwJTtcclxuXHJcbiAgICAubG9hZGluZy1iYXIge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgYW5pbWF0aW9uOiBtb3ZlIDVzIGxpbmVhciBpbmZpbml0ZTtcclxuICAgICAgYmFja2dyb3VuZC1pbWFnZTpcclxuICAgICAgICAtd2Via2l0LWdyYWRpZW50KFxyXG4gICAgICAgICAgICBsaW5lYXIsIDAgMCwgMTAwJSAxMDAlLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC4xMjUsIHJnYmEoMCwgMCwgMCwgLjE1KSksIGNvbG9yLXN0b3AoLjEyNSwgdHJhbnNwYXJlbnQpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC4yNTAsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCguMjUwLCByZ2JhKDAsIDAsIDAsIC4xMCkpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC4zNzUsIHJnYmEoMCwgMCwgMCwgLjEwKSksIGNvbG9yLXN0b3AoLjM3NSwgdHJhbnNwYXJlbnQpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC41MDAsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCguNTAwLCByZ2JhKDAsIDAsIDAsIC4xNSkpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC42MjUsIHJnYmEoMCwgMCwgMCwgLjE1KSksIGNvbG9yLXN0b3AoLjYyNSwgdHJhbnNwYXJlbnQpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC43NTAsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCguNzUwLCByZ2JhKDAsIDAsIDAsIC4xMCkpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC44NzUsIHJnYmEoMCwgMCwgMCwgLjEwKSksIGNvbG9yLXN0b3AoLjg3NSwgdHJhbnNwYXJlbnQpLFxyXG4gICAgICAgICAgICB0byh0cmFuc3BhcmVudClcclxuICAgICAgICApLFxyXG4gICAgICAgIC13ZWJraXQtZ3JhZGllbnQoXHJcbiAgICAgICAgICAgIGxpbmVhciwgMCAxMDAlLCAxMDAlIDAsXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjEyNSwgcmdiYSgwLCAwLCAwLCAuMzApKSwgY29sb3Itc3RvcCguMTI1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjI1MCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC4yNTAsIHJnYmEoMCwgMCwgMCwgLjI1KSksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjM3NSwgcmdiYSgwLCAwLCAwLCAuMjUpKSwgY29sb3Itc3RvcCguMzc1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjUwMCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC41MDAsIHJnYmEoMCwgMCwgMCwgLjMwKSksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjYyNSwgcmdiYSgwLCAwLCAwLCAuMzApKSwgY29sb3Itc3RvcCguNjI1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjc1MCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC43NTAsIHJnYmEoMCwgMCwgMCwgLjI1KSksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjg3NSwgcmdiYSgwLCAwLCAwLCAuMjUpKSwgY29sb3Itc3RvcCguODc1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIHRvKHRyYW5zcGFyZW50KVxyXG4gICAgICAgICk7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMTByZW0gMTByZW07XHJcbiAgICAgIG1hcmdpbi10b3A6IDJyZW07XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDFyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAa2V5ZnJhbWVzIG1vdmUge1xyXG4gICAgMCUge1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIC0xMHJlbTtcclxuICAgIH1cclxuICAgIDEwMCUge1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDEwcmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, OnInit, NgZone, Renderer2, OnDestroy, ViewChild} from '@angular/core';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {BackendService} from './_helpers/services/backend.service';\r\nimport {Router} from '@angular/router';\r\nimport {VariablesService} from './_helpers/services/variables.service';\r\nimport {ContextMenuComponent} from 'ngx-contextmenu';\r\nimport {IntToMoneyPipe} from './_helpers/pipes/int-to-money.pipe';\r\nimport {BigNumber} from 'bignumber.js';\r\nimport {ModalService} from './_helpers/services/modal.service';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy {\r\n\r\n intervalUpdateContractsState;\r\n expMedTsEvent;\r\n onQuitRequest = false;\r\n firstOnlineState = false;\r\n translateUsed = false;\r\n\r\n needOpenWallets = [];\r\n\r\n @ViewChild('allContextMenu') public allContextMenu: ContextMenuComponent;\r\n @ViewChild('onlyCopyContextMenu') public onlyCopyContextMenu: ContextMenuComponent;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private renderer: Renderer2,\r\n public translate: TranslateService,\r\n private backend: BackendService,\r\n private router: Router,\r\n public variablesService: VariablesService,\r\n private ngZone: NgZone,\r\n private intToMoneyPipe: IntToMoneyPipe,\r\n private modalService: ModalService\r\n ) {\r\n translate.addLangs(['en', 'fr']);\r\n translate.setDefaultLang('en');\r\n // const browserLang = translate.getBrowserLang();\r\n // translate.use(browserLang.match(/en|fr/) ? browserLang : 'en');\r\n translate.use('en').subscribe(() => {\r\n this.translateUsed = true;\r\n });\r\n }\r\n\r\n setBackendLocalization() {\r\n if (this.translateUsed) {\r\n const stringsArray = [\r\n this.translate.instant('BACKEND_LOCALIZATION.QUIT'),\r\n this.translate.instant('BACKEND_LOCALIZATION.IS_RECEIVED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.IS_CONFIRMED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.INCOME_TRANSFER_UNCONFIRMED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.INCOME_TRANSFER_CONFIRMED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.MINED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.LOCKED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.IS_MINIMIZE'),\r\n this.translate.instant('BACKEND_LOCALIZATION.RESTORE'),\r\n this.translate.instant('BACKEND_LOCALIZATION.TRAY_MENU_SHOW'),\r\n this.translate.instant('BACKEND_LOCALIZATION.TRAY_MENU_MINIMIZE')\r\n ];\r\n this.backend.setBackendLocalization(stringsArray, 'en');\r\n } else {\r\n console.warn('wait translate use');\r\n setTimeout(() => {\r\n this.setBackendLocalization();\r\n }, 10000);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.variablesService.allContextMenu = this.allContextMenu;\r\n this.variablesService.onlyCopyContextMenu = this.onlyCopyContextMenu;\r\n\r\n this.backend.initService().subscribe(initMessage => {\r\n console.log('Init message: ', initMessage);\r\n\r\n this.backend.webkitLaunchedScript();\r\n\r\n this.backend.start_backend(false, '127.0.0.1', 11512, (st2, dd2) => {\r\n console.log(st2, dd2);\r\n });\r\n\r\n this.backend.eventSubscribe('quit_requested', () => {\r\n if (!this.onQuitRequest) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n this.needOpenWallets = [];\r\n this.variablesService.daemon_state = 5;\r\n const saveFunction = () => {\r\n this.backend.storeAppData(() => {\r\n const recursionCloseWallets = () => {\r\n if (this.variablesService.wallets.length) {\r\n const lastIndex = this.variablesService.wallets.length - 1;\r\n this.backend.closeWallet(this.variablesService.wallets[lastIndex].wallet_id, () => {\r\n this.variablesService.wallets.splice(lastIndex, 1);\r\n recursionCloseWallets();\r\n });\r\n } else {\r\n this.backend.quitRequest();\r\n }\r\n };\r\n recursionCloseWallets();\r\n });\r\n };\r\n if (this.variablesService.appPass) {\r\n this.backend.storeSecureAppData(() => {\r\n saveFunction();\r\n });\r\n } else {\r\n saveFunction();\r\n }\r\n }\r\n this.onQuitRequest = true;\r\n });\r\n\r\n this.backend.eventSubscribe('update_wallet_status', (data) => {\r\n console.log('----------------- update_wallet_status -----------------');\r\n console.log(data);\r\n\r\n const wallet_state = data.wallet_state;\r\n const is_mining = data.is_mining;\r\n const wallet = this.variablesService.getWallet(data.wallet_id);\r\n\r\n // 1-synch, 2-ready, 3 - error\r\n if (wallet) {\r\n this.ngZone.run(() => {\r\n wallet.loaded = false;\r\n wallet.staking = is_mining;\r\n if (wallet_state === 2) { // ready\r\n wallet.loaded = true;\r\n }\r\n if (wallet_state === 3) { // error\r\n // wallet.error = true;\r\n }\r\n wallet.balance = data.balance;\r\n wallet.unlocked_balance = data.unlocked_balance;\r\n wallet.mined_total = data.minied_total;\r\n wallet.alias_available = data.is_alias_operations_available;\r\n });\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('wallet_sync_progress', (data) => {\r\n console.log('----------------- wallet_sync_progress -----------------');\r\n console.log(data);\r\n\r\n const wallet = this.variablesService.getWallet(data.wallet_id);\r\n if (wallet) {\r\n this.ngZone.run(() => {\r\n wallet.progress = (data.progress < 0) ? 0 : ((data.progress > 100) ? 100 : data.progress);\r\n if (wallet.progress === 0) {\r\n wallet.loaded = false;\r\n } else if (wallet.progress === 100) {\r\n wallet.loaded = true;\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('update_daemon_state', (data) => {\r\n console.log('----------------- update_daemon_state -----------------');\r\n console.log('DAEMON:' + data.daemon_network_state);\r\n console.log(data);\r\n // this.variablesService.exp_med_ts = data['expiration_median_timestamp'] + 600 + 1;\r\n this.variablesService.setExpMedTs(data['expiration_median_timestamp'] + 600 + 1);\r\n this.variablesService.net_time_delta_median = data.net_time_delta_median;\r\n this.variablesService.last_build_available = data.last_build_available;\r\n this.variablesService.last_build_displaymode = data.last_build_displaymode;\r\n this.variablesService.setHeightApp(data.height);\r\n\r\n this.ngZone.run(() => {\r\n this.variablesService.daemon_state = data['daemon_network_state'];\r\n if (data['daemon_network_state'] === 1) {\r\n const max = data['max_net_seen_height'] - data['synchronization_start_height'];\r\n const current = data.height - data['synchronization_start_height'];\r\n const return_val = Math.floor((current * 100 / max) * 100) / 100;\r\n if (max === 0 || return_val < 0) {\r\n this.variablesService.sync.progress_value = 0;\r\n this.variablesService.sync.progress_value_text = '0.00';\r\n } else if (return_val >= 100) {\r\n this.variablesService.sync.progress_value = 100;\r\n this.variablesService.sync.progress_value_text = '99.99';\r\n } else {\r\n this.variablesService.sync.progress_value = return_val;\r\n this.variablesService.sync.progress_value_text = return_val.toFixed(2);\r\n }\r\n }\r\n });\r\n if (!this.firstOnlineState && data['daemon_network_state'] === 2) {\r\n this.getAliases();\r\n this.backend.getDefaultFee((status_fee, data_fee) => {\r\n this.variablesService.default_fee_big = new BigNumber(data_fee);\r\n this.variablesService.default_fee = this.intToMoneyPipe.transform(data_fee);\r\n });\r\n this.firstOnlineState = true;\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('money_transfer', (data) => {\r\n console.log('----------------- money_transfer -----------------');\r\n console.log(data);\r\n\r\n if (!data.ti) {\r\n return;\r\n }\r\n\r\n const wallet_id = data.wallet_id;\r\n const tr_info = data.ti;\r\n\r\n const wallet = this.variablesService.getWallet(wallet_id);\r\n\r\n if (wallet) {\r\n this.ngZone.run(() => {\r\n\r\n if (!wallet.loaded) {\r\n wallet.balance = data.balance;\r\n wallet.unlocked_balance = data.unlocked_balance;\r\n } else {\r\n wallet.balance = data.balance;\r\n wallet.unlocked_balance = data.unlocked_balance;\r\n }\r\n\r\n if (tr_info.tx_type === 6) {\r\n this.variablesService.setRefreshStacking(wallet_id);\r\n }\r\n\r\n let tr_exists = wallet.excluded_history.some(elem => elem.tx_hash === tr_info.tx_hash);\r\n tr_exists = (!tr_exists) ? wallet.history.some(elem => elem.tx_hash === tr_info.tx_hash) : tr_exists;\r\n\r\n wallet.prepareHistory([tr_info]);\r\n\r\n if (tr_info.hasOwnProperty('contract')) {\r\n const exp_med_ts = this.variablesService.exp_med_ts;\r\n const height_app = this.variablesService.height_app;\r\n\r\n const contract = tr_info.contract[0];\r\n\r\n if (tr_exists) {\r\n for (let i = 0; i < wallet.contracts.length; i++) {\r\n if (wallet.contracts[i].contract_id === contract.contract_id && wallet.contracts[i].is_a === contract.is_a) {\r\n wallet.contracts[i].cancel_expiration_time = contract.cancel_expiration_time;\r\n wallet.contracts[i].expiration_time = contract.expiration_time;\r\n wallet.contracts[i].height = contract.height;\r\n wallet.contracts[i].timestamp = contract.timestamp;\r\n break;\r\n }\r\n }\r\n // $rootScope.getContractsRecount();\r\n return;\r\n }\r\n\r\n if (contract.state === 1 && contract.expiration_time < exp_med_ts) {\r\n contract.state = 110;\r\n } else if (contract.state === 5 && contract.cancel_expiration_time < exp_med_ts) {\r\n contract.state = 130;\r\n } else if (contract.state === 1) {\r\n const searchResult2 = this.variablesService.settings.notViewedContracts.find(elem => elem.state === 110 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult2) {\r\n if (searchResult2.time === contract.expiration_time) {\r\n contract.state = 110;\r\n } else {\r\n for (let j = 0; j < this.variablesService.settings.notViewedContracts.length; j++) {\r\n if (this.variablesService.settings.notViewedContracts[j].contract_id === contract.contract_id && this.variablesService.settings.notViewedContracts[j].is_a === contract.is_a) {\r\n this.variablesService.settings.notViewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n for (let j = 0; j < this.variablesService.settings.viewedContracts.length; j++) {\r\n if (this.variablesService.settings.viewedContracts[j].contract_id === contract.contract_id && this.variablesService.settings.viewedContracts[j].is_a === contract.is_a) {\r\n this.variablesService.settings.viewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (contract.state === 2 && (contract.height === 0 || (height_app - contract.height) < 10)) {\r\n contract.state = 201;\r\n } else if (contract.state === 2) {\r\n const searchResult3 = this.variablesService.settings.viewedContracts.some(elem => elem.state === 120 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult3) {\r\n contract.state = 120;\r\n }\r\n } else if (contract.state === 5) {\r\n const searchResult4 = this.variablesService.settings.notViewedContracts.find(elem => elem.state === 130 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult4) {\r\n if (searchResult4.time === contract.cancel_expiration_time) {\r\n contract.state = 130;\r\n } else {\r\n for (let j = 0; j < this.variablesService.settings.notViewedContracts.length; j++) {\r\n if (this.variablesService.settings.notViewedContracts[j].contract_id === contract.contract_id && this.variablesService.settings.notViewedContracts[j].is_a === contract.is_a) {\r\n this.variablesService.settings.notViewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n for (let j = 0; j < this.variablesService.settings.viewedContracts.length; j++) {\r\n if (this.variablesService.settings.viewedContracts[j].contract_id === contract.contract_id && this.variablesService.settings.viewedContracts[j].is_a === contract.is_a) {\r\n this.variablesService.settings.viewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (contract.state === 6 && (contract.height === 0 || (height_app - contract.height) < 10)) {\r\n contract.state = 601;\r\n }\r\n\r\n const searchResult = this.variablesService.settings.viewedContracts.some(elem => elem.state === contract.state && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n contract.is_new = !searchResult;\r\n\r\n let findContract = false;\r\n for (let i = 0; i < wallet.contracts.length; i++) {\r\n if (wallet.contracts[i].contract_id === contract.contract_id && wallet.contracts[i].is_a === contract.is_a) {\r\n for (const prop in contract) {\r\n if (contract.hasOwnProperty(prop)) {\r\n wallet.contracts[i][prop] = contract[prop];\r\n }\r\n }\r\n findContract = true;\r\n break;\r\n }\r\n }\r\n if (findContract === false) {\r\n wallet.contracts.push(contract);\r\n }\r\n wallet.recountNewContracts();\r\n }\r\n\r\n });\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('money_transfer_cancel', (data) => {\r\n console.log('----------------- money_transfer_cancel -----------------');\r\n console.log(data);\r\n\r\n if (!data.ti) {\r\n return;\r\n }\r\n\r\n const wallet_id = data.wallet_id;\r\n const tr_info = data.ti;\r\n const wallet = this.variablesService.getWallet(wallet_id);\r\n\r\n if (wallet) {\r\n if (tr_info.hasOwnProperty('contract')) {\r\n for (let i = 0; i < wallet.contracts.length; i++) {\r\n if (wallet.contracts[i].contract_id === tr_info.contract[0].contract_id && wallet.contracts[i].is_a === tr_info.contract[0].is_a) {\r\n if (wallet.contracts[i].state === 1 || wallet.contracts[i].state === 110) {\r\n wallet.contracts[i].is_new = true;\r\n wallet.contracts[i].state = 140;\r\n wallet.recountNewContracts();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n wallet.removeFromHistory(tr_info.tx_hash);\r\n\r\n let error_tr = '';\r\n switch (tr_info.tx_type) {\r\n case 0:\r\n error_tr = this.translate.instant('ERRORS.TX_TYPE_NORMAL') + '
' +\r\n tr_info.tx_hash + '
' + wallet.name + '
' + wallet.address + '
' +\r\n this.translate.instant('ERRORS.TX_TYPE_NORMAL_TO') + ' ' + this.intToMoneyPipe.transform(tr_info.amount) + ' ' +\r\n this.translate.instant('ERRORS.TX_TYPE_NORMAL_END');\r\n break;\r\n case 1:\r\n // this.translate.instant('ERRORS.TX_TYPE_PUSH_OFFER');\r\n break;\r\n case 2:\r\n // this.translate.instant('ERRORS.TX_TYPE_UPDATE_OFFER');\r\n break;\r\n case 3:\r\n // this.translate.instant('ERRORS.TX_TYPE_CANCEL_OFFER');\r\n break;\r\n case 4:\r\n error_tr = this.translate.instant('ERRORS.TX_TYPE_NEW_ALIAS') + '
' +\r\n tr_info.tx_hash + '
' + wallet.name + '
' + wallet.address + '
' +\r\n this.translate.instant('ERRORS.TX_TYPE_NEW_ALIAS_END');\r\n break;\r\n case 5:\r\n error_tr = this.translate.instant('ERRORS.TX_TYPE_UPDATE_ALIAS') + '
' +\r\n tr_info.tx_hash + '
' + wallet.name + '
' + wallet.address + '
' +\r\n this.translate.instant('ERRORS.TX_TYPE_NEW_ALIAS_END');\r\n break;\r\n case 6:\r\n error_tr = this.translate.instant('ERRORS.TX_TYPE_COIN_BASE');\r\n break;\r\n }\r\n if (error_tr) {\r\n this.modalService.prepareModal('error', error_tr);\r\n }\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('on_core_event', (data) => {\r\n console.log('----------------- on_core_event -----------------');\r\n console.log(data);\r\n\r\n data = JSON.parse(data);\r\n\r\n if (data.events != null) {\r\n for (let i = 0, length = data.events.length; i < length; i++) {\r\n\r\n switch (data.events[i].method) {\r\n case 'CORE_EVENT_BLOCK_ADDED':\r\n break;\r\n case 'CORE_EVENT_ADD_ALIAS':\r\n if (this.variablesService.aliasesChecked[data.events[i].details.address] != null) {\r\n this.variablesService.aliasesChecked[data.events[i].details.address]['name'] = '@' + data.events[i].details.alias;\r\n this.variablesService.aliasesChecked[data.events[i].details.address]['address'] = data.events[i].details.address;\r\n this.variablesService.aliasesChecked[data.events[i].details.address]['comment'] = data.events[i].details.comment;\r\n }\r\n if (this.variablesService.enableAliasSearch) {\r\n const newAlias = {\r\n name: '@' + data.events[i].details.alias,\r\n address: data.events[i].details.address,\r\n comment: data.events[i].details.comment\r\n };\r\n this.variablesService.aliases = this.variablesService.aliases.concat(newAlias);\r\n this.variablesService.changeAliases();\r\n }\r\n break;\r\n case 'CORE_EVENT_UPDATE_ALIAS':\r\n for (const address in this.variablesService.aliasesChecked) {\r\n if (this.variablesService.aliasesChecked.hasOwnProperty(address)) {\r\n if (this.variablesService.aliasesChecked[address].name === '@' + data.events[i].details.alias) {\r\n if (this.variablesService.aliasesChecked[address].address !== data.events[i].details.details.address) {\r\n delete this.variablesService.aliasesChecked[address]['name'];\r\n delete this.variablesService.aliasesChecked[address]['address'];\r\n delete this.variablesService.aliasesChecked[address]['comment'];\r\n } else {\r\n this.variablesService.aliasesChecked[address].comment = data.events[i].details.details.comment;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n if (this.variablesService.aliasesChecked[data.events[i].details.details.address] != null) {\r\n this.variablesService.aliasesChecked[data.events[i].details.details.address]['name'] = '@' + data.events[i].details.alias;\r\n this.variablesService.aliasesChecked[data.events[i].details.details.address]['address'] = data.events[i].details.details.address;\r\n this.variablesService.aliasesChecked[data.events[i].details.details.address]['comment'] = data.events[i].details.details.comment;\r\n }\r\n if (this.variablesService.enableAliasSearch) {\r\n const CurrentAlias = this.variablesService.aliases.find((element) => element.name === '@' + data.events[i].details.alias);\r\n if (CurrentAlias) {\r\n CurrentAlias.address = data.events[i].details.details.address;\r\n CurrentAlias.comment = data.events[i].details.details.comment;\r\n }\r\n }\r\n this.variablesService.changeAliases();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.intervalUpdateContractsState = setInterval(() => {\r\n this.variablesService.wallets.forEach((wallet) => {\r\n wallet.contracts.forEach((contract) => {\r\n if (contract.state === 201 && contract.height !== 0 && (this.variablesService.height_app - contract.height) >= 10) {\r\n contract.state = 2;\r\n contract.is_new = true;\r\n console.warn('need check state in contracts');\r\n } else if (contract.state === 601 && contract.height !== 0 && (this.variablesService.height_app - contract.height) >= 10) {\r\n contract.state = 6;\r\n contract.is_new = true;\r\n }\r\n });\r\n });\r\n }, 30000);\r\n\r\n this.expMedTsEvent = this.variablesService.getExpMedTsEvent.subscribe((newTimestamp: number) => {\r\n this.variablesService.wallets.forEach((wallet) => {\r\n wallet.contracts.forEach((contract) => {\r\n if (contract.state === 1 && contract.expiration_time <= newTimestamp) {\r\n contract.state = 110;\r\n contract.is_new = true;\r\n wallet.recountNewContracts();\r\n } else if (contract.state === 5 && contract.cancel_expiration_time <= newTimestamp) {\r\n contract.state = 130;\r\n contract.is_new = true;\r\n wallet.recountNewContracts();\r\n }\r\n });\r\n });\r\n });\r\n\r\n\r\n this.backend.getAppData((status, data) => {\r\n if (data && Object.keys(data).length > 0) {\r\n for (const key in data) {\r\n if (data.hasOwnProperty(key) && this.variablesService.settings.hasOwnProperty(key)) {\r\n this.variablesService.settings[key] = data[key];\r\n }\r\n }\r\n if (this.variablesService.settings.hasOwnProperty('theme') && ['dark', 'white', 'gray'].indexOf(this.variablesService.settings.theme) !== -1) {\r\n this.renderer.addClass(document.body, 'theme-' + this.variablesService.settings.theme);\r\n } else {\r\n this.renderer.addClass(document.body, 'theme-' + this.variablesService.defaultTheme);\r\n }\r\n if (this.variablesService.settings.hasOwnProperty('scale') && [7.5, 10, 12.5, 15].indexOf(this.variablesService.settings.scale) !== -1) {\r\n this.renderer.setStyle(document.documentElement, 'font-size', this.variablesService.settings.scale + 'px');\r\n }\r\n } else {\r\n this.variablesService.settings.theme = this.variablesService.defaultTheme;\r\n this.renderer.addClass(document.body, 'theme-' + this.variablesService.settings.theme);\r\n }\r\n\r\n this.setBackendLocalization();\r\n\r\n this.backend.setLogLevel(this.variablesService.settings.appLog);\r\n\r\n if (this.router.url !== '/login') {\r\n this.backend.haveSecureAppData((statusPass) => {\r\n if (statusPass) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/login'], {queryParams: {type: 'auth'}});\r\n });\r\n } else {\r\n if (Object.keys(data).length !== 0) {\r\n this.needOpenWallets = JSON.parse(JSON.stringify(this.variablesService.settings.wallets));\r\n this.ngZone.run(() => {\r\n this.variablesService.appLogin = true;\r\n this.router.navigate(['/']);\r\n });\r\n } else {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/login'], {queryParams: {type: 'reg'}});\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }, error => {\r\n console.log(error);\r\n });\r\n this.getMoneyEquivalent();\r\n }\r\n\r\n getMoneyEquivalent() {\r\n this.http.get('https://api.coingecko.com/api/v3/ping').subscribe(\r\n () => {\r\n this.http.get('https://api.coingecko.com/api/v3/simple/price?ids=zano&vs_currencies=usd').subscribe(\r\n data => {\r\n this.variablesService.moneyEquivalent = data['zano']['usd'];\r\n },\r\n error => {\r\n console.warn('api.coingecko.com price error: ', error);\r\n }\r\n );\r\n },\r\n error => {\r\n console.warn('api.coingecko.com error: ', error);\r\n setTimeout(() => {\r\n this.getMoneyEquivalent();\r\n }, 60000);\r\n }\r\n )\r\n }\r\n\r\n getAliases() {\r\n this.backend.getAllAliases((status, data, error) => {\r\n\r\n console.warn(error);\r\n\r\n if (error === 'CORE_BUSY') {\r\n window.setTimeout(() => {\r\n this.getAliases();\r\n }, 10000);\r\n } else if (error === 'OVERFLOW') {\r\n this.variablesService.aliases = [];\r\n this.variablesService.enableAliasSearch = false;\r\n this.variablesService.wallets.forEach(wallet => {\r\n wallet.alias = this.backend.getWalletAlias(wallet.address);\r\n });\r\n } else {\r\n this.variablesService.enableAliasSearch = true;\r\n if (data.aliases && data.aliases.length) {\r\n this.variablesService.aliases = [];\r\n data.aliases.forEach(alias => {\r\n const newAlias = {\r\n name: '@' + alias.alias,\r\n address: alias.address,\r\n comment: alias.comment\r\n };\r\n this.variablesService.aliases.push(newAlias);\r\n });\r\n this.variablesService.wallets.forEach(wallet => {\r\n wallet.alias = this.backend.getWalletAlias(wallet.address);\r\n });\r\n this.variablesService.aliases = this.variablesService.aliases.sort((a, b) => {\r\n if (a.name.length > b.name.length) {\r\n return 1;\r\n }\r\n if (a.name.length < b.name.length) {\r\n return -1;\r\n }\r\n if (a.name > b.name) {\r\n return 1;\r\n }\r\n if (a.name < b.name) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n this.variablesService.changeAliases();\r\n }\r\n }\r\n });\r\n }\r\n\r\n contextMenuCopy(target) {\r\n if (target && (target['nodeName'].toUpperCase() === 'TEXTAREA' || target['nodeName'].toUpperCase() === 'INPUT')) {\r\n const start = (target['contextSelectionStart']) ? 'contextSelectionStart' : 'selectionStart';\r\n const end = (target['contextSelectionEnd']) ? 'contextSelectionEnd' : 'selectionEnd';\r\n const canUseSelection = ((target[start]) || (target[start] === '0'));\r\n const SelectedText = (canUseSelection) ? target['value'].substring(target[start], target[end]) : target['value'];\r\n this.backend.setClipboard(String(SelectedText));\r\n }\r\n }\r\n\r\n contextMenuOnlyCopy(text) {\r\n if (text) {\r\n this.backend.setClipboard(String(text));\r\n }\r\n }\r\n\r\n contextMenuPaste(target) {\r\n if (target && (target['nodeName'].toUpperCase() === 'TEXTAREA' || target['nodeName'].toUpperCase() === 'INPUT')) {\r\n this.backend.getClipboard((status, clipboard) => {\r\n clipboard = String(clipboard);\r\n if (typeof clipboard !== 'string' || clipboard.length) {\r\n const start = (target['contextSelectionStart']) ? 'contextSelectionStart' : 'selectionStart';\r\n const end = (target['contextSelectionEnd']) ? 'contextSelectionEnd' : 'selectionEnd';\r\n const _pre = target['value'].substring(0, target[start]);\r\n const _aft = target['value'].substring(target[end], target['value'].length);\r\n let text = _pre + clipboard + _aft;\r\n const cursorPosition = (_pre + clipboard).length;\r\n if (target['maxLength'] && parseInt(target['maxLength'], 10) > 0) {\r\n text = text.substr(0, parseInt(target['maxLength'], 10));\r\n }\r\n target['value'] = text;\r\n target.setSelectionRange(cursorPosition, cursorPosition);\r\n target.dispatchEvent(new Event('input'));\r\n target['focus']();\r\n }\r\n });\r\n }\r\n }\r\n\r\n contextMenuSelect(target) {\r\n if (target && (target['nodeName'].toUpperCase() === 'TEXTAREA' || target['nodeName'].toUpperCase() === 'INPUT')) {\r\n target['focus']();\r\n setTimeout(() => {\r\n target['select']();\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.intervalUpdateContractsState) {\r\n clearInterval(this.intervalUpdateContractsState);\r\n }\r\n this.expMedTsEvent.unsubscribe();\r\n }\r\n\r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\n\r\nimport { AppComponent } from './app.component';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { SettingsComponent } from './settings/settings.component';\r\nimport { SidebarComponent } from './sidebar/sidebar.component';\r\nimport { MainComponent } from './main/main.component';\r\nimport { CreateWalletComponent } from './create-wallet/create-wallet.component';\r\nimport { OpenWalletComponent } from './open-wallet/open-wallet.component';\r\nimport { OpenWalletModalComponent } from './open-wallet-modal/open-wallet-modal.component';\r\nimport { RestoreWalletComponent } from './restore-wallet/restore-wallet.component';\r\nimport { SeedPhraseComponent } from './seed-phrase/seed-phrase.component';\r\nimport { WalletDetailsComponent } from './wallet-details/wallet-details.component';\r\nimport { AssignAliasComponent } from './assign-alias/assign-alias.component';\r\nimport { EditAliasComponent } from './edit-alias/edit-alias.component';\r\nimport { TransferAliasComponent } from './transfer-alias/transfer-alias.component';\r\nimport { WalletComponent } from './wallet/wallet.component';\r\nimport { SendComponent } from './send/send.component';\r\nimport { ReceiveComponent } from './receive/receive.component';\r\nimport { HistoryComponent } from './history/history.component';\r\nimport { ContractsComponent } from './contracts/contracts.component';\r\nimport { PurchaseComponent } from './purchase/purchase.component';\r\nimport { MessagesComponent } from './messages/messages.component';\r\nimport { TypingMessageComponent } from './typing-message/typing-message.component';\r\nimport { StakingComponent } from './staking/staking.component';\r\n\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\n\r\nimport { BackendService } from './_helpers/services/backend.service';\r\nimport { ModalService } from './_helpers/services/modal.service';\r\nimport { MoneyToIntPipe } from './_helpers/pipes/money-to-int.pipe';\r\nimport { IntToMoneyPipe } from './_helpers/pipes/int-to-money.pipe';\r\nimport { HistoryTypeMessagesPipe } from './_helpers/pipes/history-type-messages.pipe';\r\nimport { ContractStatusMessagesPipe } from './_helpers/pipes/contract-status-messages.pipe';\r\nimport { ContractTimeLeftPipe } from './_helpers/pipes/contract-time-left.pipe';\r\nimport { TooltipDirective } from './_helpers/directives/tooltip.directive';\r\nimport { InputValidateDirective } from './_helpers/directives/input-validate/input-validate.directive';\r\nimport { StakingSwitchComponent } from './_helpers/directives/staking-switch/staking-switch.component';\r\nimport { ModalContainerComponent } from './_helpers/directives/modal-container/modal-container.component';\r\nimport { TransactionDetailsComponent } from './_helpers/directives/transaction-details/transaction-details.component';\r\nimport { ContextMenuModule } from 'ngx-contextmenu';\r\nimport { ChartModule, HIGHCHARTS_MODULES } from 'angular-highcharts';\r\nimport * as highcharts from 'highcharts';\r\nimport exporting from 'highcharts/modules/exporting.src';\r\nimport { ProgressContainerComponent } from './_helpers/directives/progress-container/progress-container.component';\r\nimport { InputDisableSelectionDirective } from './_helpers/directives/input-disable-selection/input-disable-selection.directive';\r\n\r\nexport function HttpLoaderFactory(httpClient: HttpClient) {\r\n return new TranslateHttpLoader(httpClient, './assets/i18n/', '.json');\r\n}\r\n\r\n\r\n// import * as more from 'highcharts/highcharts-more.src';\r\n// import * as exporting from 'highcharts/modules/exporting.src';\r\n// import * as highstock from 'highcharts/modules/stock.src';\r\n\r\nexport function highchartsFactory() {\r\n // Default options.\r\n highcharts.setOptions({\r\n global: {\r\n useUTC: false\r\n }\r\n });\r\n\r\n return [exporting];\r\n}\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n LoginComponent,\r\n SettingsComponent,\r\n SidebarComponent,\r\n MainComponent,\r\n CreateWalletComponent,\r\n OpenWalletComponent,\r\n OpenWalletModalComponent,\r\n RestoreWalletComponent,\r\n SeedPhraseComponent,\r\n WalletDetailsComponent,\r\n AssignAliasComponent,\r\n EditAliasComponent,\r\n TransferAliasComponent,\r\n WalletComponent,\r\n SendComponent,\r\n ReceiveComponent,\r\n HistoryComponent,\r\n ContractsComponent,\r\n PurchaseComponent,\r\n MessagesComponent,\r\n StakingComponent,\r\n TypingMessageComponent,\r\n MoneyToIntPipe,\r\n IntToMoneyPipe,\r\n StakingSwitchComponent,\r\n HistoryTypeMessagesPipe,\r\n ContractStatusMessagesPipe,\r\n ContractTimeLeftPipe,\r\n TooltipDirective,\r\n InputValidateDirective,\r\n ModalContainerComponent,\r\n TransactionDetailsComponent,\r\n ProgressContainerComponent,\r\n InputDisableSelectionDirective\r\n ],\r\n imports: [\r\n BrowserModule,\r\n AppRoutingModule,\r\n HttpClientModule,\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: HttpLoaderFactory,\r\n deps: [HttpClient]\r\n }\r\n }),\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgSelectModule,\r\n ChartModule,\r\n ContextMenuModule.forRoot()\r\n ],\r\n providers: [\r\n BackendService,\r\n ModalService,\r\n MoneyToIntPipe,\r\n IntToMoneyPipe,\r\n { provide: HIGHCHARTS_MODULES, useFactory: highchartsFactory }\r\n // {provide: HIGHCHARTS_MODULES, useFactory: () => [ highstock, more, exporting ] }\r\n ],\r\n entryComponents: [\r\n ModalContainerComponent\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ wallet.name }}\\r\\n {{ 'BREADCRUMBS.ASSIGN_ALIAS' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
6 && assignForm.get('name').value.length <= 25\\\">\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_WRONG' | translate }}\\r\\n
\\r\\n
25\\\">\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_EXISTS' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
= variablesService.maxCommentLength\\\">\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
{{ \\\"ASSIGN_ALIAS.COST\\\" | translate : {value: alias.price | intToMoney, currency: variablesService.defaultCurrency} }}
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\"","module.exports = \".form-assign {\\n margin: 2.4rem 0; }\\n .form-assign .alias-name {\\n width: 50%; }\\n .form-assign .alias-cost {\\n font-size: 1.3rem;\\n margin-top: 2rem; }\\n .form-assign .wrap-buttons {\\n display: flex;\\n justify-content: space-between;\\n margin: 2.5rem -0.7rem; }\\n .form-assign .wrap-buttons button {\\n margin: 0 0.7rem;\\n width: 15rem; }\\n .assign-alias-tooltip {\\n font-size: 1.3rem;\\n line-height: 2rem;\\n padding: 1rem 1.5rem;\\n max-width: 46rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvYXNzaWduLWFsaWFzL0U6XFxaYW5vXFxjaGVja1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXGFzc2lnbi1hbGlhc1xcYXNzaWduLWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQTtFQUtsQjtFQUNFLGlCQUFpQjtFQUNqQixpQkFBaUI7RUFDakIsb0JBQW9CO0VBQ3BCLGdCQUFnQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvYXNzaWduLWFsaWFzL2Fzc2lnbi1hbGlhcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWFzc2lnbiB7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuXHJcbiAgLmFsaWFzLW5hbWUge1xyXG4gICAgd2lkdGg6IDUwJTtcclxuICB9XHJcblxyXG4gIC5hbGlhcy1jb3N0IHtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbWFyZ2luLXRvcDogMnJlbTtcclxuICB9XHJcblxyXG4gIC53cmFwLWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIG1hcmdpbjogMi41cmVtIC0wLjdyZW07XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAwIDAuN3JlbTtcclxuICAgICAgd2lkdGg6IDE1cmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmFzc2lnbi1hbGlhcy10b29sdGlwIHtcclxuICBmb250LXNpemU6IDEuM3JlbTtcclxuICBsaW5lLWhlaWdodDogMnJlbTtcclxuICBwYWRkaW5nOiAxcmVtIDEuNXJlbTtcclxuICBtYXgtd2lkdGg6IDQ2cmVtO1xyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnInit, OnDestroy} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {Location} from '@angular/common';\r\nimport {Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {MoneyToIntPipe} from '../_helpers/pipes/money-to-int.pipe';\r\nimport {IntToMoneyPipe} from '../_helpers/pipes/int-to-money.pipe';\r\nimport BigNumber from 'bignumber.js';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-assign-alias',\r\n templateUrl: './assign-alias.component.html',\r\n styleUrls: ['./assign-alias.component.scss']\r\n})\r\nexport class AssignAliasComponent implements OnInit, OnDestroy {\r\n\r\n wallet: Wallet;\r\n assignForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, Validators.pattern(/^@?[a-z0-9\\.\\-]{6,25}$/)]),\r\n comment: new FormControl('', [(g: FormControl) => {\r\n if (g.value > this.variablesService.maxCommentLength) {\r\n return {'maxLength': true};\r\n } else {\r\n return null;\r\n }\r\n }])\r\n });\r\n assignFormSubscription: Subscription;\r\n alias = {\r\n name: '',\r\n fee: this.variablesService.default_fee,\r\n price: new BigNumber(0),\r\n reward: '0',\r\n rewardOriginal: '0',\r\n comment: '',\r\n exists: false\r\n };\r\n canRegister = false;\r\n notEnoughMoney = false;\r\n\r\n constructor(\r\n private ngZone: NgZone,\r\n private location: Location,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private moneyToInt: MoneyToIntPipe,\r\n private intToMoney: IntToMoneyPipe\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.wallet = this.variablesService.currentWallet;\r\n this.assignFormSubscription = this.assignForm.get('name').valueChanges.subscribe(value => {\r\n this.canRegister = false;\r\n this.alias.exists = false;\r\n const newName = value.toLowerCase().replace('@', '');\r\n if (!(this.assignForm.controls['name'].errors && this.assignForm.controls['name'].errors.hasOwnProperty('pattern')) && newName.length >= 6 && newName.length <= 25) {\r\n this.backend.getAliasByName(newName, status => {\r\n this.ngZone.run(() => {\r\n this.alias.exists = status;\r\n });\r\n if (!status) {\r\n this.alias.price = new BigNumber(0);\r\n this.backend.getAliasCoast(newName, (statusPrice, dataPrice) => {\r\n this.ngZone.run(() => {\r\n if (statusPrice) {\r\n this.alias.price = BigNumber.sum(dataPrice['coast'], this.variablesService.default_fee_big);\r\n }\r\n this.notEnoughMoney = this.alias.price.isGreaterThan(this.wallet.unlocked_balance);\r\n this.alias.reward = this.intToMoney.transform(this.alias.price, false);\r\n this.alias.rewardOriginal = this.intToMoney.transform(dataPrice['coast'], false);\r\n this.canRegister = !this.notEnoughMoney;\r\n });\r\n });\r\n } else {\r\n this.notEnoughMoney = false;\r\n this.alias.reward = '0';\r\n this.alias.rewardOriginal = '0';\r\n }\r\n });\r\n } else {\r\n this.notEnoughMoney = false;\r\n this.alias.reward = '0';\r\n this.alias.rewardOriginal = '0';\r\n }\r\n this.alias.name = newName;\r\n });\r\n }\r\n\r\n assignAlias() {\r\n const alias = this.backend.getWalletAlias(this.wallet.address);\r\n if (alias.hasOwnProperty('name')) {\r\n this.modalService.prepareModal('info', 'ASSIGN_ALIAS.ONE_ALIAS');\r\n } else {\r\n this.alias.comment = this.assignForm.get('comment').value;\r\n this.backend.registerAlias(this.wallet.wallet_id, this.alias.name, this.wallet.address, this.alias.fee, this.alias.comment, this.alias.rewardOriginal, (status, data) => {\r\n if (status) {\r\n this.wallet.wakeAlias = true;\r\n this.modalService.prepareModal('info', 'ASSIGN_ALIAS.REQUEST_ADD_REG');\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.wallet.wallet_id]);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.assignFormSubscription.unsubscribe();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n {{ 'CONTRACTS.EMPTY' | translate }}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{ 'CONTRACTS.CONTRACTS' | translate }}{{ 'CONTRACTS.DATE' | translate }}{{ 'CONTRACTS.AMOUNT' | translate }}{{ 'CONTRACTS.STATUS' | translate }}{{ 'CONTRACTS.COMMENTS' | translate }}
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{item.private_detailes.t}}\\r\\n
\\r\\n
\\r\\n
{{item.timestamp * 1000 | date : 'dd-MM-yyyy HH:mm'}}
\\r\\n
\\r\\n
{{item.private_detailes.to_pay | intToMoney}} {{variablesService.defaultCurrency}}
\\r\\n
\\r\\n
\\r\\n {{item.state | contractStatusMessages : item.is_a}}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{item.private_detailes.c}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.empty-contracts {\\n font-size: 1.5rem; }\\n\\n.wrap-table {\\n margin: -3rem -3rem 0 -3rem;\\n overflow-x: auto; }\\n\\n.wrap-table table tbody tr {\\n cursor: pointer;\\n outline: none !important; }\\n\\n.wrap-table table tbody tr .contract {\\n position: relative;\\n display: flex;\\n align-items: center; }\\n\\n.wrap-table table tbody tr .contract .icon {\\n flex-shrink: 0; }\\n\\n.wrap-table table tbody tr .contract .icon.new, .wrap-table table tbody tr .contract .icon.alert {\\n position: absolute;\\n top: 0; }\\n\\n.wrap-table table tbody tr .contract .icon.new {\\n left: -2.3rem;\\n -webkit-mask: url('new.svg') no-repeat center;\\n mask: url('new.svg') no-repeat center;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.wrap-table table tbody tr .contract .icon.alert {\\n top: 0.2rem;\\n left: -2.1rem;\\n -webkit-mask: url('alert.svg') no-repeat center;\\n mask: url('alert.svg') no-repeat center;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n.wrap-table table tbody tr .contract .icon.purchase, .wrap-table table tbody tr .contract .icon.sell {\\n margin-right: 1rem;\\n width: 1.5rem;\\n height: 1.5rem; }\\n\\n.wrap-table table tbody tr .contract .icon.purchase {\\n -webkit-mask: url('purchase.svg') no-repeat center;\\n mask: url('purchase.svg') no-repeat center; }\\n\\n.wrap-table table tbody tr .contract .icon.sell {\\n -webkit-mask: url('sell.svg') no-repeat center;\\n mask: url('sell.svg') no-repeat center; }\\n\\n.wrap-table table tbody tr .contract span {\\n text-overflow: ellipsis;\\n overflow: hidden; }\\n\\n.wrap-table table tbody tr .status, .wrap-table table tbody tr .comment {\\n display: inline-block;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n max-width: 100%; }\\n\\n.contracts-buttons {\\n display: flex;\\n margin: 3rem 0;\\n width: 50%; }\\n\\n.contracts-buttons button {\\n flex: 0 1 50%;\\n margin-right: 1.5rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29udHJhY3RzL0U6XFxaYW5vXFxjaGVja1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXGNvbnRyYWN0c1xcY29udHJhY3RzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsMkJBQTJCO0VBQzNCLGdCQUFnQixFQUFBOztBQUZsQjtJQVNRLGVBQWU7SUFDZix3QkFBd0IsRUFBQTs7QUFWaEM7TUFhVSxrQkFBa0I7TUFDbEIsYUFBYTtNQUNiLG1CQUFtQixFQUFBOztBQWY3QjtRQWtCWSxjQUFjLEVBQUE7O0FBbEIxQjtVQXFCYyxrQkFBa0I7VUFDbEIsTUFBTSxFQUFBOztBQXRCcEI7VUEwQmMsYUFBYTtVQUNiLDZDQUFzRDtrQkFBdEQscUNBQXNEO1VBQ3RELGFBQWE7VUFDYixjQUFjLEVBQUE7O0FBN0I1QjtVQWlDYyxXQUFXO1VBQ1gsYUFBYTtVQUNiLCtDQUF3RDtrQkFBeEQsdUNBQXdEO1VBQ3hELGFBQWE7VUFDYixjQUFjLEVBQUE7O0FBckM1QjtVQXlDYyxrQkFBa0I7VUFDbEIsYUFBYTtVQUNiLGNBQWMsRUFBQTs7QUEzQzVCO1VBK0NjLGtEQUEyRDtrQkFBM0QsMENBQTJELEVBQUE7O0FBL0N6RTtVQW1EYyw4Q0FBdUQ7a0JBQXZELHNDQUF1RCxFQUFBOztBQW5EckU7UUF3RFksdUJBQXVCO1FBQ3ZCLGdCQUFnQixFQUFBOztBQXpENUI7TUE4RFUscUJBQXFCO01BQ3JCLHVCQUF1QjtNQUN2QixnQkFBZ0I7TUFDaEIsZUFBZSxFQUFBOztBQU96QjtFQUNFLGFBQWE7RUFDYixjQUFjO0VBQ2QsVUFBVSxFQUFBOztBQUhaO0lBTUksYUFBYTtJQUNiLG9CQUFvQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvY29udHJhY3RzL2NvbnRyYWN0cy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmVtcHR5LWNvbnRyYWN0cyB7XHJcbiAgZm9udC1zaXplOiAxLjVyZW07XHJcbn1cclxuXHJcbi53cmFwLXRhYmxlIHtcclxuICBtYXJnaW46IC0zcmVtIC0zcmVtIDAgLTNyZW07XHJcbiAgb3ZlcmZsb3cteDogYXV0bztcclxuXHJcbiAgdGFibGUge1xyXG5cclxuICAgIHRib2R5IHtcclxuXHJcbiAgICAgIHRyIHtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xyXG5cclxuICAgICAgICAuY29udHJhY3Qge1xyXG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gICAgICAgICAgLmljb24ge1xyXG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcclxuXHJcbiAgICAgICAgICAgICYubmV3LCAmLmFsZXJ0IHtcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAmLm5ldyB7XHJcbiAgICAgICAgICAgICAgbGVmdDogLTIuM3JlbTtcclxuICAgICAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL25ldy5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDEuN3JlbTtcclxuICAgICAgICAgICAgICBoZWlnaHQ6IDEuN3JlbTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJi5hbGVydCB7XHJcbiAgICAgICAgICAgICAgdG9wOiAwLjJyZW07XHJcbiAgICAgICAgICAgICAgbGVmdDogLTIuMXJlbTtcclxuICAgICAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2FsZXJ0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICAgICAgICB3aWR0aDogMS4ycmVtO1xyXG4gICAgICAgICAgICAgIGhlaWdodDogMS4ycmVtO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAmLnB1cmNoYXNlLCAmLnNlbGwge1xyXG4gICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcclxuICAgICAgICAgICAgICB3aWR0aDogMS41cmVtO1xyXG4gICAgICAgICAgICAgIGhlaWdodDogMS41cmVtO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAmLnB1cmNoYXNlIHtcclxuICAgICAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3B1cmNoYXNlLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJi5zZWxsIHtcclxuICAgICAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3NlbGwuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgc3BhbiB7XHJcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnN0YXR1cywgLmNvbW1lbnQge1xyXG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmNvbnRyYWN0cy1idXR0b25zIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIG1hcmdpbjogM3JlbSAwO1xyXG4gIHdpZHRoOiA1MCU7XHJcblxyXG4gIGJ1dHRvbiB7XHJcbiAgICBmbGV4OiAwIDEgNTAlO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW07XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, OnInit, OnDestroy} from '@angular/core';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\n\r\n@Component({\r\n selector: 'app-contracts',\r\n templateUrl: './contracts.component.html',\r\n styleUrls: ['./contracts.component.scss']\r\n})\r\nexport class ContractsComponent implements OnInit, OnDestroy {\r\n\r\n parentRouting;\r\n walletId;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n public variablesService: VariablesService\r\n ) {\r\n }\r\n\r\n public get sortedArrayContracts(): any[] {\r\n return this.variablesService.currentWallet.contracts.sort((a, b) => {\r\n if (a.is_new < b.is_new) {\r\n return 1;\r\n }\r\n if (a.is_new > b.is_new) {\r\n return -1;\r\n }\r\n if (a.timestamp < b.timestamp) {\r\n return 1;\r\n }\r\n if (a.timestamp > b.timestamp) {\r\n return -1;\r\n }\r\n if (a.contract_id < b.contract_id) {\r\n return 1;\r\n }\r\n if (a.contract_id > b.contract_id) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(params => {\r\n if (params.hasOwnProperty('id')) {\r\n this.walletId = params['id'];\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\\r\\n {{ 'BREADCRUMBS.CREATE_WALLET' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'CREATE_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'CREATE_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\\r\\n
\\r\\n
\\r\\n
= variablesService.maxWalletNameLength\\\">\\r\\n {{ 'CREATE_WALLET.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'CREATE_WALLET.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \":host {\\n position: relative; }\\n\\n.form-create {\\n margin: 2.4rem 0;\\n width: 50%; }\\n\\n.form-create .wrap-buttons {\\n display: flex;\\n margin: 2.5rem -0.7rem; }\\n\\n.form-create .wrap-buttons button {\\n margin: 0 0.7rem; }\\n\\n.form-create .wrap-buttons button.transparent-button {\\n flex-basis: 50%; }\\n\\n.form-create .wrap-buttons button.select-button {\\n flex-basis: 60%; }\\n\\n.form-create .wrap-buttons button.create-button {\\n flex: 1 1 50%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY3JlYXRlLXdhbGxldC9FOlxcWmFub1xcY2hlY2tcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxjcmVhdGUtd2FsbGV0XFxjcmVhdGUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTs7QUFGWjtJQUtJLGFBQWE7SUFDYixzQkFBc0IsRUFBQTs7QUFOMUI7TUFTTSxnQkFBZ0IsRUFBQTs7QUFUdEI7UUFZUSxlQUFlLEVBQUE7O0FBWnZCO1FBZ0JRLGVBQWUsRUFBQTs7QUFoQnZCO1FBb0JRLGFBQWEsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2NyZWF0ZS13YWxsZXQvY3JlYXRlLXdhbGxldC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5mb3JtLWNyZWF0ZSB7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuICB3aWR0aDogNTAlO1xyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcblxyXG4gICAgICAmLnRyYW5zcGFyZW50LWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleC1iYXNpczogNTAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnNlbGVjdC1idXR0b24ge1xyXG4gICAgICAgIGZsZXgtYmFzaXM6IDYwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5jcmVhdGUtYnV0dG9uIHtcclxuICAgICAgICBmbGV4OiAxIDEgNTAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Router} from '@angular/router';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-create-wallet',\r\n templateUrl: './create-wallet.component.html',\r\n styleUrls: ['./create-wallet.component.scss']\r\n})\r\nexport class CreateWalletComponent implements OnInit {\r\n\r\n createForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, (g: FormControl) => {\r\n for (let i = 0; i < this.variablesService.wallets.length; i++) {\r\n if (g.value === this.variablesService.wallets[i].name) {\r\n return {'duplicate': true};\r\n }\r\n }\r\n return null;\r\n }]),\r\n password: new FormControl(''),\r\n confirm: new FormControl('')\r\n }, function (g: FormGroup) {\r\n return g.get('password').value === g.get('confirm').value ? null : {'confirm_mismatch': true};\r\n });\r\n\r\n wallet = {\r\n id: ''\r\n };\r\n\r\n walletSaved = false;\r\n walletSavedName = '';\r\n progressWidth = '9rem';\r\n\r\n constructor(\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n createWallet() {\r\n this.ngZone.run(() => {\r\n this.progressWidth = '100%';\r\n this.router.navigate(['/seed-phrase'], {queryParams: {wallet_id: this.wallet.id}});\r\n });\r\n }\r\n\r\n saveWallet() {\r\n if (this.createForm.valid && this.createForm.get('name').value.length <= this.variablesService.maxWalletNameLength) {\r\n this.backend.saveFileDialog(this.translate.instant('CREATE_WALLET.TITLE_SAVE'), '*', this.variablesService.settings.default_path, (file_status, file_data) => {\r\n if (file_status) {\r\n this.variablesService.settings.default_path = file_data.path.substr(0, file_data.path.lastIndexOf('/'));\r\n this.walletSavedName = file_data.path.substr(file_data.path.lastIndexOf('/') + 1, file_data.path.length - 1);\r\n this.backend.generateWallet(file_data.path, this.createForm.get('password').value, (generate_status, generate_data, errorCode) => {\r\n if (generate_status) {\r\n this.wallet.id = generate_data.wallet_id;\r\n this.variablesService.opening_wallet = new Wallet(\r\n generate_data.wallet_id,\r\n this.createForm.get('name').value,\r\n this.createForm.get('password').value,\r\n generate_data['wi'].path,\r\n generate_data['wi'].address,\r\n generate_data['wi'].balance,\r\n generate_data['wi'].unlocked_balance,\r\n generate_data['wi'].mined_total,\r\n generate_data['wi'].tracking_hey\r\n );\r\n this.variablesService.opening_wallet.alias = this.backend.getWalletAlias(generate_data['wi'].address);\r\n this.ngZone.run(() => {\r\n this.walletSaved = true;\r\n this.progressWidth = '50%';\r\n });\r\n } else {\r\n if (errorCode && errorCode === 'ALREADY_EXISTS') {\r\n this.modalService.prepareModal('error', 'CREATE_WALLET.ERROR_CANNOT_SAVE_TOP');\r\n } else {\r\n this.modalService.prepareModal('error', 'CREATE_WALLET.ERROR_CANNOT_SAVE_SYSTEM');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ wallet.name }}\\r\\n {{ 'BREADCRUMBS.EDIT_ALIAS' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
0 && notEnoughMoney\\\">\\r\\n {{ 'EDIT_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\\r\\n
\\r\\n
= variablesService.maxCommentLength\\\">\\r\\n {{ 'EDIT_ALIAS.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
{{ \\\"EDIT_ALIAS.COST\\\" | translate : {value: variablesService.default_fee, currency: variablesService.defaultCurrency} }}
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \".form-edit {\\n margin: 2.4rem 0; }\\n .form-edit .alias-name {\\n width: 50%; }\\n .form-edit .alias-cost {\\n font-size: 1.3rem;\\n margin-top: 2rem; }\\n .form-edit .wrap-buttons {\\n display: flex;\\n justify-content: space-between;\\n margin: 2.5rem -0.7rem; }\\n .form-edit .wrap-buttons button {\\n margin: 0 0.7rem;\\n width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZWRpdC1hbGlhcy9FOlxcWmFub1xcY2hlY2tcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxlZGl0LWFsaWFzXFxlZGl0LWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQSIsImZpbGUiOiJzcmMvYXBwL2VkaXQtYWxpYXMvZWRpdC1hbGlhcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWVkaXQge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcblxyXG4gIC5hbGlhcy1uYW1lIHtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgfVxyXG5cclxuICAuYWxpYXMtY29zdCB7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbi10b3A6IDJyZW07XHJcbiAgfVxyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcbiAgICAgIHdpZHRoOiAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {Location} from '@angular/common';\r\nimport {Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\n\r\n@Component({\r\n selector: 'app-edit-alias',\r\n templateUrl: './edit-alias.component.html',\r\n styleUrls: ['./edit-alias.component.scss']\r\n})\r\nexport class EditAliasComponent implements OnInit {\r\n\r\n wallet: Wallet;\r\n alias: any;\r\n oldAliasComment: string;\r\n notEnoughMoney: boolean;\r\n requestProcessing = false;\r\n\r\n constructor(\r\n private location: Location,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.wallet = this.variablesService.currentWallet;\r\n const alias = this.backend.getWalletAlias(this.wallet.address);\r\n this.alias = {\r\n name: alias.name,\r\n address: alias.address,\r\n comment: alias.comment\r\n };\r\n this.oldAliasComment = alias.comment;\r\n this.notEnoughMoney = this.wallet.unlocked_balance.isLessThan(this.variablesService.default_fee_big);\r\n }\r\n\r\n updateAlias() {\r\n if (this.requestProcessing || this.notEnoughMoney || this.oldAliasComment === this.alias.comment || this.alias.comment.length > this.variablesService.maxCommentLength) {\r\n return;\r\n }\r\n this.requestProcessing = true;\r\n this.backend.updateAlias(this.wallet.wallet_id, this.alias, this.variablesService.default_fee, (status) => {\r\n if (status) {\r\n this.modalService.prepareModal('success', '');\r\n this.wallet.alias['comment'] = this.alias.comment;\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.wallet.wallet_id]);\r\n });\r\n }\r\n this.requestProcessing = false;\r\n });\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{ 'HISTORY.STATUS' | translate }}{{ 'HISTORY.DATE' | translate }}{{ 'HISTORY.AMOUNT' | translate }}{{ 'HISTORY.FEE' | translate }}{{ 'HISTORY.ADDRESS' | translate }}
\\r\\n
\\r\\n 0\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n {{ (item.is_income ? 'HISTORY.RECEIVED' : 'HISTORY.SEND') | translate }}\\r\\n
\\r\\n
{{item.timestamp * 1000 | date : 'dd-MM-yyyy HH:mm'}}\\r\\n {{item.sortAmount | intToMoney}} {{variablesService.defaultCurrency}}\\r\\n \\r\\n {{item.sortFee | intToMoney}} {{variablesService.defaultCurrency}}\\r\\n \\r\\n {{item | historyTypeMessages}}\\r\\n {{item.remote_addresses[0]}}\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.wrap-table {\\n margin: -3rem; }\\n\\n.wrap-table table tbody tr td {\\n min-width: 10rem; }\\n\\n.wrap-table table tbody tr .status {\\n position: relative;\\n display: flex;\\n align-items: center; }\\n\\n.wrap-table table tbody tr .status .confirmation {\\n position: absolute;\\n top: 50%;\\n left: -2rem;\\n transform: translateY(-50%);\\n display: flex;\\n align-items: flex-end;\\n width: 0.7rem;\\n height: 1.5rem; }\\n\\n.wrap-table table tbody tr .status .confirmation .fill {\\n width: 100%; }\\n\\n.wrap-table table tbody tr .status .lock-transaction {\\n position: absolute;\\n top: 50%;\\n left: -2rem;\\n transform: translateY(-50%);\\n -webkit-mask: url('lock-transaction.svg') no-repeat center;\\n mask: url('lock-transaction.svg') no-repeat center;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n.wrap-table table tbody tr .status .status-transaction {\\n margin-right: 1rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.wrap-table table tbody tr .status.send .status-transaction {\\n -webkit-mask: url('send.svg') no-repeat center;\\n mask: url('send.svg') no-repeat center; }\\n\\n.wrap-table table tbody tr .status.received .status-transaction {\\n -webkit-mask: url('receive.svg') no-repeat center;\\n mask: url('receive.svg') no-repeat center; }\\n\\n.wrap-table table tbody tr .remote-address {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n max-width: 25vw; }\\n\\n.wrap-table table tbody tr:not(.transaction-details) {\\n cursor: pointer; }\\n\\n.wrap-table table tbody tr.transaction-details {\\n transition: 0.5s height linear, 0s font-size;\\n transition-delay: 0s, 0.5s;\\n height: 0; }\\n\\n.wrap-table table tbody tr.transaction-details.open {\\n height: 16.2rem; }\\n\\n.wrap-table table tbody tr.transaction-details td {\\n position: relative;\\n overflow: hidden;\\n line-height: inherit;\\n padding-top: 0;\\n padding-bottom: 0; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvaGlzdG9yeS9FOlxcWmFub1xcY2hlY2tcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxoaXN0b3J5XFxoaXN0b3J5LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBQ0UsYUFBYSxFQUFBOztBQURmO0lBVVUsZ0JBQWdCLEVBQUE7O0FBVjFCO0lBY1Usa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixtQkFBbUIsRUFBQTs7QUFoQjdCO01BbUJZLGtCQUFrQjtNQUNsQixRQUFRO01BQ1IsV0FBVztNQUNYLDJCQUEyQjtNQUMzQixhQUFhO01BQ2IscUJBQXFCO01BQ3JCLGFBQWE7TUFDYixjQUFjLEVBQUE7O0FBMUIxQjtRQTZCYyxXQUFXLEVBQUE7O0FBN0J6QjtNQWtDWSxrQkFBa0I7TUFDbEIsUUFBUTtNQUNSLFdBQVc7TUFDWCwyQkFBMkI7TUFDM0IsMERBQW1FO2NBQW5FLGtEQUFtRTtNQUNuRSxhQUFhO01BQ2IsY0FBYyxFQUFBOztBQXhDMUI7TUE0Q1ksa0JBQWtCO01BQ2xCLGFBQWE7TUFDYixjQUFjLEVBQUE7O0FBOUMxQjtNQW9EYyw4Q0FBdUQ7Y0FBdkQsc0NBQXVELEVBQUE7O0FBcERyRTtNQTJEYyxpREFBMEQ7Y0FBMUQseUNBQTBELEVBQUE7O0FBM0R4RTtJQWlFVSxnQkFBZ0I7SUFDaEIsdUJBQXVCO0lBQ3ZCLGVBQWUsRUFBQTs7QUFuRXpCO0lBdUVVLGVBQWUsRUFBQTs7QUF2RXpCO0lBNEVVLDRDQUE0QztJQUM1QywwQkFBMEI7SUFDMUIsU0FBUyxFQUFBOztBQTlFbkI7TUFpRlksZUFBZSxFQUFBOztBQWpGM0I7TUFxRlksa0JBQWtCO01BQ2xCLGdCQUFnQjtNQUNoQixvQkFBb0I7TUFDcEIsY0FBYztNQUNkLGlCQUFpQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvaGlzdG9yeS9oaXN0b3J5LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4ud3JhcC10YWJsZSB7XHJcbiAgbWFyZ2luOiAtM3JlbTtcclxuXHJcbiAgdGFibGUge1xyXG5cclxuICAgIHRib2R5IHtcclxuXHJcbiAgICAgIHRyIHtcclxuXHJcbiAgICAgICAgdGQge1xyXG4gICAgICAgICAgbWluLXdpZHRoOiAxMHJlbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zdGF0dXMge1xyXG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gICAgICAgICAgLmNvbmZpcm1hdGlvbiB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICAgIGxlZnQ6IC0ycmVtO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICAgICAgICAgICAgd2lkdGg6IDAuN3JlbTtcclxuICAgICAgICAgICAgaGVpZ2h0OiAxLjVyZW07XHJcblxyXG4gICAgICAgICAgICAuZmlsbCB7XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAubG9jay10cmFuc2FjdGlvbiB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICAgIGxlZnQ6IC0ycmVtO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvbG9jay10cmFuc2FjdGlvbi5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgICAgIHdpZHRoOiAxLjJyZW07XHJcbiAgICAgICAgICAgIGhlaWdodDogMS4ycmVtO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5zdGF0dXMtdHJhbnNhY3Rpb24ge1xyXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XHJcbiAgICAgICAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgICAgICAgIGhlaWdodDogMS43cmVtO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICYuc2VuZCAge1xyXG5cclxuICAgICAgICAgICAgLnN0YXR1cy10cmFuc2FjdGlvbiB7XHJcbiAgICAgICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9zZW5kLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICYucmVjZWl2ZWQge1xyXG5cclxuICAgICAgICAgICAgLnN0YXR1cy10cmFuc2FjdGlvbiB7XHJcbiAgICAgICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9yZWNlaXZlLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnJlbW90ZS1hZGRyZXNzIHtcclxuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgICAgICAgIG1heC13aWR0aDogMjV2dztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6bm90KC50cmFuc2FjdGlvbi1kZXRhaWxzKSB7XHJcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLnRyYW5zYWN0aW9uLWRldGFpbHMge1xyXG4gICAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiAwLjVzIGhlaWdodCBsaW5lYXIsIDBzIGZvbnQtc2l6ZTtcclxuICAgICAgICAgIHRyYW5zaXRpb246IDAuNXMgaGVpZ2h0IGxpbmVhciwgMHMgZm9udC1zaXplO1xyXG4gICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMHMsIDAuNXM7XHJcbiAgICAgICAgICBoZWlnaHQ6IDA7XHJcblxyXG4gICAgICAgICAgJi5vcGVuIHtcclxuICAgICAgICAgICAgaGVpZ2h0OiAxNi4ycmVtO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRkIHtcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcclxuICAgICAgICAgICAgcGFkZGluZy10b3A6IDA7XHJcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, OnInit, OnDestroy, AfterViewChecked, ViewChild, ElementRef} from '@angular/core';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ActivatedRoute} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-history',\r\n templateUrl: './history.component.html',\r\n styleUrls: ['./history.component.scss']\r\n})\r\nexport class HistoryComponent implements OnInit, OnDestroy, AfterViewChecked {\r\n parentRouting;\r\n openedDetails = false;\r\n calculatedWidth = [];\r\n @ViewChild('head') head: ElementRef;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n public variablesService: VariablesService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(() => {\r\n this.openedDetails = false;\r\n });\r\n }\r\n\r\n ngAfterViewChecked() {\r\n this.calculateWidth();\r\n }\r\n\r\n getHeight(item) {\r\n if ((this.variablesService.height_app - item.height >= 10 && item.height !== 0) || (item.is_mining === true && item.height === 0)) {\r\n return 100;\r\n } else {\r\n if (item.height === 0 || this.variablesService.height_app - item.height < 0) {\r\n return 0;\r\n } else {\r\n return (this.variablesService.height_app - item.height) * 10;\r\n }\r\n }\r\n }\r\n\r\n openDetails(tx_hash) {\r\n if (tx_hash === this.openedDetails) {\r\n this.openedDetails = false;\r\n } else {\r\n this.openedDetails = tx_hash;\r\n }\r\n }\r\n\r\n calculateWidth() {\r\n this.calculatedWidth = [];\r\n this.calculatedWidth.push(this.head.nativeElement.childNodes[0].clientWidth);\r\n this.calculatedWidth.push(this.head.nativeElement.childNodes[1].clientWidth + this.head.nativeElement.childNodes[2].clientWidth);\r\n this.calculatedWidth.push(this.head.nativeElement.childNodes[3].clientWidth);\r\n this.calculatedWidth.push(this.head.nativeElement.childNodes[4].clientWidth);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'LOGIN.FORM_ERRORS.MISMATCH' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\"","module.exports = \":host {\\n position: fixed;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%; }\\n :host .content {\\n display: flex; }\\n :host .content .wrap-login {\\n margin: auto;\\n width: 100%;\\n max-width: 40rem; }\\n :host .content .wrap-login .logo {\\n background: url('logo.svg') no-repeat center;\\n width: 100%;\\n height: 15rem; }\\n :host .content .wrap-login .form-login {\\n display: flex;\\n flex-direction: column; }\\n :host .content .wrap-login .form-login .wrap-button {\\n display: flex;\\n align-items: center;\\n justify-content: space-between; }\\n :host .content .wrap-login .form-login .wrap-button button {\\n margin: 2.5rem 0; }\\n :host .content .wrap-login .form-login button {\\n margin: 2.5rem auto;\\n width: 100%;\\n max-width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbG9naW4vRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcbG9naW5cXGxvZ2luLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZUFBZTtFQUNmLE1BQU07RUFDTixPQUFPO0VBQ1AsV0FBVztFQUNYLFlBQVksRUFBQTtFQUxkO0lBUUksYUFBYSxFQUFBO0VBUmpCO01BV00sWUFBWTtNQUNaLFdBQVc7TUFDWCxnQkFBZ0IsRUFBQTtFQWJ0QjtRQWdCUSw0Q0FBNkQ7UUFDN0QsV0FBVztRQUNYLGFBQWEsRUFBQTtFQWxCckI7UUFzQlEsYUFBYTtRQUNiLHNCQUFzQixFQUFBO0VBdkI5QjtVQTBCVSxhQUFhO1VBQ2IsbUJBQW1CO1VBQ25CLDhCQUE4QixFQUFBO0VBNUJ4QztZQStCWSxnQkFBZ0IsRUFBQTtFQS9CNUI7VUFvQ1UsbUJBQW1CO1VBQ25CLFdBQVc7VUFDWCxnQkFBZ0IsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcblxyXG4gIC5jb250ZW50IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcblxyXG4gICAgLndyYXAtbG9naW4ge1xyXG4gICAgICBtYXJnaW46IGF1dG87XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBtYXgtd2lkdGg6IDQwcmVtO1xyXG5cclxuICAgICAgLmxvZ28ge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvbG9nby5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgaGVpZ2h0OiAxNXJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmZvcm0tbG9naW4ge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHJcbiAgICAgICAgLndyYXAtYnV0dG9uIHtcclxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cclxuICAgICAgICAgIGJ1dHRvbiB7XHJcbiAgICAgICAgICAgIG1hcmdpbjogMi41cmVtIDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBidXR0b24ge1xyXG4gICAgICAgICAgbWFyZ2luOiAyLjVyZW0gYXV0bztcclxuICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgbWF4LXdpZHRoOiAxNXJlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, NgZone, OnInit, OnDestroy} from '@angular/core';\r\nimport {FormGroup, FormControl} from '@angular/forms';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.scss']\r\n})\r\nexport class LoginComponent implements OnInit, OnDestroy {\r\n\r\n queryRouting;\r\n\r\n regForm = new FormGroup({\r\n password: new FormControl(''),\r\n confirmation: new FormControl('')\r\n }, function (g: FormGroup) {\r\n return g.get('password').value === g.get('confirmation').value ? null : {'mismatch': true};\r\n });\r\n\r\n authForm = new FormGroup({\r\n password: new FormControl('')\r\n });\r\n\r\n type = 'reg'; \r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private backend: BackendService,\r\n public variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.queryRouting = this.route.queryParams.subscribe(params => {\r\n if (params.type) {\r\n this.type = params.type;\r\n }\r\n });\r\n }\r\n\r\n onSubmitCreatePass(): void {\r\n if (this.regForm.valid) {\r\n this.variablesService.appPass = this.regForm.get('password').value //the pass what was written in input of login form by user\r\n\r\n this.backend.setMasterPassword({pass: this.variablesService.appPass}, (status, data) => {\r\n if (status) {\r\n this.backend.storeSecureAppData({pass: this.variablesService.appPass});\r\n this.variablesService.appLogin = true;\r\n this.variablesService.dataIsLoaded = true;\r\n this.variablesService.startCountdown();\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n } else {\r\n console.log(data['error_code']);\r\n }\r\n \r\n })\r\n }\r\n }\r\n\r\n onSkipCreatePass(): void {\r\n this.variablesService.appPass = '';\r\n this.ngZone.run(() => {\r\n this.variablesService.appLogin = true;\r\n this.router.navigate(['/']);\r\n });\r\n }\r\n\r\n dropSecureAppData(): void{ \r\n this.backend.dropSecureAppData(() => {\r\n this.onSkipCreatePass(); \r\n }); \r\n }\r\n\r\n onSubmitAuthPass(): void {\r\n if (this.authForm.valid) {\r\n this.variablesService.appPass = this.authForm.get('password').value;\r\n\r\n if (this.variablesService.dataIsLoaded) {\r\n this.backend.checkMasterPassword({pass: this.variablesService.appPass}, (status, data) => {\r\n if (status) {\r\n this.variablesService.appLogin = true;\r\n this.variablesService.startCountdown();\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n }\r\n })\r\n } else {\r\n this.getWalletData(this.variablesService.appPass)\r\n }\r\n }\r\n }\r\n\r\n getWalletData(appPass) {\r\n this.backend.getSecureAppData({pass: appPass}, (status, data) => {\r\n if (!data.error_code) {\r\n this.variablesService.appLogin = true;\r\n this.variablesService.dataIsLoaded = true;\r\n this.variablesService.startCountdown();\r\n this.variablesService.appPass = appPass;\r\n if (this.variablesService.wallets.length) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.variablesService.wallets[0].wallet_id]);\r\n });\r\n return;\r\n }\r\n if (Object.keys(data).length !== 0) {\r\n let openWallets = 0;\r\n let runWallets = 0;\r\n data.forEach((wallet, wallet_index) => {\r\n this.backend.openWallet(wallet.path, wallet.pass, true, (open_status, open_data, open_error) => {\r\n if (open_status || open_error === 'FILE_RESTORED') {\r\n openWallets++;\r\n this.ngZone.run(() => {\r\n const new_wallet = new Wallet(\r\n open_data.wallet_id,\r\n wallet.name,\r\n wallet.pass,\r\n open_data['wi'].path,\r\n open_data['wi'].address,\r\n open_data['wi'].balance,\r\n open_data['wi'].unlocked_balance,\r\n open_data['wi'].mined_total,\r\n open_data['wi'].tracking_hey\r\n );\r\n new_wallet.alias = this.backend.getWalletAlias(new_wallet.address);\r\n if (wallet.staking) {\r\n new_wallet.staking = true;\r\n this.backend.startPosMining(new_wallet.wallet_id);\r\n } else {\r\n new_wallet.staking = false;\r\n }\r\n if (open_data.recent_history && open_data.recent_history.history) {\r\n new_wallet.prepareHistory(open_data.recent_history.history);\r\n }\r\n this.backend.getContracts(open_data.wallet_id, (contracts_status, contracts_data) => {\r\n if (contracts_status && contracts_data.hasOwnProperty('contracts')) {\r\n this.ngZone.run(() => {\r\n new_wallet.prepareContractsAfterOpen(contracts_data.contracts, this.variablesService.exp_med_ts, this.variablesService.height_app, this.variablesService.settings.viewedContracts, this.variablesService.settings.notViewedContracts);\r\n });\r\n }\r\n });\r\n this.variablesService.wallets.push(new_wallet);\r\n if (this.variablesService.wallets.length === 1) {\r\n this.router.navigate(['/wallet/' + this.variablesService.wallets[0].wallet_id]);\r\n }\r\n });\r\n this.backend.runWallet(open_data.wallet_id, (run_status) => {\r\n if (run_status) {\r\n runWallets++;\r\n } else {\r\n if (wallet_index === data.length - 1 && runWallets === 0) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n }\r\n }\r\n });\r\n } else {\r\n if (wallet_index === data.length - 1 && openWallets === 0) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n }\r\n }\r\n });\r\n });\r\n } else {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.queryRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
0\\\">\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n

{{ 'MAIN.TITLE' | translate }}

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'MAIN.HELP' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n flex: 1 0 auto;\\n padding: 3rem; }\\n\\n.content {\\n padding: 3rem;\\n min-height: 100%; }\\n\\n.content .head {\\n justify-content: flex-end; }\\n\\n.add-wallet .add-wallet-title {\\n margin-bottom: 1rem; }\\n\\n.add-wallet .add-wallet-buttons {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n margin: 0 -0.5rem;\\n padding: 1.5rem 0; }\\n\\n.add-wallet .add-wallet-buttons button {\\n flex: 1 0 auto;\\n margin: 0 0.5rem; }\\n\\n.add-wallet .add-wallet-help {\\n display: flex;\\n cursor: pointer;\\n font-size: 1.3rem;\\n line-height: 1.4rem; }\\n\\n.add-wallet .add-wallet-help .icon {\\n -webkit-mask: url('howto.svg') no-repeat center;\\n mask: url('howto.svg') no-repeat center;\\n margin-right: 0.8rem;\\n width: 1.4rem;\\n height: 1.4rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbWFpbi9FOlxcWmFub1xcY2hlY2tcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxtYWluXFxtYWluLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsY0FBYztFQUNkLGFBQWEsRUFBQTs7QUFHZjtFQUNFLGFBQWE7RUFDYixnQkFBZ0IsRUFBQTs7QUFGbEI7SUFLSSx5QkFBeUIsRUFBQTs7QUFJN0I7RUFHSSxtQkFBbUIsRUFBQTs7QUFIdkI7RUFPSSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLDhCQUE4QjtFQUM5QixpQkFBaUI7RUFDakIsaUJBQWlCLEVBQUE7O0FBWHJCO0lBY00sY0FBYztJQUNkLGdCQUFnQixFQUFBOztBQWZ0QjtFQW9CSSxhQUFhO0VBQ2IsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixtQkFBbUIsRUFBQTs7QUF2QnZCO0lBMEJNLCtDQUF3RDtZQUF4RCx1Q0FBd0Q7SUFDeEQsb0JBQW9CO0lBQ3BCLGFBQWE7SUFDYixjQUFjLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9tYWluL21haW4uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZmxleDogMSAwIGF1dG87XHJcbiAgcGFkZGluZzogM3JlbTtcclxufVxyXG5cclxuLmNvbnRlbnQge1xyXG4gIHBhZGRpbmc6IDNyZW07XHJcbiAgbWluLWhlaWdodDogMTAwJTtcclxuXHJcbiAgLmhlYWQge1xyXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcclxuICB9XHJcbn1cclxuXHJcbi5hZGQtd2FsbGV0IHtcclxuXHJcbiAgLmFkZC13YWxsZXQtdGl0bGUge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICB9XHJcblxyXG4gIC5hZGQtd2FsbGV0LWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBtYXJnaW46IDAgLTAuNXJlbTtcclxuICAgIHBhZGRpbmc6IDEuNXJlbSAwO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIGZsZXg6IDEgMCBhdXRvO1xyXG4gICAgICBtYXJnaW46IDAgMC41cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmFkZC13YWxsZXQtaGVscCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS40cmVtO1xyXG5cclxuICAgIC5pY29uIHtcclxuICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9ob3d0by5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMC44cmVtO1xyXG4gICAgICB3aWR0aDogMS40cmVtO1xyXG4gICAgICBoZWlnaHQ6IDEuNHJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {Location} from '@angular/common';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {Router} from '@angular/router';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-main',\r\n templateUrl: './main.component.html',\r\n styleUrls: ['./main.component.scss']\r\n})\r\nexport class MainComponent implements OnInit {\r\n\r\n constructor(\r\n private router: Router,\r\n private location: Location,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n openWallet() {\r\n this.backend.openFileDialog(this.translate.instant('MAIN.CHOOSE_PATH'), '*', this.variablesService.settings.default_path, (file_status, file_data) => {\r\n if (file_status) {\r\n this.variablesService.settings.default_path = file_data.path.substr(0, file_data.path.lastIndexOf('/'));\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/open'], {queryParams: {path: file_data.path}});\r\n });\r\n } else {\r\n console.log(file_data['error_code']);\r\n }\r\n });\r\n }\r\n\r\n openInBrowser() {\r\n this.backend.openUrlInBrowser('docs.zano.org/docs/getting-started-1#section-create-new-wallet');\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{ 'MESSAGES.ADDRESS' | translate }}{{ 'MESSAGES.MESSAGE' | translate }}
\\r\\n {{message.address}}\\r\\n \\r\\n \\r\\n {{message.message}}\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.wrap-table {\\n margin: -3rem; }\\n\\n.wrap-table table tbody tr td:first-child {\\n position: relative;\\n padding-right: 5rem;\\n width: 18rem; }\\n\\n.wrap-table table tbody tr td:first-child span {\\n display: block;\\n line-height: 3.5rem;\\n max-width: 10rem; }\\n\\n.wrap-table table tbody tr td:first-child .icon {\\n position: absolute;\\n top: 50%;\\n right: 1rem;\\n transform: translateY(-50%);\\n display: block;\\n -webkit-mask: url('alert.svg') no-repeat 0;\\n mask: url('alert.svg') no-repeat 0;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbWVzc2FnZXMvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcbWVzc2FnZXNcXG1lc3NhZ2VzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBQ0UsYUFBYSxFQUFBOztBQURmO0lBWVksa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixZQUFZLEVBQUE7O0FBZHhCO01BaUJjLGNBQWM7TUFDZCxtQkFBbUI7TUFDbkIsZ0JBQWdCLEVBQUE7O0FBbkI5QjtNQXVCYyxrQkFBa0I7TUFDbEIsUUFBUTtNQUNSLFdBQVc7TUFDWCwyQkFBMkI7TUFDM0IsY0FBYztNQUNkLDBDQUFtRDtjQUFuRCxrQ0FBbUQ7TUFDbkQsYUFBYTtNQUNiLGNBQWMsRUFBQSIsImZpbGUiOiJzcmMvYXBwL21lc3NhZ2VzL21lc3NhZ2VzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4ud3JhcC10YWJsZSB7XHJcbiAgbWFyZ2luOiAtM3JlbTtcclxuXHJcbiAgdGFibGUge1xyXG5cclxuICAgIHRib2R5IHtcclxuXHJcbiAgICAgIHRyIHtcclxuXHJcbiAgICAgICAgdGQge1xyXG5cclxuICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDVyZW07XHJcbiAgICAgICAgICAgIHdpZHRoOiAxOHJlbTtcclxuXHJcbiAgICAgICAgICAgIHNwYW4ge1xyXG4gICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzLjVyZW07XHJcbiAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMHJlbTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLmljb24ge1xyXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICAgICAgICByaWdodDogMXJlbTtcclxuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9hbGVydC5zdmcpIG5vLXJlcGVhdCAwO1xyXG4gICAgICAgICAgICAgIHdpZHRoOiAxLjJyZW07XHJcbiAgICAgICAgICAgICAgaGVpZ2h0OiAxLjJyZW07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-messages',\r\n templateUrl: './messages.component.html',\r\n styleUrls: ['./messages.component.scss']\r\n})\r\nexport class MessagesComponent implements OnInit {\r\n\r\n messages = [\r\n {\r\n is_new: true,\r\n address: '@bitmap',\r\n message: 'No more miners for you!'\r\n },\r\n {\r\n is_new: false,\r\n address: 'Hjkwey36gHasdhkajshd4bxnb5mcvowyefb2633FdsFGGWbb',\r\n message: 'Hey! What’s with our BBR deal?'\r\n },\r\n {\r\n is_new: false,\r\n address: '@john',\r\n message: 'I’m coming!'\r\n }\r\n ];\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n\r\n}\r\n","module.exports = \"
\\r\\n

{{ 'OPEN_WALLET.MODAL.TITLE' | translate }}

\\r\\n
\\r\\n
{{ wallet.name }}
\\r\\n
{{ wallet.path }}
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'OPEN_WALLET.MODAL.NOT_FOUND' | translate }}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n position: fixed;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: rgba(255, 255, 255, 0.25); }\\n\\n.modal {\\n display: flex;\\n flex-direction: column;\\n background-position: center;\\n background-size: 200%;\\n padding: 2rem;\\n width: 34rem; }\\n\\n.modal .title {\\n font-size: 1.8rem;\\n text-align: center; }\\n\\n.modal .open-form .wallet-path {\\n font-size: 1.3rem;\\n margin: 5rem 0 2rem; }\\n\\n.modal .open-form .wrap-button {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n margin: 2rem -2rem 0; }\\n\\n.modal .open-form .wrap-button button {\\n flex: 1 0 0;\\n margin: 0 2rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3Blbi13YWxsZXQtbW9kYWwvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcb3Blbi13YWxsZXQtbW9kYWxcXG9wZW4td2FsbGV0LW1vZGFsLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZUFBZTtFQUNmLE1BQU07RUFDTixTQUFTO0VBQ1QsT0FBTztFQUNQLFFBQVE7RUFDUixhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLHVCQUF1QjtFQUN2QixxQ0FBcUMsRUFBQTs7QUFHdkM7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLDJCQUEyQjtFQUMzQixxQkFBcUI7RUFDckIsYUFBYTtFQUNiLFlBQVksRUFBQTs7QUFOZDtJQVNJLGlCQUFpQjtJQUNqQixrQkFBa0IsRUFBQTs7QUFWdEI7SUFnQk0saUJBQWlCO0lBQ2pCLG1CQUFtQixFQUFBOztBQWpCekI7SUFxQk0sYUFBYTtJQUNiLG1CQUFtQjtJQUNuQiw4QkFBOEI7SUFDOUIsb0JBQW9CLEVBQUE7O0FBeEIxQjtNQTJCUSxXQUFXO01BQ1gsY0FBZSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvb3Blbi13YWxsZXQtbW9kYWwvb3Blbi13YWxsZXQtbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHRvcDogMDtcclxuICBib3R0b206IDA7XHJcbiAgbGVmdDogMDtcclxuICByaWdodDogMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTtcclxufVxyXG5cclxuLm1vZGFsIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xyXG4gIGJhY2tncm91bmQtc2l6ZTogMjAwJTtcclxuICBwYWRkaW5nOiAycmVtO1xyXG4gIHdpZHRoOiAzNHJlbTtcclxuXHJcbiAgLnRpdGxlIHtcclxuICAgIGZvbnQtc2l6ZTogMS44cmVtO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIH1cclxuXHJcbiAgLm9wZW4tZm9ybSB7XHJcblxyXG4gICAgLndhbGxldC1wYXRoIHtcclxuICAgICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICAgIG1hcmdpbjogNXJlbSAwIDJyZW07XHJcbiAgICB9XHJcblxyXG4gICAgLndyYXAtYnV0dG9uIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICBtYXJnaW46IDJyZW0gLTJyZW0gMDtcclxuXHJcbiAgICAgIGJ1dHRvbiB7XHJcbiAgICAgICAgZmxleDogMSAwIDA7XHJcbiAgICAgICAgbWFyZ2luOiAwIDJyZW0gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, OnInit, Input, NgZone} from '@angular/core';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\n\r\n@Component({\r\n selector: 'app-open-wallet-modal',\r\n templateUrl: './open-wallet-modal.component.html',\r\n styleUrls: ['./open-wallet-modal.component.scss']\r\n})\r\nexport class OpenWalletModalComponent implements OnInit {\r\n\r\n @Input() wallets;\r\n\r\n wallet = {\r\n name: '',\r\n path: '',\r\n pass: '',\r\n notFound: false,\r\n emptyPass: false\r\n };\r\n\r\n constructor(\r\n public variablesService: VariablesService,\r\n private backend: BackendService,\r\n private translate: TranslateService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n if (this.wallets.length) {\r\n this.wallet = this.wallets[0];\r\n this.wallet.pass = '';\r\n\r\n this.backend.openWallet(this.wallet.path, '', true, (status, data, error) => {\r\n if (error === 'FILE_NOT_FOUND') {\r\n this.wallet.notFound = true;\r\n }\r\n if (status) {\r\n this.wallet.pass = '';\r\n this.wallet.emptyPass = true;\r\n this.backend.closeWallet(data.wallet_id);\r\n this.openWallet();\r\n }\r\n });\r\n }\r\n }\r\n\r\n openWallet() {\r\n if (this.wallets.length === 0) {\r\n return;\r\n }\r\n this.backend.openWallet(this.wallet.path, this.wallet.pass, false, (open_status, open_data, open_error) => {\r\n if (open_error && open_error === 'FILE_NOT_FOUND') {\r\n let error_translate = this.translate.instant('OPEN_WALLET.FILE_NOT_FOUND1');\r\n error_translate += ':
' + this.wallet.path;\r\n error_translate += this.translate.instant('OPEN_WALLET.FILE_NOT_FOUND2');\r\n this.modalService.prepareModal('error', error_translate);\r\n } else {\r\n if (open_status || open_error === 'FILE_RESTORED') {\r\n\r\n let exists = false;\r\n this.variablesService.wallets.forEach((wallet) => {\r\n if (wallet.address === open_data['wi'].address) {\r\n exists = true;\r\n }\r\n });\r\n\r\n if (exists) {\r\n this.modalService.prepareModal('error', 'OPEN_WALLET.WITH_ADDRESS_ALREADY_OPEN');\r\n this.backend.closeWallet(open_data.wallet_id);\r\n } else {\r\n const new_wallet = new Wallet(\r\n open_data.wallet_id,\r\n this.wallet.name,\r\n this.wallet.pass,\r\n open_data['wi'].path,\r\n open_data['wi'].address,\r\n open_data['wi'].balance,\r\n open_data['wi'].unlocked_balance,\r\n open_data['wi'].mined_total,\r\n open_data['wi'].tracking_hey\r\n );\r\n new_wallet.alias = this.backend.getWalletAlias(new_wallet.address);\r\n if (open_data.recent_history && open_data.recent_history.history) {\r\n new_wallet.prepareHistory(open_data.recent_history.history);\r\n }\r\n this.backend.getContracts(open_data.wallet_id, (contracts_status, contracts_data) => {\r\n if (contracts_status && contracts_data.hasOwnProperty('contracts')) {\r\n this.ngZone.run(() => {\r\n new_wallet.prepareContractsAfterOpen(\r\n contracts_data.contracts,\r\n this.variablesService.exp_med_ts,\r\n this.variablesService.height_app,\r\n this.variablesService.settings.viewedContracts,\r\n this.variablesService.settings.notViewedContracts\r\n );\r\n });\r\n }\r\n });\r\n this.variablesService.wallets.push(new_wallet);\r\n this.backend.runWallet(open_data.wallet_id);\r\n this.skipWallet();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n skipWallet() {\r\n if (this.wallets.length) {\r\n this.wallets.splice(0, 1);\r\n this.ngOnInit();\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\\r\\n {{ 'BREADCRUMBS.OPEN_WALLET' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'OPEN_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'OPEN_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\\r\\n
\\r\\n
\\r\\n
= variablesService.maxWalletNameLength\\\">\\r\\n {{ 'OPEN_WALLET.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\"","module.exports = \".form-open {\\n margin: 2.4rem 0;\\n width: 50%; }\\n .form-open .wrap-buttons {\\n display: flex;\\n margin: 2.5rem -0.7rem; }\\n .form-open .wrap-buttons button {\\n margin: 0 0.7rem; }\\n .form-open .wrap-buttons button.create-button {\\n flex: 1 1 50%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3Blbi13YWxsZXQvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcb3Blbi13YWxsZXRcXG9wZW4td2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTtFQUZaO0lBS0ksYUFBYTtJQUNiLHNCQUFzQixFQUFBO0VBTjFCO01BU00sZ0JBQWdCLEVBQUE7RUFUdEI7UUFZUSxhQUFhLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9vcGVuLXdhbGxldC9vcGVuLXdhbGxldC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLW9wZW4ge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBtYXJnaW46IDAgMC43cmVtO1xyXG5cclxuICAgICAgJi5jcmVhdGUtYnV0dG9uIHtcclxuICAgICAgICBmbGV4OiAxIDEgNTAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnDestroy, OnInit} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-open-wallet',\r\n templateUrl: './open-wallet.component.html',\r\n styleUrls: ['./open-wallet.component.scss']\r\n})\r\nexport class OpenWalletComponent implements OnInit, OnDestroy {\r\n\r\n queryRouting;\r\n filePath: string;\r\n\r\n openForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, (g: FormControl) => {\r\n for (let i = 0; i < this.variablesService.wallets.length; i++) {\r\n if (g.value === this.variablesService.wallets[i].name) {\r\n return {'duplicate': true};\r\n }\r\n }\r\n return null;\r\n }]),\r\n password: new FormControl('')\r\n });\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.queryRouting = this.route.queryParams.subscribe(params => {\r\n if (params.path) {\r\n this.filePath = params.path;\r\n let filename = '';\r\n if (params.path.lastIndexOf('.') === -1) {\r\n filename = params.path.substr(params.path.lastIndexOf('/') + 1);\r\n } else {\r\n filename = params.path.substr(params.path.lastIndexOf('/') + 1, params.path.lastIndexOf('.') - 1 - params.path.lastIndexOf('/'));\r\n }\r\n if (filename.length > 25) {\r\n filename = filename.slice(0, 25);\r\n }\r\n this.openForm.get('name').setValue(filename);\r\n this.openForm.get('name').markAsTouched();\r\n }\r\n });\r\n }\r\n\r\n openWallet() {\r\n if (this.openForm.valid && this.openForm.get('name').value.length <= this.variablesService.maxWalletNameLength) {\r\n this.backend.openWallet(this.filePath, this.openForm.get('password').value, false, (open_status, open_data, open_error) => {\r\n if (open_error && open_error === 'FILE_NOT_FOUND') {\r\n let error_translate = this.translate.instant('OPEN_WALLET.FILE_NOT_FOUND1');\r\n error_translate += ':
' + this.filePath;\r\n error_translate += this.translate.instant('OPEN_WALLET.FILE_NOT_FOUND2');\r\n this.modalService.prepareModal('error', error_translate);\r\n } else {\r\n if (open_status || open_error === 'FILE_RESTORED') {\r\n\r\n let exists = false;\r\n this.variablesService.wallets.forEach((wallet) => {\r\n if (wallet.address === open_data['wi'].address) {\r\n exists = true;\r\n }\r\n });\r\n\r\n if (exists) {\r\n this.modalService.prepareModal('error', 'OPEN_WALLET.WITH_ADDRESS_ALREADY_OPEN');\r\n this.backend.closeWallet(open_data.wallet_id, () => {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n });\r\n } else {\r\n const new_wallet = new Wallet(\r\n open_data.wallet_id,\r\n this.openForm.get('name').value,\r\n this.openForm.get('password').value,\r\n open_data['wi'].path,\r\n open_data['wi'].address,\r\n open_data['wi'].balance,\r\n open_data['wi'].unlocked_balance,\r\n open_data['wi'].mined_total,\r\n open_data['wi'].tracking_hey\r\n );\r\n new_wallet.alias = this.backend.getWalletAlias(new_wallet.address);\r\n if (open_data.recent_history && open_data.recent_history.history) {\r\n new_wallet.prepareHistory(open_data.recent_history.history);\r\n }\r\n this.backend.getContracts(open_data.wallet_id, (contracts_status, contracts_data) => {\r\n if (contracts_status && contracts_data.hasOwnProperty('contracts')) {\r\n this.ngZone.run(() => {\r\n new_wallet.prepareContractsAfterOpen(contracts_data.contracts, this.variablesService.exp_med_ts, this.variablesService.height_app, this.variablesService.settings.viewedContracts, this.variablesService.settings.notViewedContracts);\r\n });\r\n }\r\n });\r\n this.variablesService.wallets.push(new_wallet);\r\n this.backend.runWallet(open_data.wallet_id, (run_status, run_data) => {\r\n if (run_status) {\r\n if (this.variablesService.appPass) {\r\n this.backend.storeSecureAppData();\r\n }\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + open_data.wallet_id]);\r\n });\r\n } else {\r\n console.log(run_data['error_code']);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.queryRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n {{ 'BREADCRUMBS.CONTRACTS' | translate }}\\r\\n {{ 'BREADCRUMBS.NEW_PURCHASE' | translate }}\\r\\n {{ 'BREADCRUMBS.OLD_PURCHASE' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.DESC_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
= 100\\\">\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.COMMENT_MAXIMUM' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
{{item.name}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.SELLER_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.SELLER_NOT_VALID' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.SELLER_SAME' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.ALIAS_NOT_VALID' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.AMOUNT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.AMOUNT_ZERO' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.YOUR_DEPOSIT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.SELLER_DEPOSIT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
= 100\\\">\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.COMMENT_MAXIMUM' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n 1 {{ 'PURCHASE.HOUR' | translate }}\\r\\n \\r\\n {{title}} {{ 'PURCHASE.HOURS' | translate }}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n {{ 'PURCHASE.NEED_MONEY' | translate }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
{{'PURCHASE.NULLIFY_QUESTION' | translate}}
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
{{ 'PURCHASE.WAITING_TIME_QUESTION' | translate }}
\\r\\n \\r\\n
\\r\\n \\r\\n 1 {{ 'PURCHASE.HOUR' | translate }}\\r\\n \\r\\n {{title}} {{ 'PURCHASE.HOURS' | translate }}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.NEW_PURCHASE' | translate }}\\r\\n \\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.WAITING_SELLER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.IGNORED_SELLER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.WAITING_DELIVERY' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.IGNORED_CANCEL_SELLER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.EXPIRED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.WAITING_SELLER' | translate }}\\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.WAITING_CONFIRMATION' | translate }}\\r\\n (0/10)\\r\\n ({{variablesService.height_app - currentContract.height}}/10)\\r\\n \\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.COMPLETED' | translate }}\\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.NOT_RECEIVED' | translate }}. {{ 'PURCHASE.STATUS_MESSAGES.NULLIFIED' | translate }}\\r\\n \\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.PROPOSAL_CANCEL_SELLER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.CANCELLED' | translate }}\\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.BEING_CANCELLED' | translate }}\\r\\n (0/10)\\r\\n ({{variablesService.height_app - currentContract.height}}/10)\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.WAITING_BUYER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.IGNORED_BUYER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.IGNORED_CANCEL_BUYER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.EXPIRED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.WAITING_DELIVERY' | translate }}\\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.WAITING_CONFIRMATION' | translate }}\\r\\n (0/10)\\r\\n ({{variablesService.height_app - currentContract.height}}/10)\\r\\n \\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.COMPLETED' | translate }}\\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.NOT_RECEIVED' | translate }}. {{ 'PURCHASE.STATUS_MESSAGES.NULLIFIED' | translate }}\\r\\n \\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.PROPOSAL_CANCEL_BUYER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.STATUS_MESSAGES.CANCELLED' | translate }}\\r\\n\\r\\n \\r\\n {{ 'PURCHASE.STATUS_MESSAGES.BEING_CANCELLED' | translate }}\\r\\n (0/10)\\r\\n ({{variablesService.height_app - currentContract.height}}/10)\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n {{currentContract.expiration_time | contractTimeLeft: 0}}\\r\\n {{currentContract.cancel_expiration_time | contractTimeLeft: 2}}\\r\\n {{currentContract.expiration_time | contractTimeLeft: 1}}\\r\\n {{currentContract.cancel_expiration_time | contractTimeLeft: 1}}\\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n width: 100%; }\\n\\n.head {\\n flex: 0 0 auto;\\n box-sizing: content-box;\\n margin: -3rem -3rem 0; }\\n\\n.form-purchase {\\n flex: 1 1 auto;\\n margin: 1.5rem -3rem 0;\\n padding: 0 3rem;\\n overflow-y: overlay; }\\n\\n.form-purchase .input-blocks-row {\\n display: flex; }\\n\\n.form-purchase .input-blocks-row .input-block {\\n flex-basis: 50%; }\\n\\n.form-purchase .input-blocks-row .input-block:first-child {\\n margin-right: 1.5rem; }\\n\\n.form-purchase .input-blocks-row .input-block:last-child {\\n margin-left: 1.5rem; }\\n\\n.form-purchase .input-blocks-row .input-block .checkbox-block {\\n display: flex; }\\n\\n.form-purchase .purchase-select {\\n display: flex;\\n align-items: center;\\n background: transparent;\\n border: none;\\n font-size: 1.3rem;\\n line-height: 1.3rem;\\n margin: 1.5rem 0 0;\\n padding: 0;\\n width: 100%;\\n max-width: 15rem;\\n height: 1.3rem; }\\n\\n.form-purchase .purchase-select .arrow {\\n margin-left: 1rem;\\n width: 0.8rem;\\n height: 0.8rem; }\\n\\n.form-purchase .purchase-select .arrow.down {\\n -webkit-mask: url('arrow-down.svg') no-repeat center;\\n mask: url('arrow-down.svg') no-repeat center; }\\n\\n.form-purchase .purchase-select .arrow.up {\\n -webkit-mask: url('arrow-up.svg') no-repeat center;\\n mask: url('arrow-up.svg') no-repeat center; }\\n\\n.form-purchase .additional-details {\\n display: flex;\\n margin-top: 1.5rem;\\n padding: 0.5rem 0 2rem; }\\n\\n.form-purchase .additional-details > div {\\n flex-basis: 25%; }\\n\\n.form-purchase .additional-details > div:first-child {\\n padding-left: 1.5rem;\\n padding-right: 1rem; }\\n\\n.form-purchase .additional-details > div:last-child {\\n padding-left: 1rem;\\n padding-right: 1.5rem; }\\n\\n.form-purchase .purchase-states {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n font-size: 1.2rem;\\n line-height: 2.9rem; }\\n\\n.form-purchase .send-button {\\n margin: 2.4rem 0;\\n width: 100%;\\n max-width: 15rem; }\\n\\n.form-purchase .purchase-buttons {\\n display: flex;\\n justify-content: flex-start;\\n margin: 2.4rem -0.5rem; }\\n\\n.form-purchase .purchase-buttons button {\\n flex: 0 1 33%;\\n margin: 0 0.5rem; }\\n\\n.form-purchase .nullify-block-row {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center; }\\n\\n.form-purchase .nullify-block-row .nullify-block-buttons {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n margin: 1rem 0;\\n width: 100%; }\\n\\n.form-purchase .nullify-block-row .nullify-block-buttons button {\\n flex: 0 1 25%;\\n margin: 0 0.5rem; }\\n\\n.form-purchase .time-cancel-block-row {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center; }\\n\\n.form-purchase .time-cancel-block-row .time-cancel-block-question {\\n margin-bottom: 1rem; }\\n\\n.form-purchase .time-cancel-block-row .input-block {\\n width: 25%; }\\n\\n.form-purchase .time-cancel-block-row label {\\n margin-bottom: 1rem; }\\n\\n.form-purchase .time-cancel-block-row .time-cancel-block-buttons {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n margin: 1rem 0;\\n width: 100%; }\\n\\n.form-purchase .time-cancel-block-row .time-cancel-block-buttons button {\\n flex: 0 1 25%;\\n margin: 0 0.5rem; }\\n\\n.progress-bar-container {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n padding: 0 3rem;\\n width: 100%;\\n height: 3rem; }\\n\\n.progress-bar-container .progress-bar {\\n position: absolute;\\n top: -0.7rem;\\n left: 0;\\n margin: 0 3rem;\\n width: calc(100% - 6rem);\\n height: 0.7rem; }\\n\\n.progress-bar-container .progress-bar .progress-bar-full {\\n height: 0.7rem; }\\n\\n.progress-bar-container .progress-labels {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n font-size: 1.2rem;\\n height: 100%; }\\n\\n.progress-bar-container .progress-time {\\n position: absolute;\\n top: -3rem;\\n left: 50%;\\n transform: translateX(-50%);\\n font-size: 1.2rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHVyY2hhc2UvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxccHVyY2hhc2VcXHB1cmNoYXNlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxjQUFjO0VBQ2QsdUJBQXVCO0VBQ3ZCLHFCQUFxQixFQUFBOztBQUd2QjtFQUNFLGNBQWM7RUFDZCxzQkFBc0I7RUFDdEIsZUFBZTtFQUNmLG1CQUFtQixFQUFBOztBQUpyQjtJQU9JLGFBQWEsRUFBQTs7QUFQakI7TUFVTSxlQUFlLEVBQUE7O0FBVnJCO1FBYVEsb0JBQW9CLEVBQUE7O0FBYjVCO1FBaUJRLG1CQUFtQixFQUFBOztBQWpCM0I7UUFxQlEsYUFBYSxFQUFBOztBQXJCckI7SUEyQkksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGNBQWMsRUFBQTs7QUFyQ2xCO01Bd0NNLGlCQUFpQjtNQUNqQixhQUFhO01BQ2IsY0FBYyxFQUFBOztBQTFDcEI7UUE2Q1Esb0RBQTREO2dCQUE1RCw0Q0FBNEQsRUFBQTs7QUE3Q3BFO1FBaURRLGtEQUEwRDtnQkFBMUQsMENBQTBELEVBQUE7O0FBakRsRTtJQXVESSxhQUFhO0lBQ2Isa0JBQWtCO0lBQ2xCLHNCQUFzQixFQUFBOztBQXpEMUI7TUE0RE0sZUFBZSxFQUFBOztBQTVEckI7UUErRFEsb0JBQW9CO1FBQ3BCLG1CQUFtQixFQUFBOztBQWhFM0I7UUFvRVEsa0JBQWtCO1FBQ2xCLHFCQUFxQixFQUFBOztBQXJFN0I7SUEyRUksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLGlCQUFpQjtJQUNqQixtQkFBbUIsRUFBQTs7QUFoRnZCO0lBb0ZJLGdCQUFnQjtJQUNoQixXQUFXO0lBQ1gsZ0JBQWdCLEVBQUE7O0FBdEZwQjtJQTBGSSxhQUFhO0lBQ2IsMkJBQTJCO0lBQzNCLHNCQUFzQixFQUFBOztBQTVGMUI7TUErRk0sYUFBYTtNQUNiLGdCQUFnQixFQUFBOztBQWhHdEI7SUFxR0ksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsdUJBQXVCLEVBQUE7O0FBeEczQjtNQTJHTSxhQUFhO01BQ2IsbUJBQW1CO01BQ25CLHVCQUF1QjtNQUN2QixjQUFjO01BQ2QsV0FBVyxFQUFBOztBQS9HakI7UUFrSFEsYUFBYTtRQUNiLGdCQUFnQixFQUFBOztBQW5IeEI7SUF5SEksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsdUJBQXVCLEVBQUE7O0FBNUgzQjtNQStITSxtQkFBbUIsRUFBQTs7QUEvSHpCO01BbUlNLFVBQVUsRUFBQTs7QUFuSWhCO01BdUlNLG1CQUFtQixFQUFBOztBQXZJekI7TUEySU0sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsY0FBYztNQUNkLFdBQVcsRUFBQTs7QUEvSWpCO1FBa0pRLGFBQWE7UUFDYixnQkFBZ0IsRUFBQTs7QUFPeEI7RUFDRSxrQkFBa0I7RUFDbEIsU0FBUztFQUNULE9BQU87RUFDUCxlQUFlO0VBQ2YsV0FBVztFQUNYLFlBQVksRUFBQTs7QUFOZDtJQVNJLGtCQUFrQjtJQUNsQixZQUFZO0lBQ1osT0FBTztJQUNQLGNBQWM7SUFDZCx3QkFBd0I7SUFDeEIsY0FBYyxFQUFBOztBQWRsQjtNQWlCTSxjQUFjLEVBQUE7O0FBakJwQjtJQXNCSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixpQkFBaUI7SUFDakIsWUFBWSxFQUFBOztBQTFCaEI7SUE4Qkksa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixTQUFTO0lBQ1QsMkJBQTJCO0lBQzNCLGlCQUFpQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvcHVyY2hhc2UvcHVyY2hhc2UuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uaGVhZCB7XHJcbiAgZmxleDogMCAwIGF1dG87XHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XHJcbiAgbWFyZ2luOiAtM3JlbSAtM3JlbSAwO1xyXG59XHJcblxyXG4uZm9ybS1wdXJjaGFzZSB7XHJcbiAgZmxleDogMSAxIGF1dG87XHJcbiAgbWFyZ2luOiAxLjVyZW0gLTNyZW0gMDtcclxuICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgb3ZlcmZsb3cteTogb3ZlcmxheTtcclxuXHJcbiAgLmlucHV0LWJsb2Nrcy1yb3cge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuXHJcbiAgICAuaW5wdXQtYmxvY2sge1xyXG4gICAgICBmbGV4LWJhc2lzOiA1MCU7XHJcblxyXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMS41cmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuY2hlY2tib3gtYmxvY2sge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wdXJjaGFzZS1zZWxlY3Qge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuM3JlbTtcclxuICAgIG1hcmdpbjogMS41cmVtIDAgMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgICBoZWlnaHQ6IDEuM3JlbTtcclxuXHJcbiAgICAuYXJyb3cge1xyXG4gICAgICBtYXJnaW4tbGVmdDogMXJlbTtcclxuICAgICAgd2lkdGg6IDAuOHJlbTtcclxuICAgICAgaGVpZ2h0OiAwLjhyZW07XHJcblxyXG4gICAgICAmLmRvd24ge1xyXG4gICAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9hcnJvdy1kb3duLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi51cCB7XHJcbiAgICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2Fycm93LXVwLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmFkZGl0aW9uYWwtZGV0YWlscyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luLXRvcDogMS41cmVtO1xyXG4gICAgcGFkZGluZzogMC41cmVtIDAgMnJlbTtcclxuXHJcbiAgICA+IGRpdiB7XHJcbiAgICAgIGZsZXgtYmFzaXM6IDI1JTtcclxuXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnB1cmNoYXNlLXN0YXRlcyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuOXJlbTtcclxuICB9XHJcblxyXG4gIC5zZW5kLWJ1dHRvbiB7XHJcbiAgICBtYXJnaW46IDIuNHJlbSAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gIH1cclxuXHJcbiAgLnB1cmNoYXNlLWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgIG1hcmdpbjogMi40cmVtIC0wLjVyZW07XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgZmxleDogMCAxIDMzJTtcclxuICAgICAgbWFyZ2luOiAwIDAuNXJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5udWxsaWZ5LWJsb2NrLXJvdyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHJcbiAgICAubnVsbGlmeS1ibG9jay1idXR0b25zIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIG1hcmdpbjogMXJlbSAwO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgIGJ1dHRvbiB7XHJcbiAgICAgICAgZmxleDogMCAxIDI1JTtcclxuICAgICAgICBtYXJnaW46IDAgMC41cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudGltZS1jYW5jZWwtYmxvY2stcm93IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cclxuICAgIC50aW1lLWNhbmNlbC1ibG9jay1xdWVzdGlvbiB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgICB9XHJcblxyXG4gICAgLmlucHV0LWJsb2NrIHtcclxuICAgICAgd2lkdGg6IDI1JTtcclxuICAgIH1cclxuXHJcbiAgICBsYWJlbCB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtY2FuY2VsLWJsb2NrLWJ1dHRvbnMge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgbWFyZ2luOiAxcmVtIDA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgICAgYnV0dG9uIHtcclxuICAgICAgICBmbGV4OiAwIDEgMjUlO1xyXG4gICAgICAgIG1hcmdpbjogMCAwLjVyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4ucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIGJvdHRvbTogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHBhZGRpbmc6IDAgM3JlbTtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDNyZW07XHJcblxyXG4gIC5wcm9ncmVzcy1iYXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAtMC43cmVtO1xyXG4gICAgbGVmdDogMDtcclxuICAgIG1hcmdpbjogMCAzcmVtO1xyXG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDZyZW0pO1xyXG4gICAgaGVpZ2h0OiAwLjdyZW07XHJcblxyXG4gICAgLnByb2dyZXNzLWJhci1mdWxsIHtcclxuICAgICAgaGVpZ2h0OiAwLjdyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAucHJvZ3Jlc3MtbGFiZWxzIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBmb250LXNpemU6IDEuMnJlbTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy10aW1lIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogLTNyZW07XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICBmb250LXNpemU6IDEuMnJlbTtcclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, OnInit, OnDestroy, NgZone, HostListener} from '@angular/core';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Location} from '@angular/common';\r\nimport {IntToMoneyPipe} from '../_helpers/pipes/int-to-money.pipe';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Component({\r\n selector: 'app-purchase',\r\n templateUrl: './purchase.component.html',\r\n styleUrls: ['./purchase.component.scss']\r\n})\r\nexport class PurchaseComponent implements OnInit, OnDestroy {\r\n\r\n isOpen = false;\r\n localAliases = [];\r\n\r\n currentWalletId;\r\n newPurchase = false;\r\n parentRouting;\r\n subRouting;\r\n historyBlock;\r\n\r\n purchaseForm = new FormGroup({\r\n description: new FormControl('', Validators.required),\r\n seller: new FormControl('', [Validators.required, (g: FormControl) => {\r\n if (g.value === this.variablesService.currentWallet.address) {\r\n return {'address_same': true};\r\n }\r\n return null;\r\n }, (g: FormControl) => {\r\n this.localAliases = [];\r\n if (g.value) {\r\n if (g.value.indexOf('@') !== 0) {\r\n this.isOpen = false;\r\n this.backend.validateAddress(g.value, (valid_status) => {\r\n this.ngZone.run(() => {\r\n if (valid_status === false) {\r\n g.setErrors(Object.assign({'address_not_valid': true}, g.errors));\r\n } else {\r\n if (g.hasError('address_not_valid')) {\r\n delete g.errors['address_not_valid'];\r\n if (Object.keys(g.errors).length === 0) {\r\n g.setErrors(null);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n return (g.hasError('address_not_valid')) ? {'address_not_valid': true} : null;\r\n } else {\r\n this.isOpen = true;\r\n this.localAliases = this.variablesService.aliases.filter((item) => {\r\n return item.name.indexOf(g.value) > -1;\r\n });\r\n if (!(/^@?[a-z0-9\\.\\-]{6,25}$/.test(g.value))) {\r\n g.setErrors(Object.assign({'alias_not_valid': true}, g.errors));\r\n } else {\r\n this.backend.getAliasByName(g.value.replace('@', ''), (alias_status, alias_data) => {\r\n this.ngZone.run(() => {\r\n if (alias_status) {\r\n if (alias_data.address === this.variablesService.currentWallet.address) {\r\n g.setErrors(Object.assign({'address_same': true}, g.errors));\r\n }\r\n if (g.hasError('alias_not_valid')) {\r\n delete g.errors['alias_not_valid'];\r\n if (Object.keys(g.errors).length === 0) {\r\n g.setErrors(null);\r\n }\r\n }\r\n } else {\r\n g.setErrors(Object.assign({'alias_not_valid': true}, g.errors));\r\n }\r\n });\r\n });\r\n }\r\n return (g.hasError('alias_not_valid')) ? {'alias_not_valid': true} : null;\r\n }\r\n }\r\n return null;\r\n }]),\r\n amount: new FormControl(null, [Validators.required, (g: FormControl) => {\r\n if (parseFloat(g.value) === 0) {\r\n return {'amount_zero': true};\r\n }\r\n return null;\r\n }]),\r\n yourDeposit: new FormControl(null, Validators.required),\r\n sellerDeposit: new FormControl(null, Validators.required),\r\n sameAmount: new FormControl({value: false, disabled: false}),\r\n comment: new FormControl(''),\r\n fee: new FormControl(this.variablesService.default_fee),\r\n time: new FormControl({value: 12, disabled: false}),\r\n timeCancel: new FormControl({value: 12, disabled: false}),\r\n payment: new FormControl('')\r\n });\r\n\r\n additionalOptions = false;\r\n currentContract = null;\r\n heightAppEvent;\r\n showTimeSelect = false;\r\n showNullify = false;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private backend: BackendService,\r\n public variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n private location: Location,\r\n private intToMoneyPipe: IntToMoneyPipe\r\n ) {\r\n }\r\n\r\n checkAndChangeHistory() {\r\n if (this.currentContract.state === 201) {\r\n this.historyBlock = this.variablesService.currentWallet.history.find(item => item.tx_type === 8 && item.contract[0].contract_id === this.currentContract.contract_id && item.contract[0].is_a === this.currentContract.is_a);\r\n } else if (this.currentContract.state === 601) {\r\n this.historyBlock = this.variablesService.currentWallet.history.find(item => item.tx_type === 12 && item.contract[0].contract_id === this.currentContract.contract_id && item.contract[0].is_a === this.currentContract.is_a);\r\n }\r\n }\r\n\r\n addressMouseDown(e) {\r\n if (e['button'] === 0 && this.purchaseForm.get('seller').value && this.purchaseForm.get('seller').value.indexOf('@') === 0) {\r\n this.isOpen = true;\r\n }\r\n }\r\n\r\n setAlias(alias) {\r\n this.purchaseForm.get('seller').setValue(alias);\r\n }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(targetElement) {\r\n if (targetElement.id !== 'purchase-seller' && this.isOpen) {\r\n this.isOpen = false;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(params => {\r\n this.currentWalletId = params['id'];\r\n });\r\n this.subRouting = this.route.params.subscribe(params => {\r\n if (params.hasOwnProperty('id')) {\r\n this.currentContract = this.variablesService.currentWallet.getContract(params['id']);\r\n this.purchaseForm.controls['seller'].setValidators([]);\r\n this.purchaseForm.updateValueAndValidity();\r\n this.purchaseForm.setValue({\r\n description: this.currentContract.private_detailes.t,\r\n seller: this.currentContract.private_detailes.b_addr,\r\n amount: this.intToMoneyPipe.transform(this.currentContract.private_detailes.to_pay),\r\n yourDeposit: this.intToMoneyPipe.transform(this.currentContract.private_detailes.a_pledge),\r\n sellerDeposit: this.intToMoneyPipe.transform(this.currentContract.private_detailes.b_pledge),\r\n sameAmount: this.currentContract.private_detailes.to_pay.isEqualTo(this.currentContract.private_detailes.b_pledge),\r\n comment: this.currentContract.private_detailes.c,\r\n fee: this.variablesService.default_fee,\r\n time: 12,\r\n timeCancel: 12,\r\n payment: this.currentContract.payment_id\r\n });\r\n this.purchaseForm.get('sameAmount').disable();\r\n this.newPurchase = false;\r\n\r\n if (this.currentContract.is_new) {\r\n if (this.currentContract.is_a && this.currentContract.state === 2) {\r\n this.currentContract.state = 120;\r\n }\r\n if (this.currentContract.state === 130 && this.currentContract.cancel_expiration_time !== 0 && this.currentContract.cancel_expiration_time < this.variablesService.exp_med_ts) {\r\n this.currentContract.state = 2;\r\n }\r\n this.variablesService.settings.viewedContracts = (this.variablesService.settings.viewedContracts) ? this.variablesService.settings.viewedContracts : [];\r\n let findViewedCont = false;\r\n for (let j = 0; j < this.variablesService.settings.viewedContracts.length; j++) {\r\n if (this.variablesService.settings.viewedContracts[j].contract_id === this.currentContract.contract_id && this.variablesService.settings.viewedContracts[j].is_a === this.currentContract.is_a) {\r\n this.variablesService.settings.viewedContracts[j].state = this.currentContract.state;\r\n findViewedCont = true;\r\n break;\r\n }\r\n }\r\n if (!findViewedCont) {\r\n this.variablesService.settings.viewedContracts.push({\r\n contract_id: this.currentContract.contract_id,\r\n is_a: this.currentContract.is_a,\r\n state: this.currentContract.state\r\n });\r\n }\r\n this.currentContract.is_new = false;\r\n setTimeout(() => {\r\n this.variablesService.currentWallet.recountNewContracts();\r\n }, 0);\r\n }\r\n this.checkAndChangeHistory();\r\n } else {\r\n this.newPurchase = true;\r\n }\r\n });\r\n this.heightAppEvent = this.variablesService.getHeightAppEvent.subscribe((newHeight: number) => {\r\n if (this.currentContract && this.currentContract.state === 201 && this.currentContract.height !== 0 && (newHeight - this.currentContract.height) >= 10) {\r\n this.currentContract.state = 2;\r\n this.currentContract.is_new = true;\r\n this.variablesService.currentWallet.recountNewContracts();\r\n } else if (this.currentContract && this.currentContract.state === 601 && this.currentContract.height !== 0 && (newHeight - this.currentContract.height) >= 10) {\r\n this.currentContract.state = 6;\r\n this.currentContract.is_new = true;\r\n this.variablesService.currentWallet.recountNewContracts();\r\n }\r\n });\r\n }\r\n\r\n toggleOptions() {\r\n this.additionalOptions = !this.additionalOptions;\r\n }\r\n\r\n getProgressBarWidth() {\r\n let progress = '0';\r\n if (!this.newPurchase) {\r\n if (this.currentContract) {\r\n if (this.currentContract.state === 1) {\r\n progress = '10%';\r\n }\r\n if (this.currentContract.state === 201) {\r\n progress = '25%';\r\n }\r\n if ([120, 2].indexOf(this.currentContract.state) !== -1) {\r\n progress = '50%';\r\n }\r\n if ([5, 601].indexOf(this.currentContract.state) !== -1) {\r\n progress = '75%';\r\n }\r\n if ([110, 130, 140, 3, 4, 6].indexOf(this.currentContract.state) !== -1) {\r\n progress = '100%';\r\n }\r\n }\r\n }\r\n return progress;\r\n }\r\n\r\n sameAmountChange() {\r\n if (this.purchaseForm.get('sameAmount').value) {\r\n this.purchaseForm.get('sellerDeposit').clearValidators();\r\n this.purchaseForm.get('sellerDeposit').updateValueAndValidity();\r\n } else {\r\n this.purchaseForm.get('sellerDeposit').setValidators([Validators.required]);\r\n this.purchaseForm.get('sellerDeposit').updateValueAndValidity();\r\n }\r\n }\r\n\r\n createPurchase() {\r\n if (this.purchaseForm.valid) {\r\n const sellerDeposit = this.purchaseForm.get('sameAmount').value ? this.purchaseForm.get('amount').value : this.purchaseForm.get('sellerDeposit').value;\r\n if (this.purchaseForm.get('seller').value.indexOf('@') !== 0) {\r\n this.backend.createProposal(\r\n this.variablesService.currentWallet.wallet_id,\r\n this.purchaseForm.get('description').value,\r\n this.purchaseForm.get('comment').value,\r\n this.variablesService.currentWallet.address,\r\n this.purchaseForm.get('seller').value,\r\n this.purchaseForm.get('amount').value,\r\n this.purchaseForm.get('yourDeposit').value,\r\n sellerDeposit,\r\n this.purchaseForm.get('time').value,\r\n this.purchaseForm.get('payment').value,\r\n (create_status) => {\r\n if (create_status) {\r\n this.back();\r\n }\r\n });\r\n } else {\r\n this.backend.getAliasByName(this.purchaseForm.get('seller').value.replace('@', ''), (alias_status, alias_data) => {\r\n this.ngZone.run(() => {\r\n if (alias_status === false) {\r\n this.ngZone.run(() => {\r\n this.purchaseForm.get('seller').setErrors({'alias_not_valid': true});\r\n });\r\n } else {\r\n this.backend.createProposal(\r\n this.variablesService.currentWallet.wallet_id,\r\n this.purchaseForm.get('description').value,\r\n this.purchaseForm.get('comment').value,\r\n this.variablesService.currentWallet.address,\r\n alias_data.address,\r\n this.purchaseForm.get('amount').value,\r\n this.purchaseForm.get('yourDeposit').value,\r\n sellerDeposit,\r\n this.purchaseForm.get('time').value,\r\n this.purchaseForm.get('payment').value,\r\n (create_status) => {\r\n if (create_status) {\r\n this.back();\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n acceptState() {\r\n this.backend.acceptProposal(this.currentWalletId, this.currentContract.contract_id, (accept_status) => {\r\n if (accept_status) {\r\n this.modalService.prepareModal('info', 'PURCHASE.ACCEPT_STATE_WAIT_BIG');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n ignoredContract() {\r\n this.variablesService.settings.notViewedContracts = (this.variablesService.settings.notViewedContracts) ? this.variablesService.settings.notViewedContracts : [];\r\n let findViewedCont = false;\r\n for (let j = 0; j < this.variablesService.settings.notViewedContracts.length; j++) {\r\n if (this.variablesService.settings.notViewedContracts[j].contract_id === this.currentContract.contract_id && this.variablesService.settings.notViewedContracts[j].is_a === this.currentContract.is_a) {\r\n this.variablesService.settings.notViewedContracts[j].state = 110;\r\n this.variablesService.settings.notViewedContracts[j].time = this.currentContract.expiration_time;\r\n findViewedCont = true;\r\n break;\r\n }\r\n }\r\n if (!findViewedCont) {\r\n this.variablesService.settings.notViewedContracts.push({\r\n contract_id: this.currentContract.contract_id,\r\n is_a: this.currentContract.is_a,\r\n state: 110,\r\n time: this.currentContract.expiration_time\r\n });\r\n }\r\n this.currentContract.is_new = true;\r\n this.currentContract.state = 110;\r\n this.currentContract.time = this.currentContract.expiration_time;\r\n\r\n this.variablesService.currentWallet.recountNewContracts();\r\n this.modalService.prepareModal('info', 'PURCHASE.IGNORED_ACCEPT');\r\n this.back();\r\n }\r\n\r\n productNotGot() {\r\n this.backend.releaseProposal(this.currentWalletId, this.currentContract.contract_id, 'REL_B', (release_status) => {\r\n if (release_status) {\r\n this.modalService.prepareModal('info', 'PURCHASE.BURN_PROPOSAL');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n dealsDetailsFinish() {\r\n this.backend.releaseProposal(this.currentWalletId, this.currentContract.contract_id, 'REL_N', (release_status) => {\r\n if (release_status) {\r\n this.modalService.prepareModal('success', 'PURCHASE.SUCCESS_FINISH_PROPOSAL');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n dealsDetailsCancel() {\r\n this.backend.requestCancelContract(this.currentWalletId, this.currentContract.contract_id, this.purchaseForm.get('timeCancel').value, (cancel_status) => {\r\n if (cancel_status) {\r\n this.modalService.prepareModal('info', 'PURCHASE.SEND_CANCEL_PROPOSAL');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n dealsDetailsDontCanceling() {\r\n this.variablesService.settings.notViewedContracts = this.variablesService.settings.notViewedContracts ? this.variablesService.settings.notViewedContracts : [];\r\n let findViewedCont = false;\r\n for (let j = 0; j < this.variablesService.settings.notViewedContracts.length; j++) {\r\n if (this.variablesService.settings.notViewedContracts[j].contract_id === this.currentContract.contract_id && this.variablesService.settings.notViewedContracts[j].is_a === this.currentContract.is_a) {\r\n this.variablesService.settings.notViewedContracts[j].state = 130;\r\n this.variablesService.settings.notViewedContracts[j].time = this.currentContract.cancel_expiration_time;\r\n findViewedCont = true;\r\n break;\r\n }\r\n }\r\n if (!findViewedCont) {\r\n this.variablesService.settings.notViewedContracts.push({\r\n contract_id: this.currentContract.contract_id,\r\n is_a: this.currentContract.is_a,\r\n state: 130,\r\n time: this.currentContract.cancel_expiration_time\r\n });\r\n }\r\n this.currentContract.is_new = true;\r\n this.currentContract.state = 130;\r\n this.currentContract.time = this.currentContract.cancel_expiration_time;\r\n this.variablesService.currentWallet.recountNewContracts();\r\n this.modalService.prepareModal('info', 'PURCHASE.IGNORED_CANCEL');\r\n this.back();\r\n }\r\n\r\n dealsDetailsSellerCancel() {\r\n this.backend.acceptCancelContract(this.currentWalletId, this.currentContract.contract_id, (accept_status) => {\r\n if (accept_status) {\r\n this.modalService.prepareModal('info', 'PURCHASE.DEALS_CANCELED_WAIT');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n this.subRouting.unsubscribe();\r\n this.heightAppEvent.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n \\\"qr-code\\\"\\r\\n
\\r\\n
{{variablesService.currentWallet.address}}
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.wrap-qr {\\n display: flex;\\n flex-direction: column;\\n align-items: center; }\\n\\n.wrap-qr img {\\n margin: 4rem 0; }\\n\\n.wrap-qr .wrap-address {\\n display: flex;\\n align-items: center;\\n font-size: 1.4rem;\\n line-height: 2.7rem; }\\n\\n.wrap-qr .wrap-address .btn-copy-address {\\n margin-left: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.wrap-qr .wrap-address .btn-copy-address.copy {\\n -webkit-mask: url('copy.svg') no-repeat center;\\n mask: url('copy.svg') no-repeat center; }\\n\\n.wrap-qr .wrap-address .btn-copy-address.copy:hover {\\n opacity: 0.75; }\\n\\n.wrap-qr .wrap-address .btn-copy-address.copied {\\n -webkit-mask: url('complete-testwallet.svg') no-repeat center;\\n mask: url('complete-testwallet.svg') no-repeat center; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVjZWl2ZS9FOlxcWmFub1xcY2hlY2tcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxyZWNlaXZlXFxyZWNlaXZlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixtQkFBbUIsRUFBQTs7QUFIckI7SUFNSSxjQUFjLEVBQUE7O0FBTmxCO0lBVUksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIsbUJBQW1CLEVBQUE7O0FBYnZCO01BZ0JNLG1CQUFtQjtNQUNuQixhQUFhO01BQ2IsY0FBYyxFQUFBOztBQWxCcEI7UUFxQlEsOENBQXVEO2dCQUF2RCxzQ0FBdUQsRUFBQTs7QUFyQi9EO1VBd0JVLGFBQWEsRUFBQTs7QUF4QnZCO1FBNkJRLDZEQUFzRTtnQkFBdEUscURBQXNFLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9yZWNlaXZlL3JlY2VpdmUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi53cmFwLXFyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgaW1nIHtcclxuICAgIG1hcmdpbjogNHJlbSAwO1xyXG4gIH1cclxuXHJcbiAgLndyYXAtYWRkcmVzcyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuN3JlbTtcclxuXHJcbiAgICAuYnRuLWNvcHktYWRkcmVzcyB7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAxLjJyZW07XHJcbiAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgIGhlaWdodDogMS43cmVtO1xyXG5cclxuICAgICAgJi5jb3B5IHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2NvcHkuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG5cclxuICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgIG9wYWNpdHk6IDAuNzU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmNvcGllZCB7XHJcbiAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9jb21wbGV0ZS10ZXN0d2FsbGV0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, OnInit, OnDestroy} from '@angular/core';\r\nimport QRCode from 'qrcode';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ActivatedRoute} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-receive',\r\n templateUrl: './receive.component.html',\r\n styleUrls: ['./receive.component.scss']\r\n})\r\nexport class ReceiveComponent implements OnInit, OnDestroy {\r\n qrImageSrc: string;\r\n parentRouting;\r\n copyAnimation = false;\r\n copyAnimationTimeout;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private backend: BackendService,\r\n public variablesService: VariablesService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(() => {\r\n QRCode.toDataURL(this.variablesService.currentWallet.address, {\r\n width: 106,\r\n height: 106\r\n }).then(url => {\r\n this.qrImageSrc = url;\r\n }).catch(err => {\r\n console.error(err);\r\n });\r\n });\r\n }\r\n\r\n public copyAddress() {\r\n this.backend.setClipboard(this.variablesService.currentWallet.address);\r\n this.copyAnimation = true;\r\n this.copyAnimationTimeout = window.setTimeout(() => {\r\n this.copyAnimation = false;\r\n }, 2000);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n clearTimeout(this.copyAnimationTimeout);\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\\r\\n {{ 'BREADCRUMBS.RESTORE_WALLET' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\\r\\n
\\r\\n
\\r\\n
= variablesService.maxWalletNameLength\\\">\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.KEY_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.KEY_NOT_VALID' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \":host {\\n position: relative; }\\n\\n.form-restore {\\n margin: 2.4rem 0;\\n width: 100%; }\\n\\n.form-restore .input-block.half-block {\\n width: 50%; }\\n\\n.form-restore .wrap-buttons {\\n display: flex;\\n margin: 2.5rem -0.7rem;\\n width: 50%; }\\n\\n.form-restore .wrap-buttons button {\\n margin: 0 0.7rem; }\\n\\n.form-restore .wrap-buttons button.transparent-button {\\n flex-basis: 50%; }\\n\\n.form-restore .wrap-buttons button.select-button {\\n flex-basis: 60%; }\\n\\n.form-restore .wrap-buttons button.create-button {\\n flex: 1 1 50%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVzdG9yZS13YWxsZXQvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxccmVzdG9yZS13YWxsZXRcXHJlc3RvcmUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsZ0JBQWdCO0VBQ2hCLFdBQVcsRUFBQTs7QUFGYjtJQU9NLFVBQVUsRUFBQTs7QUFQaEI7SUFZSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLFVBQVUsRUFBQTs7QUFkZDtNQWlCTSxnQkFBZ0IsRUFBQTs7QUFqQnRCO1FBb0JRLGVBQWUsRUFBQTs7QUFwQnZCO1FBd0JRLGVBQWUsRUFBQTs7QUF4QnZCO1FBNEJRLGFBQWEsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3Jlc3RvcmUtd2FsbGV0L3Jlc3RvcmUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLmZvcm0tcmVzdG9yZSB7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgLmlucHV0LWJsb2NrIHtcclxuXHJcbiAgICAmLmhhbGYtYmxvY2sge1xyXG4gICAgICB3aWR0aDogNTAlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuICAgIHdpZHRoOiA1MCU7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAwIDAuN3JlbTtcclxuXHJcbiAgICAgICYudHJhbnNwYXJlbnQtYnV0dG9uIHtcclxuICAgICAgICBmbGV4LWJhc2lzOiA1MCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuc2VsZWN0LWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleC1iYXNpczogNjAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmNyZWF0ZS1idXR0b24ge1xyXG4gICAgICAgIGZsZXg6IDEgMSA1MCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-restore-wallet',\r\n templateUrl: './restore-wallet.component.html',\r\n styleUrls: ['./restore-wallet.component.scss']\r\n})\r\nexport class RestoreWalletComponent implements OnInit {\r\n\r\n restoreForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, (g: FormControl) => {\r\n for (let i = 0; i < this.variablesService.wallets.length; i++) {\r\n if (g.value === this.variablesService.wallets[i].name) {\r\n return {'duplicate': true};\r\n }\r\n }\r\n return null;\r\n }]),\r\n key: new FormControl('', Validators.required),\r\n password: new FormControl(''),\r\n confirm: new FormControl('')\r\n }, function (g: FormGroup) {\r\n return g.get('password').value === g.get('confirm').value ? null : {'confirm_mismatch': true};\r\n });\r\n\r\n wallet = {\r\n id: ''\r\n };\r\n\r\n walletSaved = false;\r\n walletSavedName = '';\r\n progressWidth = '9rem';\r\n\r\n constructor(\r\n private router: Router,\r\n private backend: BackendService,\r\n public variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n\r\n createWallet() {\r\n this.ngZone.run(() => {\r\n this.progressWidth = '100%';\r\n this.router.navigate(['/seed-phrase'], {queryParams: {wallet_id: this.wallet.id}});\r\n });\r\n }\r\n\r\n saveWallet() {\r\n if (this.restoreForm.valid && this.restoreForm.get('name').value.length <= this.variablesService.maxWalletNameLength) {\r\n this.backend.isValidRestoreWalletText(this.restoreForm.get('key').value, (valid_status, valid_data) => {\r\n if (valid_data !== 'TRUE') {\r\n this.ngZone.run(() => {\r\n this.restoreForm.get('key').setErrors({key_not_valid: true});\r\n });\r\n } else {\r\n this.backend.saveFileDialog(this.translate.instant('RESTORE_WALLET.CHOOSE_PATH'), '*', this.variablesService.settings.default_path, (save_status, save_data) => {\r\n if (save_status) {\r\n this.variablesService.settings.default_path = save_data.path.substr(0, save_data.path.lastIndexOf('/'));\r\n this.walletSavedName = save_data.path.substr(save_data.path.lastIndexOf('/') + 1, save_data.path.length - 1);\r\n this.backend.restoreWallet(save_data.path, this.restoreForm.get('password').value, this.restoreForm.get('key').value, (restore_status, restore_data) => {\r\n if (restore_status) {\r\n this.wallet.id = restore_data.wallet_id;\r\n this.variablesService.opening_wallet = new Wallet(\r\n restore_data.wallet_id,\r\n this.restoreForm.get('name').value,\r\n this.restoreForm.get('password').value,\r\n restore_data['wi'].path,\r\n restore_data['wi'].address,\r\n restore_data['wi'].balance,\r\n restore_data['wi'].unlocked_balance,\r\n restore_data['wi'].mined_total,\r\n restore_data['wi'].tracking_hey\r\n );\r\n this.variablesService.opening_wallet.alias = this.backend.getWalletAlias(this.variablesService.opening_wallet.address);\r\n if (restore_data.recent_history && restore_data.recent_history.history) {\r\n this.variablesService.opening_wallet.prepareHistory(restore_data.recent_history.history);\r\n }\r\n this.backend.getContracts(this.variablesService.opening_wallet.wallet_id, (contracts_status, contracts_data) => {\r\n if (contracts_status && contracts_data.hasOwnProperty('contracts')) {\r\n this.ngZone.run(() => {\r\n this.variablesService.opening_wallet.prepareContractsAfterOpen(contracts_data.contracts, this.variablesService.exp_med_ts, this.variablesService.height_app, this.variablesService.settings.viewedContracts, this.variablesService.settings.notViewedContracts);\r\n });\r\n }\r\n });\r\n this.ngZone.run(() => {\r\n this.walletSaved = true;\r\n this.progressWidth = '50%';\r\n });\r\n } else {\r\n this.modalService.prepareModal('error', 'RESTORE_WALLET.NOT_CORRECT_FILE_OR_PASSWORD');\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\\r\\n {{ 'BREADCRUMBS.SAVE_PHRASE' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n

{{ 'SEED_PHRASE.TITLE' | translate }}

\\r\\n\\r\\n
\\r\\n \\r\\n
{{(index + 1) + '. ' + word}}
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \":host {\\n position: relative; }\\n\\n.seed-phrase-title {\\n line-height: 2.2rem;\\n padding: 2.2rem 0; }\\n\\n.seed-phrase-content {\\n display: flex;\\n flex-direction: column;\\n flex-wrap: wrap;\\n padding: 1.4rem;\\n width: 100%;\\n height: 12rem; }\\n\\n.seed-phrase-content .word {\\n line-height: 2.2rem;\\n max-width: 13rem; }\\n\\n.wrap-buttons {\\n display: flex; }\\n\\n.wrap-buttons .seed-phrase-button {\\n margin: 2.8rem 0;\\n width: 25%;\\n min-width: 1.5rem; }\\n\\n.wrap-buttons .copy-button {\\n margin: 2.8rem 1rem;\\n width: 25%;\\n min-width: 1.5rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2VlZC1waHJhc2UvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcc2VlZC1waHJhc2VcXHNlZWQtcGhyYXNlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsbUJBQW1CO0VBQ25CLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsZUFBZTtFQUNmLGVBQWU7RUFDZixXQUFXO0VBQ1gsYUFBYSxFQUFBOztBQU5mO0lBU0ksbUJBQW1CO0lBQ25CLGdCQUFnQixFQUFBOztBQUlwQjtFQUNFLGFBQWEsRUFBQTs7QUFEZjtJQUlJLGdCQUFnQjtJQUNoQixVQUFVO0lBQ1YsaUJBQWlCLEVBQUE7O0FBTnJCO0lBVUksbUJBQW1CO0lBQ25CLFVBQVU7SUFDVixpQkFBaUIsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NlZWQtcGhyYXNlL3NlZWQtcGhyYXNlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLnNlZWQtcGhyYXNlLXRpdGxlIHtcclxuICBsaW5lLWhlaWdodDogMi4ycmVtO1xyXG4gIHBhZGRpbmc6IDIuMnJlbSAwO1xyXG59XHJcblxyXG4uc2VlZC1waHJhc2UtY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxuICBwYWRkaW5nOiAxLjRyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMnJlbTtcclxuXHJcbiAgLndvcmQge1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuMnJlbTtcclxuICAgIG1heC13aWR0aDogMTNyZW07XHJcbiAgfVxyXG59XHJcblxyXG4ud3JhcC1idXR0b25zIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG5cclxuICAuc2VlZC1waHJhc2UtYnV0dG9uIHtcclxuICAgIG1hcmdpbjogMi44cmVtIDA7XHJcbiAgICB3aWR0aDogMjUlO1xyXG4gICAgbWluLXdpZHRoOiAxLjVyZW07XHJcbiAgfVxyXG5cclxuICAuY29weS1idXR0b24ge1xyXG4gICAgbWFyZ2luOiAyLjhyZW0gMXJlbTtcclxuICAgIHdpZHRoOiAyNSU7XHJcbiAgICBtaW4td2lkdGg6IDEuNXJlbTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ== */\"","import {Component, NgZone, OnDestroy, OnInit} from '@angular/core';\r\nimport {Location} from '@angular/common';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\n\r\n@Component({\r\n selector: 'app-seed-phrase',\r\n templateUrl: './seed-phrase.component.html',\r\n styleUrls: ['./seed-phrase.component.scss']\r\n})\r\nexport class SeedPhraseComponent implements OnInit, OnDestroy {\r\n\r\n queryRouting;\r\n seedPhrase = '';\r\n wallet_id: number;\r\n seedPhraseCopied = false;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private location: Location,\r\n private backend: BackendService,\r\n public variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.queryRouting = this.route.queryParams.subscribe(params => {\r\n if (params.wallet_id) {\r\n this.wallet_id = params.wallet_id;\r\n this.backend.getSmartWalletInfo(params.wallet_id, (status, data) => {\r\n if (data.hasOwnProperty('restore_key')) {\r\n this.ngZone.run(() => {\r\n this.seedPhrase = data['restore_key'].trim();\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n runWallet() {\r\n let exists = false;\r\n this.variablesService.wallets.forEach((wallet) => {\r\n if (wallet.address === this.variablesService.opening_wallet.address) {\r\n exists = true;\r\n }\r\n });\r\n if (!exists) {\r\n this.backend.runWallet(this.wallet_id, (run_status, run_data) => {\r\n if (run_status) {\r\n this.variablesService.wallets.push(this.variablesService.opening_wallet);\r\n if (this.variablesService.appPass) {\r\n this.backend.storeSecureAppData();\r\n }\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.wallet_id]);\r\n });\r\n } else {\r\n console.log(run_data['error_code']);\r\n }\r\n });\r\n } else {\r\n this.variablesService.opening_wallet = null;\r\n this.modalService.prepareModal('error', 'OPEN_WALLET.WITH_ADDRESS_ALREADY_OPEN');\r\n this.backend.closeWallet(this.wallet_id, () => {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n });\r\n }\r\n }\r\n\r\n copySeedPhrase() {\r\n this.backend.setClipboard(this.seedPhrase, () => {\r\n this.ngZone.run(() => {\r\n this.seedPhraseCopied = true;\r\n });\r\n });\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.queryRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
{{item.name}}
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.ADDRESS_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.ADDRESS_NOT_VALID' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.ALIAS_NOT_VALID' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.AMOUNT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.AMOUNT_ZERO' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
= variablesService.maxCommentLength\\\">\\r\\n {{ 'SEND.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.AMOUNT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.FEE_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.FEE_MINIMUM' | translate : {fee: variablesService.default_fee} }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.form-send .input-blocks-row {\\n display: flex; }\\n\\n.form-send .input-blocks-row > div {\\n flex-basis: 50%; }\\n\\n.form-send .input-blocks-row > div:first-child {\\n margin-right: 1.5rem; }\\n\\n.form-send .input-blocks-row > div:last-child {\\n margin-left: 1.5rem; }\\n\\n.form-send .send-select {\\n display: flex;\\n align-items: center;\\n background: transparent;\\n border: none;\\n font-size: 1.3rem;\\n line-height: 1.3rem;\\n margin: 1.5rem 0 0;\\n padding: 0;\\n width: 100%;\\n max-width: 15rem;\\n height: 1.3rem; }\\n\\n.form-send .send-select .arrow {\\n margin-left: 1rem;\\n width: 0.8rem;\\n height: 0.8rem; }\\n\\n.form-send .send-select .arrow.down {\\n -webkit-mask: url('arrow-down.svg') no-repeat center;\\n mask: url('arrow-down.svg') no-repeat center; }\\n\\n.form-send .send-select .arrow.up {\\n -webkit-mask: url('arrow-up.svg') no-repeat center;\\n mask: url('arrow-up.svg') no-repeat center; }\\n\\n.form-send .additional-details {\\n display: flex;\\n margin-top: 1.5rem;\\n padding: 0.5rem 0 2rem; }\\n\\n.form-send .additional-details > div {\\n flex-basis: 25%; }\\n\\n.form-send .additional-details > div:first-child {\\n padding-left: 1.5rem;\\n padding-right: 1rem; }\\n\\n.form-send .additional-details > div:last-child {\\n padding-left: 1rem;\\n padding-right: 1.5rem; }\\n\\n.form-send .additional-details .checkbox-block {\\n flex-basis: 50%; }\\n\\n.form-send .additional-details .checkbox-block > label {\\n top: 3.5rem; }\\n\\n.form-send button {\\n margin: 2.4rem 0;\\n width: 100%;\\n max-width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2VuZC9FOlxcWmFub1xcY2hlY2tcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxzZW5kXFxzZW5kLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBR0ksYUFBYSxFQUFBOztBQUhqQjtJQU1NLGVBQWUsRUFBQTs7QUFOckI7TUFTUSxvQkFBb0IsRUFBQTs7QUFUNUI7TUFhUSxtQkFBbUIsRUFBQTs7QUFiM0I7RUFtQkksYUFBYTtFQUNiLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsWUFBWTtFQUNaLGlCQUFpQjtFQUNqQixtQkFBbUI7RUFDbkIsa0JBQWtCO0VBQ2xCLFVBQVU7RUFDVixXQUFXO0VBQ1gsZ0JBQWdCO0VBQ2hCLGNBQWMsRUFBQTs7QUE3QmxCO0lBZ0NNLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsY0FBYyxFQUFBOztBQWxDcEI7TUFxQ1Esb0RBQTREO2NBQTVELDRDQUE0RCxFQUFBOztBQXJDcEU7TUF5Q1Esa0RBQTBEO2NBQTFELDBDQUEwRCxFQUFBOztBQXpDbEU7RUErQ0ksYUFBYTtFQUNiLGtCQUFrQjtFQUNsQixzQkFBc0IsRUFBQTs7QUFqRDFCO0lBb0RNLGVBQWUsRUFBQTs7QUFwRHJCO01BdURRLG9CQUFvQjtNQUNwQixtQkFBbUIsRUFBQTs7QUF4RDNCO01BNERRLGtCQUFrQjtNQUNsQixxQkFBcUIsRUFBQTs7QUE3RDdCO0lBa0VNLGVBQWUsRUFBQTs7QUFsRXJCO01BcUVRLFdBQVcsRUFBQTs7QUFyRW5CO0VBMkVJLGdCQUFnQjtFQUNoQixXQUFXO0VBQ1gsZ0JBQWdCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zZW5kL3NlbmQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5mb3JtLXNlbmQge1xyXG5cclxuICAuaW5wdXQtYmxvY2tzLXJvdyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG5cclxuICAgID4gZGl2IHtcclxuICAgICAgZmxleC1iYXNpczogNTAlO1xyXG5cclxuICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEuNXJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnNlbmQtc2VsZWN0IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjNyZW07XHJcbiAgICBtYXJnaW46IDEuNXJlbSAwIDA7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gICAgaGVpZ2h0OiAxLjNyZW07XHJcblxyXG4gICAgLmFycm93IHtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDFyZW07XHJcbiAgICAgIHdpZHRoOiAwLjhyZW07XHJcbiAgICAgIGhlaWdodDogMC44cmVtO1xyXG5cclxuICAgICAgJi5kb3duIHtcclxuICAgICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvYXJyb3ctZG93bi5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYudXAge1xyXG4gICAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9hcnJvdy11cC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5hZGRpdGlvbmFsLWRldGFpbHMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIG1hcmdpbi10b3A6IDEuNXJlbTtcclxuICAgIHBhZGRpbmc6IDAuNXJlbSAwIDJyZW07XHJcblxyXG4gICAgPiBkaXYge1xyXG4gICAgICBmbGV4LWJhc2lzOiAyNSU7XHJcblxyXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMXJlbTtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuY2hlY2tib3gtYmxvY2sge1xyXG4gICAgICBmbGV4LWJhc2lzOiA1MCU7XHJcblxyXG4gICAgICA+IGxhYmVsIHtcclxuICAgICAgICB0b3A6IDMuNXJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYnV0dG9uIHtcclxuICAgIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, OnInit, OnDestroy, NgZone, HostListener} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Component({\r\n selector: 'app-send',\r\n templateUrl: './send.component.html',\r\n styleUrls: ['./send.component.scss']\r\n})\r\nexport class SendComponent implements OnInit, OnDestroy {\r\n\r\n isOpen = false;\r\n localAliases = [];\r\n\r\n currentWalletId = null;\r\n parentRouting;\r\n sendForm = new FormGroup({\r\n address: new FormControl('', [Validators.required, (g: FormControl) => {\r\n this.localAliases = [];\r\n if (g.value) {\r\n if (g.value.indexOf('@') !== 0) {\r\n this.isOpen = false;\r\n this.backend.validateAddress(g.value, (valid_status) => {\r\n this.ngZone.run(() => {\r\n if (valid_status === false) {\r\n g.setErrors(Object.assign({'address_not_valid': true}, g.errors));\r\n } else {\r\n if (g.hasError('address_not_valid')) {\r\n delete g.errors['address_not_valid'];\r\n if (Object.keys(g.errors).length === 0) {\r\n g.setErrors(null);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n return (g.hasError('address_not_valid')) ? {'address_not_valid': true} : null;\r\n } else {\r\n this.isOpen = true;\r\n this.localAliases = this.variablesService.aliases.filter((item) => {\r\n return item.name.indexOf(g.value) > -1;\r\n });\r\n if (!(/^@?[a-z0-9\\.\\-]{6,25}$/.test(g.value))) {\r\n g.setErrors(Object.assign({'alias_not_valid': true}, g.errors));\r\n } else {\r\n this.backend.getAliasByName(g.value.replace('@', ''), (alias_status) => {\r\n this.ngZone.run(() => {\r\n if (alias_status) {\r\n if (g.hasError('alias_not_valid')) {\r\n delete g.errors['alias_not_valid'];\r\n if (Object.keys(g.errors).length === 0) {\r\n g.setErrors(null);\r\n }\r\n }\r\n } else {\r\n g.setErrors(Object.assign({'alias_not_valid': true}, g.errors));\r\n }\r\n });\r\n });\r\n }\r\n return (g.hasError('alias_not_valid')) ? {'alias_not_valid': true} : null;\r\n }\r\n }\r\n return null;\r\n }]),\r\n amount: new FormControl(null, [Validators.required, (g: FormControl) => {\r\n if (new BigNumber(g.value).eq(0)) {\r\n return {'zero': true};\r\n }\r\n return null;\r\n }]),\r\n comment: new FormControl('', [(g: FormControl) => {\r\n if (g.value > this.variablesService.maxCommentLength) {\r\n return {'maxLength': true};\r\n } else {\r\n return null;\r\n }\r\n }]),\r\n mixin: new FormControl(0, Validators.required),\r\n fee: new FormControl(this.variablesService.default_fee, [Validators.required, (g: FormControl) => {\r\n if ((new BigNumber(g.value)).isLessThan(this.variablesService.default_fee)) {\r\n return {'less_min': true};\r\n }\r\n return null;\r\n }]),\r\n hide: new FormControl(false)\r\n });\r\n additionalOptions = false;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private backend: BackendService,\r\n public variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {\r\n }\r\n\r\n addressMouseDown(e) {\r\n if (e['button'] === 0 && this.sendForm.get('address').value && this.sendForm.get('address').value.indexOf('@') === 0) {\r\n this.isOpen = true;\r\n }\r\n }\r\n\r\n setAlias(alias) {\r\n this.sendForm.get('address').setValue(alias);\r\n }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(targetElement) {\r\n if (targetElement.id !== 'send-address' && this.isOpen) {\r\n this.isOpen = false;\r\n }\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(params => {\r\n this.currentWalletId = params['id'];\r\n this.sendForm.reset({\r\n address: this.variablesService.currentWallet.send_data['address'],\r\n amount: this.variablesService.currentWallet.send_data['amount'],\r\n comment: this.variablesService.currentWallet.send_data['comment'],\r\n mixin: this.variablesService.currentWallet.send_data['mixin'] || 0,\r\n fee: this.variablesService.currentWallet.send_data['fee'] || this.variablesService.default_fee,\r\n hide: this.variablesService.currentWallet.send_data['hide'] || false\r\n });\r\n });\r\n }\r\n\r\n onSend() {\r\n if (this.sendForm.valid) {\r\n if (this.sendForm.get('address').value.indexOf('@') !== 0) {\r\n this.backend.validateAddress(this.sendForm.get('address').value, (valid_status) => {\r\n if (valid_status === false) {\r\n this.ngZone.run(() => {\r\n this.sendForm.get('address').setErrors({'address_not_valid': true});\r\n });\r\n } else {\r\n this.backend.sendMoney(\r\n this.currentWalletId,\r\n this.sendForm.get('address').value,\r\n this.sendForm.get('amount').value,\r\n this.sendForm.get('fee').value,\r\n this.sendForm.get('mixin').value,\r\n this.sendForm.get('comment').value,\r\n this.sendForm.get('hide').value,\r\n (send_status) => {\r\n if (send_status) {\r\n this.modalService.prepareModal('success', 'SEND.SUCCESS_SENT');\r\n this.variablesService.currentWallet.send_data = {address: null, amount: null, comment: null, mixin: null, fee: null, hide: null};\r\n this.sendForm.reset({address: null, amount: null, comment: null, mixin: 0, fee: this.variablesService.default_fee, hide: false});\r\n }\r\n });\r\n }\r\n });\r\n } else {\r\n this.backend.getAliasByName(this.sendForm.get('address').value.replace('@', ''), (alias_status, alias_data) => {\r\n this.ngZone.run(() => {\r\n if (alias_status === false) {\r\n this.ngZone.run(() => {\r\n this.sendForm.get('address').setErrors({'alias_not_valid': true});\r\n });\r\n } else {\r\n this.backend.sendMoney(\r\n this.currentWalletId,\r\n alias_data.address, // this.sendForm.get('address').value,\r\n this.sendForm.get('amount').value,\r\n this.sendForm.get('fee').value,\r\n this.sendForm.get('mixin').value,\r\n this.sendForm.get('comment').value,\r\n this.sendForm.get('hide').value,\r\n (send_status) => {\r\n if (send_status) {\r\n this.modalService.prepareModal('success', 'SEND.SUCCESS_SENT');\r\n this.variablesService.currentWallet.send_data = {address: null, amount: null, comment: null, mixin: null, fee: null, hide: null};\r\n this.sendForm.reset({address: null, amount: null, comment: null, mixin: 0, fee: this.variablesService.default_fee, hide: false});\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n toggleOptions() {\r\n this.additionalOptions = !this.additionalOptions;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n this.variablesService.currentWallet.send_data = {\r\n address: this.sendForm.get('address').value,\r\n amount: this.sendForm.get('amount').value,\r\n comment: this.sendForm.get('comment').value,\r\n mixin: this.sendForm.get('mixin').value,\r\n fee: this.sendForm.get('fee').value,\r\n hide: this.sendForm.get('hide').value\r\n };\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n

{{ 'SETTINGS.TITLE' | translate }}

\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{item.name | translate}}\\r\\n \\r\\n \\r\\n {{item.name | translate}}\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n {{ 'SETTINGS.MASTER_PASSWORD.TITLE' | translate }}\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n {{ 'SETTINGS.FORM_ERRORS.PASS_NOT_MATCH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n {{ 'SETTINGS.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
{{ 'SETTINGS.LAST_BUILD' | translate : {value: currentBuild} }}
\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \".head {\\n justify-content: flex-end; }\\n\\n.settings-title {\\n font-size: 1.7rem; }\\n\\n.theme-selection {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n margin: 2.4rem 0;\\n width: 50%; }\\n\\n.theme-selection .radio-block {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n font-size: 1.3rem;\\n line-height: 2.7rem; }\\n\\n.lock-selection {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n margin: 2.4rem 0;\\n width: 50%; }\\n\\n.lock-selection .lock-selection-title {\\n display: flex;\\n font-size: 1.5rem;\\n line-height: 2.7rem;\\n margin-bottom: 1rem; }\\n\\n.scale-selection {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 0 0 4rem;\\n width: 50%;\\n height: 0.5rem; }\\n\\n.scale-selection .button-block {\\n position: relative;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex: 1 0 auto;\\n margin: 0 0.2rem;\\n padding: 0;\\n height: 0.5rem; }\\n\\n.scale-selection .button-block .label {\\n position: absolute;\\n bottom: -1rem;\\n left: 50%;\\n transform: translate(-50%, 100%);\\n font-size: 1rem;\\n white-space: nowrap; }\\n\\n.master-password {\\n width: 50%; }\\n\\n.master-password .master-password-title {\\n display: flex;\\n font-size: 1.5rem;\\n line-height: 2.7rem;\\n margin-bottom: 1rem; }\\n\\n.master-password button {\\n margin: 2.5rem auto;\\n width: 100%;\\n max-width: 15rem; }\\n\\n.last-build {\\n font-size: 1rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2V0dGluZ3MvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcc2V0dGluZ3NcXHNldHRpbmdzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UseUJBQXlCLEVBQUE7O0FBRzNCO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0Qix1QkFBdUI7RUFDdkIsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTs7QUFMWjtJQVFJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsMkJBQTJCO0lBQzNCLGlCQUFpQjtJQUNqQixtQkFBbUIsRUFBQTs7QUFJdkI7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLHVCQUF1QjtFQUN2QixnQkFBZ0I7RUFDaEIsVUFBVSxFQUFBOztBQUxaO0lBUUksYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsbUJBQW1CLEVBQUE7O0FBSXZCO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQiw4QkFBOEI7RUFDOUIsaUJBQWlCO0VBQ2pCLFVBQVU7RUFDVixjQUFjLEVBQUE7O0FBTmhCO0lBU0ksa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsVUFBVTtJQUNWLGNBQWMsRUFBQTs7QUFoQmxCO01BbUJNLGtCQUFrQjtNQUNsQixhQUFhO01BQ2IsU0FBUztNQUNULGdDQUFnQztNQUNoQyxlQUFlO01BQ2YsbUJBQW1CLEVBQUE7O0FBS3pCO0VBQ0UsVUFBVSxFQUFBOztBQURaO0lBSUksYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsbUJBQW1CLEVBQUE7O0FBUHZCO0lBV0ksbUJBQW1CO0lBQ25CLFdBQVc7SUFDWCxnQkFBZ0IsRUFBQTs7QUFJcEI7RUFDRSxlQUFlLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zZXR0aW5ncy9zZXR0aW5ncy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5oZWFkIHtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG59XHJcblxyXG4uc2V0dGluZ3MtdGl0bGUge1xyXG4gIGZvbnQtc2l6ZTogMS43cmVtO1xyXG59XHJcblxyXG4udGhlbWUtc2VsZWN0aW9uIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuICB3aWR0aDogNTAlO1xyXG5cclxuICAucmFkaW8tYmxvY2sge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAyLjdyZW07XHJcbiAgfVxyXG59XHJcblxyXG4ubG9jay1zZWxlY3Rpb24ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBtYXJnaW46IDIuNHJlbSAwO1xyXG4gIHdpZHRoOiA1MCU7XHJcblxyXG4gIC5sb2NrLXNlbGVjdGlvbi10aXRsZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICB9XHJcbn1cclxuXHJcbi5zY2FsZS1zZWxlY3Rpb24ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgcGFkZGluZzogMCAwIDRyZW07XHJcbiAgd2lkdGg6IDUwJTtcclxuICBoZWlnaHQ6IDAuNXJlbTtcclxuXHJcbiAgLmJ1dHRvbi1ibG9jayB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgZmxleDogMSAwIGF1dG87XHJcbiAgICBtYXJnaW46IDAgMC4ycmVtO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGhlaWdodDogMC41cmVtO1xyXG5cclxuICAgIC5sYWJlbCB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgYm90dG9tOiAtMXJlbTtcclxuICAgICAgbGVmdDogNTAlO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAxMDAlKTtcclxuICAgICAgZm9udC1zaXplOiAxcmVtO1xyXG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLm1hc3Rlci1wYXNzd29yZCB7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLm1hc3Rlci1wYXNzd29yZC10aXRsZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICB9XHJcblxyXG4gIGJ1dHRvbiB7XHJcbiAgICBtYXJnaW46IDIuNXJlbSBhdXRvO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmxhc3QtYnVpbGQge1xyXG4gIGZvbnQtc2l6ZTogMXJlbTtcclxufVxyXG4iXX0= */\"","import {Component, NgZone, OnInit, Renderer2} from '@angular/core';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {FormControl, FormGroup} from '@angular/forms';\r\nimport {Location} from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-settings',\r\n templateUrl: './settings.component.html',\r\n styleUrls: ['./settings.component.scss']\r\n})\r\nexport class SettingsComponent implements OnInit {\r\n\r\n theme: string;\r\n scale: number;\r\n changeForm: any;\r\n appLockOptions = [\r\n {\r\n id: 5,\r\n name: 'SETTINGS.APP_LOCK.TIME1'\r\n },\r\n {\r\n id: 15,\r\n name: 'SETTINGS.APP_LOCK.TIME2'\r\n },\r\n {\r\n id: 60,\r\n name: 'SETTINGS.APP_LOCK.TIME3'\r\n },\r\n {\r\n id: 0,\r\n name: 'SETTINGS.APP_LOCK.TIME4'\r\n }\r\n ];\r\n appScaleOptions = [\r\n {\r\n id: 7.5,\r\n name: '75% scale'\r\n },\r\n {\r\n id: 10,\r\n name: '100% scale'\r\n },\r\n {\r\n id: 12.5,\r\n name: '125% scale'\r\n },\r\n {\r\n id: 15,\r\n name: '150% scale'\r\n }\r\n ];\r\n appLogOptions = [\r\n {\r\n id: -1\r\n },\r\n {\r\n id: 0\r\n },\r\n {\r\n id: 1\r\n },\r\n {\r\n id: 2\r\n },\r\n {\r\n id: 3\r\n },\r\n {\r\n id: 4\r\n }\r\n ];\r\n\r\n currentBuild = '';\r\n appPass: any;\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n public variablesService: VariablesService,\r\n private backend: BackendService,\r\n private location: Location,\r\n private ngZone: NgZone\r\n ) {\r\n this.theme = this.variablesService.settings.theme;\r\n this.scale = this.variablesService.settings.scale;\r\n this.changeForm = new FormGroup({\r\n password: new FormControl(''),\r\n new_password: new FormControl(''),\r\n new_confirmation: new FormControl('')\r\n }, [(g: FormGroup) => {\r\n return g.get('new_password').value === g.get('new_confirmation').value ? null : {'confirm_mismatch': true};\r\n }, (g: FormGroup) => {\r\n if (this.variablesService.appPass) {\r\n return g.get('password').value === this.variablesService.appPass ? null : {'pass_mismatch': true};\r\n }\r\n return null;\r\n }]);\r\n }\r\n\r\n ngOnInit() {\r\n this.backend.getVersion((version) => {\r\n this.ngZone.run(() => {\r\n this.currentBuild = version;\r\n });\r\n });\r\n }\r\n\r\n setTheme(theme) {\r\n this.renderer.removeClass(document.body, 'theme-' + this.theme);\r\n this.theme = theme;\r\n this.variablesService.settings.theme = this.theme;\r\n this.renderer.addClass(document.body, 'theme-' + this.theme);\r\n this.backend.storeAppData();\r\n }\r\n\r\n setScale(scale) {\r\n this.scale = scale;\r\n this.variablesService.settings.scale = this.scale;\r\n this.renderer.setStyle(document.documentElement, 'font-size', this.scale + 'px');\r\n this.backend.storeAppData();\r\n }\r\n\r\n onSubmitChangePass() {\r\n if (this.changeForm.valid) {\r\n this.variablesService.appPass = this.changeForm.get('new_password').value;\r\n if (this.variablesService.appPass) {\r\n this.backend.setMasterPassword({pass: this.variablesService.appPass}, (status, data) => {\r\n if (status) {\r\n this.backend.storeSecureAppData({pass: this.variablesService.appPass});\r\n this.variablesService.appLogin = true;\r\n this.variablesService.dataIsLoaded = true;\r\n this.variablesService.startCountdown();\r\n } else {\r\n console.log(data['error_code']);\r\n }\r\n \r\n })\r\n } else {\r\n this.backend.dropSecureAppData();\r\n }\r\n this.changeForm.reset();\r\n }\r\n }\r\n \r\n onLockChange() {\r\n if (this.variablesService.appLogin) {\r\n this.variablesService.restartCountdown();\r\n }\r\n this.backend.storeAppData();\r\n }\r\n\r\n onLogChange() {\r\n this.backend.setLogLevel(this.variablesService.settings.appLog);\r\n this.backend.storeAppData();\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n

{{ 'SIDEBAR.TITLE' | translate }}

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.OFFLINE' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.SYNCING' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.ONLINE' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.LOADING' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.ERROR' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.COMPLETE' | translate }}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ variablesService.sync.progress_value_text }}%
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ 'SIDEBAR.UPDATE.STANDARD' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{ 'SIDEBAR.UPDATE.IMPORTANT' | translate }}\\r\\n
\\r\\n {{ 'SIDEBAR.UPDATE.IMPORTANT_HINT' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{ 'SIDEBAR.UPDATE.CRITICAL' | translate }}\\r\\n
\\r\\n {{ 'SIDEBAR.UPDATE.IMPORTANT_HINT' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'SIDEBAR.UPDATE.TIME' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n flex: 0 0 25rem;\\n padding: 0 3rem;\\n max-width: 25rem; }\\n\\n.sidebar-accounts {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n flex: 1 1 auto; }\\n\\n.sidebar-accounts .sidebar-accounts-header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n flex: 0 0 auto;\\n height: 8rem;\\n font-weight: 400; }\\n\\n.sidebar-accounts .sidebar-accounts-header h3 {\\n font-size: 1.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-header button {\\n background: transparent;\\n border: none;\\n outline: none; }\\n\\n.sidebar-accounts .sidebar-accounts-list {\\n display: flex;\\n flex-direction: column;\\n flex: 1 1 auto;\\n margin: 0 -3rem;\\n overflow-y: overlay; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account {\\n display: flex;\\n flex-direction: column;\\n flex-shrink: 0;\\n cursor: pointer;\\n padding: 2rem 3rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row {\\n display: flex;\\n align-items: center;\\n justify-content: space-between; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-title-balance {\\n line-height: 2.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-title-balance .title {\\n font-size: 1.5rem;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-title-balance .balance {\\n font-size: 1.8rem;\\n font-weight: 600;\\n white-space: nowrap; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias {\\n font-size: 1.3rem;\\n line-height: 3.4rem;\\n margin-bottom: 0.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias .name {\\n display: flex;\\n align-items: center;\\n flex-shrink: 1;\\n line-height: 1.6rem;\\n padding-right: 1rem;\\n overflow: hidden; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias .name span {\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias .price {\\n flex-shrink: 0; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias .icon {\\n margin-left: 0.5rem;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias .icon.comment {\\n -webkit-mask: url('alert.svg') no-repeat center;\\n mask: url('alert.svg') no-repeat center; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-staking {\\n line-height: 2.9rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-staking .text {\\n font-size: 1.3rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-messages {\\n line-height: 2.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-messages .text {\\n font-size: 1.3rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-messages .indicator {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n border-radius: 1rem;\\n font-size: 1rem;\\n min-width: 2.4rem;\\n height: 1.6rem;\\n padding: 0 0.5rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\\n flex-direction: column;\\n height: 5.6rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .status {\\n align-self: flex-start;\\n font-size: 1.3rem;\\n line-height: 2.6rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .progress-bar-container {\\n display: flex;\\n margin: 0.4rem 0;\\n height: 0.7rem;\\n width: 100%; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .progress-bar-container .progress-bar {\\n flex: 1 0 auto; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .progress-bar-container .progress-bar .fill {\\n height: 100%; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .progress-bar-container .progress-percent {\\n flex: 0 0 auto;\\n font-size: 1.3rem;\\n line-height: 0.7rem;\\n padding-left: 0.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account:focus {\\n outline: none; }\\n\\n.sidebar-accounts:after {\\n content: '';\\n position: absolute;\\n bottom: 0;\\n left: -3rem;\\n width: calc(100% + 6rem);\\n height: 5rem; }\\n\\n.sidebar-settings {\\n flex: 0 0 auto;\\n padding-bottom: 1rem; }\\n\\n.sidebar-settings .wrap-button {\\n margin: 0 -3rem; }\\n\\n.sidebar-settings .wrap-button button {\\n display: flex;\\n align-items: center;\\n background: transparent;\\n border: none;\\n font-weight: 400;\\n line-height: 3rem;\\n outline: none;\\n padding: 0 3rem;\\n width: 100%; }\\n\\n.sidebar-settings .wrap-button button .icon {\\n margin-right: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.sidebar-settings .wrap-button button .icon.settings {\\n -webkit-mask: url('settings.svg') no-repeat center;\\n mask: url('settings.svg') no-repeat center; }\\n\\n.sidebar-settings .wrap-button button .icon.logout {\\n -webkit-mask: url('logout.svg') no-repeat center;\\n mask: url('logout.svg') no-repeat center; }\\n\\n.sidebar-synchronization-status {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n flex: 0 0 7rem;\\n font-size: 1.3rem; }\\n\\n.sidebar-synchronization-status .status-container {\\n position: relative;\\n flex-grow: 1;\\n text-align: left; }\\n\\n.sidebar-synchronization-status .status-container .offline, .sidebar-synchronization-status .status-container .online {\\n position: relative;\\n display: block;\\n line-height: 1.2rem;\\n padding-left: 2.2rem; }\\n\\n.sidebar-synchronization-status .status-container .offline:before, .sidebar-synchronization-status .status-container .online:before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n border-radius: 50%;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n.sidebar-synchronization-status .status-container .syncing, .sidebar-synchronization-status .status-container .loading {\\n line-height: 4rem; }\\n\\n.sidebar-synchronization-status .status-container .progress-bar-container {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n height: 0.7rem;\\n width: 100%; }\\n\\n.sidebar-synchronization-status .status-container .progress-bar-container .syncing {\\n display: flex; }\\n\\n.sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar {\\n flex: 1 0 auto; }\\n\\n.sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar .fill {\\n height: 100%; }\\n\\n.sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-percent {\\n flex: 0 0 auto;\\n font-size: 1.3rem;\\n line-height: 0.7rem;\\n padding-left: 0.7rem; }\\n\\n.sidebar-synchronization-status .status-container .progress-bar-container .loading {\\n -webkit-animation: move 5s linear infinite;\\n animation: move 5s linear infinite;\\n background-image: -webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.125, rgba(0, 0, 0, 0.15)), color-stop(0.125, transparent), color-stop(0.25, transparent), color-stop(0.25, rgba(0, 0, 0, 0.1)), color-stop(0.375, rgba(0, 0, 0, 0.1)), color-stop(0.375, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(0, 0, 0, 0.15)), color-stop(0.625, rgba(0, 0, 0, 0.15)), color-stop(0.625, transparent), color-stop(0.75, transparent), color-stop(0.75, rgba(0, 0, 0, 0.1)), color-stop(0.875, rgba(0, 0, 0, 0.1)), color-stop(0.875, transparent), to(transparent)), -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.125, rgba(0, 0, 0, 0.3)), color-stop(0.125, transparent), color-stop(0.25, transparent), color-stop(0.25, rgba(0, 0, 0, 0.25)), color-stop(0.375, rgba(0, 0, 0, 0.25)), color-stop(0.375, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(0, 0, 0, 0.3)), color-stop(0.625, rgba(0, 0, 0, 0.3)), color-stop(0.625, transparent), color-stop(0.75, transparent), color-stop(0.75, rgba(0, 0, 0, 0.25)), color-stop(0.875, rgba(0, 0, 0, 0.25)), color-stop(0.875, transparent), to(transparent));\\n background-size: 7rem 7rem;\\n height: 100%; }\\n\\n.sidebar-synchronization-status .update-container {\\n display: flex;\\n flex-grow: 1;\\n margin-left: 1rem;\\n text-align: right; }\\n\\n.sidebar-synchronization-status .update-container .update-text {\\n flex: 1 1 auto;\\n font-size: 1.2rem;\\n line-height: 1.8rem;\\n text-align: left; }\\n\\n.sidebar-synchronization-status .update-container .update-text.time {\\n font-size: 1.1rem; }\\n\\n.sidebar-synchronization-status .update-container .icon {\\n flex: 1 0 auto;\\n margin: 0.3rem 0 0 0.6rem;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n.sidebar-synchronization-status .update-container .icon.update {\\n -webkit-mask: url('update.svg') no-repeat center;\\n mask: url('update.svg') no-repeat center; }\\n\\n.sidebar-synchronization-status .update-container .icon.time {\\n -webkit-mask: url('time.svg') no-repeat center;\\n mask: url('time.svg') no-repeat center; }\\n\\n@-webkit-keyframes move {\\n 0% {\\n background-position: 100% -7rem; }\\n 100% {\\n background-position: 100% 7rem; } }\\n\\n@keyframes move {\\n 0% {\\n background-position: 100% -7rem; }\\n 100% {\\n background-position: 100% 7rem; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2lkZWJhci9FOlxcWmFub1xcY2hlY2tcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxzaWRlYmFyXFxzaWRlYmFyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0Qiw4QkFBOEI7RUFDOUIsZUFBZTtFQUNmLGVBQWU7RUFDZixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxrQkFBa0I7RUFDbEIsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixjQUFjLEVBQUE7O0FBSmhCO0lBT0ksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQiw4QkFBOEI7SUFDOUIsY0FBYztJQUNkLFlBQVk7SUFDWixnQkFBZ0IsRUFBQTs7QUFacEI7TUFlTSxpQkFBaUIsRUFBQTs7QUFmdkI7TUFtQk0sdUJBQXVCO01BQ3ZCLFlBQVk7TUFDWixhQUFhLEVBQUE7O0FBckJuQjtJQTBCSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLGNBQWM7SUFDZCxlQUFlO0lBQ2YsbUJBQW1CLEVBQUE7O0FBOUJ2QjtNQWlDTSxhQUFhO01BQ2Isc0JBQXNCO01BQ3RCLGNBQWM7TUFDZCxlQUFlO01BQ2Ysa0JBQWtCLEVBQUE7O0FBckN4QjtRQXdDUSxhQUFhO1FBQ2IsbUJBQW1CO1FBQ25CLDhCQUE4QixFQUFBOztBQTFDdEM7VUE2Q1UsbUJBQW1CLEVBQUE7O0FBN0M3QjtZQWdEWSxpQkFBaUI7WUFDakIsdUJBQXVCO1lBQ3ZCLGdCQUFnQjtZQUNoQixtQkFBbUIsRUFBQTs7QUFuRC9CO1lBdURZLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIsbUJBQW1CLEVBQUE7O0FBekQvQjtVQThEVSxpQkFBaUI7VUFDakIsbUJBQW1CO1VBQ25CLHFCQUFxQixFQUFBOztBQWhFL0I7WUFtRVksYUFBYTtZQUNiLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLG1CQUFtQjtZ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TUFDekIsYUFBYTtNQUNiLGNBQWMsRUFBQTs7QUEvR3BCO1FBa0hRLGdEQUF5RDtnQkFBekQsd0NBQXlELEVBQUE7O0FBbEhqRTtRQXNIUSw4Q0FBdUQ7Z0JBQXZELHNDQUF1RCxFQUFBOztBQU0vRDtFQUNFO0lBQ0UsK0JBQStCLEVBQUE7RUFFakM7SUFDRSw4QkFBOEIsRUFBQSxFQUFBOztBQUxsQztFQUNFO0lBQ0UsK0JBQStCLEVBQUE7RUFFakM7SUFDRSw4QkFBOEIsRUFBQSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgZmxleDogMCAwIDI1cmVtO1xyXG4gIHBhZGRpbmc6IDAgM3JlbTtcclxuICBtYXgtd2lkdGg6IDI1cmVtO1xyXG59XHJcblxyXG4uc2lkZWJhci1hY2NvdW50cyB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBmbGV4OiAxIDEgYXV0bztcclxuXHJcbiAgLnNpZGViYXItYWNjb3VudHMtaGVhZGVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgZmxleDogMCAwIGF1dG87XHJcbiAgICBoZWlnaHQ6IDhyZW07XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG5cclxuICAgIGgzIHtcclxuICAgICAgZm9udC1zaXplOiAxLjdyZW07XHJcbiAgICB9XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zaWRlYmFyLWFjY291bnRzLWxpc3Qge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBmbGV4OiAxIDEgYXV0bztcclxuICAgIG1hcmdpbjogMCAtM3JlbTtcclxuICAgIG92ZXJmbG93LXk6IG92ZXJsYXk7XHJcblxyXG4gICAgLnNpZGViYXItYWNjb3VudCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDJyZW0gM3JlbTtcclxuXHJcbiAgICAgIC5zaWRlYmFyLWFjY291bnQtcm93IHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cclxuICAgICAgICAmLmFjY291bnQtdGl0bGUtYmFsYW5jZSB7XHJcbiAgICAgICAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG5cclxuICAgICAgICAgIC50aXRsZSB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuYmFsYW5jZSB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS44cmVtO1xyXG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5hY2NvdW50LWFsaWFzIHtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDMuNHJlbTtcclxuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuN3JlbTtcclxuXHJcbiAgICAgICAgICAubmFtZSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAxO1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS42cmVtO1xyXG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xyXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAgICAgICAgICAgc3BhbiB7XHJcbiAgICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLnByaWNlIHtcclxuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLmljb24ge1xyXG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMC41cmVtO1xyXG4gICAgICAgICAgICB3aWR0aDogMS4ycmVtO1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDEuMnJlbTtcclxuXHJcbiAgICAgICAgICAgICYuY29tbWVudCB7XHJcbiAgICAgICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9hbGVydC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuYWNjb3VudC1zdGFraW5nIHtcclxuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyLjlyZW07XHJcblxyXG4gICAgICAgICAgLnRleHQge1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuYWNjb3VudC1tZXNzYWdlcyB7XHJcbiAgICAgICAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG5cclxuICAgICAgICAgIC50ZXh0IHtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLmluZGljYXRvciB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDFyZW07XHJcbiAgICAgICAgICAgIG1pbi13aWR0aDogMi40cmVtO1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDEuNnJlbTtcclxuICAgICAgICAgICAgcGFkZGluZzogMCAwLjVyZW07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcclxuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAgICBoZWlnaHQ6IDUuNnJlbTtcclxuXHJcbiAgICAgICAgICAuc3RhdHVzIHtcclxuICAgICAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyLjZyZW07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICBtYXJnaW46IDAuNHJlbSAwO1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDAuN3JlbTtcclxuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICAgICAgICAgICAucHJvZ3Jlc3MtYmFyIHtcclxuICAgICAgICAgICAgICBmbGV4OiAxIDAgYXV0bztcclxuXHJcbiAgICAgICAgICAgICAgLmZpbGwge1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLnByb2dyZXNzLXBlcmNlbnQge1xyXG4gICAgICAgICAgICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAwLjdyZW07XHJcbiAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjdyZW07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6Zm9jdXMge1xyXG4gICAgICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICY6YWZ0ZXIge1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICBsZWZ0OiAtM3JlbTtcclxuICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA2cmVtKTtcclxuICAgIGhlaWdodDogNXJlbTtcclxuICB9XHJcbn1cclxuXHJcbi5zaWRlYmFyLXNldHRpbmdzIHtcclxuICBmbGV4OiAwIDAgYXV0bztcclxuICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcclxuXHJcbiAgLndyYXAtYnV0dG9uIHtcclxuICAgIG1hcmdpbjogMCAtM3JlbTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgICBsaW5lLWhlaWdodDogM3JlbTtcclxuICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgICAgcGFkZGluZzogMCAzcmVtO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgIC5pY29uIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEuMnJlbTtcclxuICAgICAgICB3aWR0aDogMS43cmVtO1xyXG4gICAgICAgIGhlaWdodDogMS43cmVtO1xyXG5cclxuICAgICAgICAmLnNldHRpbmdzIHtcclxuICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvc2V0dGluZ3Muc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5sb2dvdXQge1xyXG4gICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9sb2dvdXQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICBmbGV4OiAwIDAgN3JlbTtcclxuICBmb250LXNpemU6IDEuM3JlbTtcclxuXHJcbiAgLnN0YXR1cy1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuXHJcbiAgICAub2ZmbGluZSwgLm9ubGluZSB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjJyZW07XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMi4ycmVtO1xyXG5cclxuICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB0b3A6IDA7XHJcbiAgICAgICAgbGVmdDogMDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgICAgd2lkdGg6IDEuMnJlbTtcclxuICAgICAgICBoZWlnaHQ6IDEuMnJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5zeW5jaW5nLCAubG9hZGluZyB7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiA0cmVtO1xyXG4gICAgfVxyXG5cclxuICAgIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IDA7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIGhlaWdodDogMC43cmVtO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgIC5zeW5jaW5nIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG5cclxuICAgICAgICAucHJvZ3Jlc3MtYmFyIHtcclxuICAgICAgICAgIGZsZXg6IDEgMCBhdXRvO1xyXG5cclxuICAgICAgICAgIC5maWxsIHtcclxuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnByb2dyZXNzLXBlcmNlbnQge1xyXG4gICAgICAgICAgZmxleDogMCAwIGF1dG87XHJcbiAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAwLjdyZW07XHJcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuN3JlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5sb2FkaW5nIHtcclxuICAgICAgICBhbmltYXRpb246IG1vdmUgNXMgbGluZWFyIGluZmluaXRlO1xyXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6XHJcbiAgICAgICAgICAtd2Via2l0LWdyYWRpZW50KFxyXG4gICAgICAgICAgICAgIGxpbmVhciwgMCAwLCAxMDAlIDEwMCUsXHJcbiAgICAgICAgICAgICAgY29sb3Itc3RvcCguMTI1LCByZ2JhKDAsIDAsIDAsIC4xNSkpLCBjb2xvci1zdG9wKC4xMjUsIHRyYW5zcGFyZW50KSxcclxuICAgICAgICAgICAgICBjb2xvci1zdG9wKC4yNTAsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCguMjUwLCByZ2JhKDAsIDAsIDAsIC4xMCkpLFxyXG4gICAgICAgICAgICAgIGNvbG9yLXN0b3AoLjM3NSwgcmdiYSgwLCAwLCAwLCAuMTApKSwgY29sb3Itc3RvcCguMzc1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgICAgY29sb3Itc3RvcCguNTAwLCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoLjUwMCwgcmdiYSgwLCAwLCAwLCAuMTUpKSxcclxuICAgICAgICAgICAgICBjb2xvci1zdG9wKC42MjUsIHJnYmEoMCwgMCwgMCwgLjE1KSksIGNvbG9yLXN0b3AoLjYyNSwgdHJhbnNwYXJlbnQpLFxyXG4gICAgICAgICAgICAgIGNvbG9yLXN0b3AoLjc1MCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC43NTAsIHJnYmEoMCwgMCwgMCwgLjEwKSksXHJcbiAgICAgICAgICAgICAgY29sb3Itc3RvcCguODc1LCByZ2JhKDAsIDAsIDAsIC4xMCkpLCBjb2xvci1zdG9wKC44NzUsIHRyYW5zcGFyZW50KSxcclxuICAgICAgICAgICAgICB0byh0cmFuc3BhcmVudClcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICAtd2Via2l0LWdyYWRpZW50KFxyXG4gICAgICAgICAgICAgIGxpbmVhciwgMCAxMDAlLCAxMDAlIDAsXHJcbiAgICAgICAgICAgICAgY29sb3Itc3RvcCguMTI1LCByZ2JhKDAsIDAsIDAsIC4zMCkpLCBjb2xvci1zdG9wKC4xMjUsIHRyYW5zcGFyZW50KSxcclxuICAgICAgICAgICAgICBjb2xvci1zdG9wKC4yNTAsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCguMjUwLCByZ2JhKDAsIDAsIDAsIC4yNSkpLFxyXG4gICAgICAgICAgICAgIGNvbG9yLXN0b3AoLjM3NSwgcmdiYSgwLCAwLCAwLCAuMjUpKSwgY29sb3Itc3RvcCguMzc1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgICAgY29sb3Itc3RvcCguNTAwLCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoLjUwMCwgcmdiYSgwLCAwLCAwLCAuMzApKSxcclxuICAgICAgICAgICAgICBjb2xvci1zdG9wKC42MjUsIHJnYmEoMCwgMCwgMCwgLjMwKSksIGNvbG9yLXN0b3AoLjYyNSwgdHJhbnNwYXJlbnQpLFxyXG4gICAgICAgICAgICAgIGNvbG9yLXN0b3AoLjc1MCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC43NTAsIHJnYmEoMCwgMCwgMCwgLjI1KSksXHJcbiAgICAgICAgICAgICAgY29sb3Itc3RvcCguODc1LCByZ2JhKDAsIDAsIDAsIC4yNSkpLCBjb2xvci1zdG9wKC44NzUsIHRyYW5zcGFyZW50KSxcclxuICAgICAgICAgICAgICB0byh0cmFuc3BhcmVudClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiA3cmVtIDdyZW07XHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudXBkYXRlLWNvbnRhaW5lciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07XHJcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuXHJcbiAgICAudXBkYXRlLXRleHQge1xyXG4gICAgICBmbGV4OiAxIDEgYXV0bztcclxuICAgICAgZm9udC1zaXplOiAxLjJyZW07XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjhyZW07XHJcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcblxyXG4gICAgICAmLnRpbWUge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBmbGV4OiAxIDAgYXV0bztcclxuICAgICAgbWFyZ2luOiAwLjNyZW0gMCAwIDAuNnJlbTtcclxuICAgICAgd2lkdGg6IDEuMnJlbTtcclxuICAgICAgaGVpZ2h0OiAxLjJyZW07XHJcblxyXG4gICAgICAmLnVwZGF0ZSB7XHJcbiAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy91cGRhdGUuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnRpbWUge1xyXG4gICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvdGltZS5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgbW92ZSB7XHJcbiAgMCUge1xyXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAtN3JlbTtcclxuICB9XHJcbiAgMTAwJSB7XHJcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDdyZW07XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnInit, OnDestroy} from '@angular/core';\r\nimport {ActivatedRoute, NavigationStart, Router} from '@angular/router';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\n\r\n@Component({\r\n selector: 'app-sidebar',\r\n templateUrl: './sidebar.component.html',\r\n styleUrls: ['./sidebar.component.scss']\r\n})\r\nexport class SidebarComponent implements OnInit, OnDestroy {\r\n walletSubRouting;\r\n\r\n walletActive: number;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n public variablesService: VariablesService,\r\n private backend: BackendService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n if (this.router.url.indexOf('/wallet/') !== -1) {\r\n const localPathArr = this.router.url.split('/');\r\n if (localPathArr.length >= 3) {\r\n this.walletActive = parseInt(localPathArr[2], 10);\r\n }\r\n } else if (this.router.url.indexOf('/details') !== -1) {\r\n this.walletActive = this.variablesService.currentWallet.wallet_id;\r\n } else {\r\n this.walletActive = null;\r\n }\r\n\r\n this.walletSubRouting = this.router.events.subscribe((event) => {\r\n if (event instanceof NavigationStart) {\r\n if (event.url.indexOf('/wallet/') !== -1) {\r\n const localPathArr = event.url.split('/');\r\n if (localPathArr.length >= 3) {\r\n this.walletActive = parseInt(localPathArr[2], 10);\r\n }\r\n } else if (event.url.indexOf('/details') !== -1) {\r\n this.walletActive = this.variablesService.currentWallet.wallet_id;\r\n } else {\r\n this.walletActive = null;\r\n }\r\n }\r\n });\r\n }\r\n\r\n getUpdate() {\r\n this.backend.openUrlInBrowser('zano.org/downloads.html');\r\n }\r\n\r\n logOut() {\r\n this.variablesService.stopCountdown();\r\n this.variablesService.appLogin = false;\r\n this.variablesService.appPass = '';\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/login'], {queryParams: {type: 'auth'}});\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.walletSubRouting.unsubscribe();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n {{ 'STAKING.TITLE' | translate }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'STAKING.TITLE_PENDING' | translate }}\\r\\n {{pending.total | intToMoney}} {{variablesService.defaultCurrency}}\\r\\n
\\r\\n
\\r\\n {{ 'STAKING.TITLE_TOTAL' | translate }}\\r\\n {{total | intToMoney}} {{variablesService.defaultCurrency}}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{selectedDate.date | date : 'MMM. EEEE, dd, yyyy'}}\\r\\n {{selectedDate.amount}} {{variablesService.defaultCurrency}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'STAKING.TITLE_PERIOD' | translate }}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ 'STAKING.TITLE_GROUP' | translate }}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n width: 100%; }\\n\\n.chart-header {\\n display: flex;\\n flex: 0 0 auto; }\\n\\n.chart-header .general {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n justify-content: center;\\n flex-grow: 1;\\n font-size: 1.3rem;\\n margin: -0.5rem 0; }\\n\\n.chart-header .general > div {\\n display: flex;\\n align-items: center;\\n margin: 0.5rem 0;\\n height: 2rem; }\\n\\n.chart-header .general > div .label {\\n display: inline-block;\\n width: 9rem; }\\n\\n.chart-header .selected {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-end;\\n justify-content: center;\\n flex-grow: 1;\\n font-size: 1.8rem; }\\n\\n.chart-header .selected span {\\n line-height: 2.9rem; }\\n\\n.chart {\\n position: relative;\\n display: flex;\\n align-items: center;\\n flex: 1 1 auto;\\n min-height: 40rem; }\\n\\n.chart > div {\\n position: absolute;\\n width: 100%;\\n height: 100%; }\\n\\n.chart-options {\\n display: flex;\\n align-items: center;\\n height: 2.4rem;\\n flex: 0 0 auto; }\\n\\n.chart-options .title {\\n font-size: 1.3rem;\\n padding: 0 1rem; }\\n\\n.chart-options .title:first-child {\\n padding-left: 0; }\\n\\n.chart-options .options {\\n display: flex;\\n justify-content: space-between;\\n flex-grow: 1;\\n height: 100%; }\\n\\n.chart-options .options button {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex: 1 1 auto;\\n cursor: pointer;\\n font-size: 1.3rem;\\n margin: 0 0.1rem;\\n padding: 0;\\n height: 100%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc3Rha2luZy9FOlxcWmFub1xcY2hlY2tcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxzdGFraW5nXFxzdGFraW5nLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxhQUFhO0VBQ2IsY0FBYyxFQUFBOztBQUZoQjtJQUtJLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsdUJBQXVCO0lBQ3ZCLHVCQUF1QjtJQUN2QixZQUFZO0lBQ1osaUJBQWlCO0lBQ2pCLGlCQUFpQixFQUFBOztBQVhyQjtNQWNNLGFBQWE7TUFDYixtQkFBbUI7TUFDbkIsZ0JBQWdCO01BQ2hCLFlBQVksRUFBQTs7QUFqQmxCO1FBb0JRLHFCQUFxQjtRQUNyQixXQUFXLEVBQUE7O0FBckJuQjtJQTJCSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLHFCQUFxQjtJQUNyQix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGlCQUFpQixFQUFBOztBQWhDckI7TUFtQ00sbUJBQW1CLEVBQUE7O0FBS3pCO0VBQ0Usa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsY0FBYztFQUNkLGlCQUFpQixFQUFBOztBQUxuQjtJQVFJLGtCQUFrQjtJQUNsQixXQUFXO0lBQ1gsWUFBWSxFQUFBOztBQUloQjtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsY0FBYztFQUNkLGNBQWMsRUFBQTs7QUFKaEI7SUFPSSxpQkFBaUI7SUFDakIsZUFBZSxFQUFBOztBQVJuQjtNQVdNLGVBQWUsRUFBQTs7QUFYckI7SUFnQkksYUFBYTtJQUNiLDhCQUE4QjtJQUM5QixZQUFZO0lBQ1osWUFBWSxFQUFBOztBQW5CaEI7TUFzQk0sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsY0FBYztNQUNkLGVBQWU7TUFDZixpQkFBaUI7TUFDakIsZ0JBQWdCO01BQ2hCLFVBQVU7TUFDVixZQUFZLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zdGFraW5nL3N0YWtpbmcuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uY2hhcnQtaGVhZGVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG5cclxuICAuZ2VuZXJhbCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbjogLTAuNXJlbSAwO1xyXG5cclxuICAgID4gZGl2IHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgbWFyZ2luOiAwLjVyZW0gMDtcclxuICAgICAgaGVpZ2h0OiAycmVtO1xyXG5cclxuICAgICAgLmxhYmVsIHtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgd2lkdGg6IDlyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zZWxlY3RlZCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gICAgZm9udC1zaXplOiAxLjhyZW07XHJcblxyXG4gICAgc3BhbiB7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjlyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uY2hhcnQge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZmxleDogMSAxIGF1dG87XHJcbiAgbWluLWhlaWdodDogNDByZW07XHJcblxyXG4gID4gZGl2IHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gIH1cclxufVxyXG5cclxuLmNoYXJ0LW9wdGlvbnMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBoZWlnaHQ6IDIuNHJlbTtcclxuICBmbGV4OiAwIDAgYXV0bztcclxuXHJcbiAgLnRpdGxlIHtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgcGFkZGluZzogMCAxcmVtO1xyXG5cclxuICAgICY6Zmlyc3QtY2hpbGR7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5vcHRpb25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICBtYXJnaW46IDAgMC4xcmVtO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnInit, OnDestroy} from '@angular/core';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {Chart} from 'angular-highcharts';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport {IntToMoneyPipe} from '../_helpers/pipes/int-to-money.pipe';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Component({\r\n selector: 'app-staking',\r\n templateUrl: './staking.component.html',\r\n styleUrls: ['./staking.component.scss']\r\n})\r\nexport class StakingComponent implements OnInit, OnDestroy {\r\n\r\n parentRouting;\r\n heightAppEvent;\r\n refreshStackingEvent;\r\n\r\n periods = [\r\n {\r\n title: this.translate.instant('STAKING.PERIOD.WEEK1'),\r\n key: '1 week',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.PERIOD.WEEK2'),\r\n key: '2 week',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.PERIOD.MONTH1'),\r\n key: '1 month',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.PERIOD.MONTH3'),\r\n key: '3 month',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.PERIOD.MONTH6'),\r\n key: '6 month',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.PERIOD.YEAR'),\r\n key: '1 year',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.PERIOD.ALL'),\r\n key: 'All',\r\n active: true\r\n }\r\n ];\r\n\r\n groups = [\r\n {\r\n title: this.translate.instant('STAKING.GROUP.DAY'),\r\n key: 'day',\r\n active: true\r\n },\r\n {\r\n title: this.translate.instant('STAKING.GROUP.WEEK'),\r\n key: 'week',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.GROUP.MONTH'),\r\n key: 'month',\r\n active: false\r\n }\r\n ];\r\n\r\n selectedDate = {\r\n date: null,\r\n amount: null\r\n };\r\n\r\n originalData = [];\r\n\r\n chart: Chart;\r\n\r\n total = new BigNumber(0);\r\n pending = {\r\n list: [],\r\n total: new BigNumber(0)\r\n };\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private variablesService: VariablesService,\r\n private backend: BackendService,\r\n private ngZone: NgZone,\r\n private intToMoneyPipe: IntToMoneyPipe,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n static makeGroupTime(key, date) {\r\n if (key === 'day') {\r\n return date.setHours(0, 0, 0, 0);\r\n } else if (key === 'week') {\r\n return new Date(date.setDate(date.getDate() - date.getDay())).setHours(0, 0, 0, 0);\r\n } else {\r\n return new Date(date.setDate(1)).setHours(0, 0, 0, 0);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(() => {\r\n this.getMiningHistory();\r\n });\r\n this.heightAppEvent = this.variablesService.getHeightAppEvent.subscribe((newHeight: number) => {\r\n if (!this.pending.total.isZero()) {\r\n const pendingCount = this.pending.list.length;\r\n for (let i = pendingCount - 1; i >= 0; i--) {\r\n if (newHeight - this.pending.list[i].h >= 10) {\r\n this.pending.list.splice(i, 1);\r\n }\r\n }\r\n if (pendingCount !== this.pending.list.length) {\r\n this.pending.total = new BigNumber(0);\r\n for (let i = 0; i < this.pending.list.length; i++) {\r\n this.pending.total = this.pending.total.plus(this.pending.list[i].a);\r\n }\r\n }\r\n }\r\n });\r\n this.refreshStackingEvent = this.variablesService.getRefreshStackingEvent.subscribe((wallet_id: number) => {\r\n if (this.variablesService.currentWallet.wallet_id === wallet_id) {\r\n this.getMiningHistory();\r\n }\r\n });\r\n }\r\n\r\n\r\n drawChart(data) {\r\n this.chart = new Chart({\r\n title: {text: ''},\r\n credits: {enabled: false},\r\n exporting: {enabled: false},\r\n legend: {enabled: false},\r\n chart: {\r\n type: 'line',\r\n backgroundColor: 'transparent',\r\n height: null,\r\n zoomType: null,\r\n events: {\r\n load: () => {\r\n this.changePeriod();\r\n }\r\n }\r\n },\r\n\r\n yAxis: {\r\n min: 0,\r\n tickAmount: 5,\r\n title: {\r\n text: ''\r\n },\r\n gridLineColor: '#2b3644',\r\n gridLineWidth: 2,\r\n lineColor: '#2b3644',\r\n lineWidth: 2,\r\n tickWidth: 2,\r\n tickLength: 120,\r\n tickColor: '#2b3644',\r\n labels: {\r\n y: -8,\r\n align: 'left',\r\n x: -120,\r\n style: {\r\n 'color': '#e0e0e0',\r\n 'fontSize': '13px'\r\n },\r\n format: '{value} ' + this.variablesService.defaultCurrency\r\n },\r\n showLastLabel: false,\r\n },\r\n\r\n xAxis: {\r\n type: 'datetime',\r\n gridLineColor: '#2b3644',\r\n lineColor: '#2b3644',\r\n lineWidth: 2,\r\n tickWidth: 2,\r\n tickLength: 10,\r\n tickColor: '#2b3644',\r\n labels: {\r\n style: {\r\n 'color': '#e0e0e0',\r\n 'fontSize': '13px'\r\n }\r\n },\r\n minPadding: 0,\r\n maxPadding: 0,\r\n minRange: 86400000,\r\n // tickInterval: 86400000,\r\n minTickInterval: 3600000,\r\n },\r\n\r\n tooltip: {\r\n enabled: false\r\n },\r\n\r\n plotOptions: {\r\n area: {\r\n fillColor: {\r\n linearGradient: {\r\n x1: 0,\r\n y1: 0,\r\n x2: 0,\r\n y2: 1\r\n },\r\n stops: [\r\n [0, 'rgba(124,181,236,0.2)'],\r\n [1, 'rgba(124,181,236,0)']\r\n ]\r\n },\r\n marker: {\r\n enabled: false,\r\n radius: 2\r\n },\r\n lineWidth: 2,\r\n threshold: null\r\n },\r\n\r\n series: {\r\n point: {\r\n events: {\r\n mouseOver: (obj) => {\r\n this.selectedDate.date = obj.target['x'];\r\n this.selectedDate.amount = obj.target['y'];\r\n }\r\n }\r\n },\r\n events: {\r\n mouseOut: () => {\r\n this.selectedDate.date = null;\r\n this.selectedDate.amount = null;\r\n }\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: 'area',\r\n data: data\r\n }\r\n ]\r\n });\r\n }\r\n\r\n\r\n getMiningHistory() {\r\n if (this.variablesService.currentWallet.loaded) {\r\n this.backend.getMiningHistory(this.variablesService.currentWallet.wallet_id, (status, data) => {\r\n this.total = new BigNumber(0);\r\n this.pending.list = [];\r\n this.pending.total = new BigNumber(0);\r\n this.originalData = [];\r\n if (data.mined_entries) {\r\n data.mined_entries.forEach((item, key) => {\r\n if (item.t.toString().length === 10) {\r\n data.mined_entries[key].t = (new Date(item.t * 1000)).setUTCMilliseconds(0);\r\n }\r\n });\r\n data.mined_entries.forEach((item) => {\r\n this.total = this.total.plus(item.a);\r\n if (this.variablesService.height_app - item.h < 10) {\r\n this.pending.list.push(item);\r\n this.pending.total = this.pending.total.plus(item.a);\r\n }\r\n this.originalData.push([parseInt(item.t, 10), parseFloat(this.intToMoneyPipe.transform(item.a))]);\r\n });\r\n this.originalData = this.originalData.sort(function (a, b) {\r\n return a[0] - b[0];\r\n });\r\n }\r\n this.ngZone.run(() => {\r\n this.drawChart([]);\r\n });\r\n });\r\n }\r\n }\r\n\r\n changePeriod(period?) {\r\n if (period) {\r\n this.periods.forEach((p) => {\r\n p.active = false;\r\n });\r\n period.active = true;\r\n } else {\r\n period = this.periods.find((p) => p.active);\r\n }\r\n\r\n const d = new Date();\r\n let min = null;\r\n const newData = [];\r\n\r\n const group = this.groups.find((g) => g.active);\r\n\r\n if (period.key === '1 week') {\r\n this.originalData.forEach((item) => {\r\n const time = StakingComponent.makeGroupTime(group.key, new Date(item[0]));\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear(), d.getMonth(), d.getDate() - 7, 0, 0, 0, 0);\r\n } else if (period.key === '2 week') {\r\n this.originalData.forEach((item) => {\r\n const time = StakingComponent.makeGroupTime(group.key, new Date(item[0]));\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear(), d.getMonth(), d.getDate() - 14, 0, 0, 0, 0);\r\n } else if (period.key === '1 month') {\r\n this.originalData.forEach((item) => {\r\n const time = StakingComponent.makeGroupTime(group.key, new Date(item[0]));\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear(), d.getMonth() - 1, d.getDate(), 0, 0, 0, 0);\r\n } else if (period.key === '3 month') {\r\n this.originalData.forEach((item) => {\r\n const time = StakingComponent.makeGroupTime(group.key, new Date(item[0]));\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear(), d.getMonth() - 3, d.getDate(), 0, 0, 0, 0);\r\n } else if (period.key === '6 month') {\r\n this.originalData.forEach((item) => {\r\n const time = StakingComponent.makeGroupTime(group.key, new Date(item[0]));\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear(), d.getMonth() - 6, d.getDate(), 0, 0, 0, 0);\r\n } else if (period.key === '1 year') {\r\n this.originalData.forEach((item) => {\r\n const time = StakingComponent.makeGroupTime(group.key, new Date(item[0]));\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear() - 1, d.getMonth(), d.getDate(), 0, 0, 0, 0);\r\n } else {\r\n this.originalData.forEach((item) => {\r\n const time = StakingComponent.makeGroupTime(group.key, new Date(item[0]));\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n }\r\n\r\n this.chart.ref.xAxis[0].setExtremes(min, null);\r\n }\r\n\r\n changeGroup(group) {\r\n this.groups.forEach((g) => {\r\n g.active = false;\r\n });\r\n group.active = true;\r\n this.changePeriod();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n this.heightAppEvent.unsubscribe();\r\n this.refreshStackingEvent.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ wallet.name }}\\r\\n {{ 'BREADCRUMBS.TRANSFER_ALIAS' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
0 && (transferAddressAlias || !transferAddressValid || (transferAddressValid && !permissionSend) || notEnoughMoney)\\\">\\r\\n
\\r\\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.WRONG_ADDRESS' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.ALIAS_EXISTS' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
{{ \\\"TRANSFER_ALIAS.COST\\\" | translate : {value: variablesService.default_fee, currency: variablesService.defaultCurrency} }}
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \".form-transfer {\\n margin: 2.4rem 0; }\\n .form-transfer .alias-name {\\n width: 50%; }\\n .form-transfer .alias-cost {\\n font-size: 1.3rem;\\n margin-top: 2rem; }\\n .form-transfer .wrap-buttons {\\n display: flex;\\n justify-content: space-between;\\n margin: 2.5rem -0.7rem; }\\n .form-transfer .wrap-buttons button {\\n margin: 0 0.7rem;\\n width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdHJhbnNmZXItYWxpYXMvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcdHJhbnNmZXItYWxpYXNcXHRyYW5zZmVyLWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQSIsImZpbGUiOiJzcmMvYXBwL3RyYW5zZmVyLWFsaWFzL3RyYW5zZmVyLWFsaWFzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmZvcm0tdHJhbnNmZXIge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcblxyXG4gIC5hbGlhcy1uYW1lIHtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgfVxyXG5cclxuICAuYWxpYXMtY29zdCB7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbi10b3A6IDJyZW07XHJcbiAgfVxyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcbiAgICAgIHdpZHRoOiAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {Location} from '@angular/common';\r\nimport {Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\n\r\n@Component({\r\n selector: 'app-transfer-alias',\r\n templateUrl: './transfer-alias.component.html',\r\n styleUrls: ['./transfer-alias.component.scss']\r\n})\r\nexport class TransferAliasComponent implements OnInit {\r\n\r\n wallet: Wallet;\r\n alias: any;\r\n transferAddress = '';\r\n transferAddressValid: boolean;\r\n transferAddressAlias: boolean;\r\n permissionSend: boolean;\r\n notEnoughMoney: boolean;\r\n requestProcessing = false;\r\n\r\n constructor(\r\n private location: Location,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.wallet = this.variablesService.currentWallet;\r\n const alias = this.backend.getWalletAlias(this.wallet.address);\r\n this.alias = {\r\n name: alias.name,\r\n address: alias.address,\r\n comment: alias.comment,\r\n tracking_key: alias.tracking_key\r\n };\r\n this.notEnoughMoney = this.wallet.unlocked_balance.isLessThan(this.variablesService.default_fee_big);\r\n }\r\n\r\n changeAddress() {\r\n this.backend.validateAddress(this.transferAddress, status => {\r\n this.transferAddressValid = status;\r\n if (status) {\r\n this.backend.getPoolInfo((statusPool, dataPool) => {\r\n if (dataPool.hasOwnProperty('aliases_que') && dataPool.aliases_que.length) {\r\n this.setStatus(!dataPool.aliases_que.some((el) => el.address === this.transferAddress));\r\n } else {\r\n this.setStatus(status);\r\n }\r\n });\r\n } else {\r\n this.setStatus(false);\r\n }\r\n });\r\n }\r\n\r\n setStatus(statusSet) {\r\n this.permissionSend = statusSet;\r\n if (statusSet) {\r\n this.backend.getAliasByAddress(this.transferAddress, (status) => {\r\n this.ngZone.run(() => {\r\n if (status) {\r\n this.transferAddressAlias = true;\r\n this.permissionSend = false;\r\n } else {\r\n this.transferAddressAlias = false;\r\n }\r\n });\r\n });\r\n } else {\r\n this.ngZone.run(() => {\r\n this.transferAddressAlias = false;\r\n });\r\n }\r\n }\r\n\r\n transferAlias() {\r\n if (this.requestProcessing || !this.permissionSend || !this.transferAddressValid || this.notEnoughMoney) {\r\n return;\r\n }\r\n this.requestProcessing = true;\r\n const newAlias = {\r\n name: this.alias.name,\r\n address: this.transferAddress,\r\n comment: this.alias.comment,\r\n tracking_key: this.alias.tracking_key\r\n };\r\n this.backend.updateAlias(this.wallet.wallet_id, newAlias, this.variablesService.default_fee, (status, data) => {\r\n if (status && data.hasOwnProperty('success') && data.success) {\r\n this.modalService.prepareModal('info', 'TRANSFER_ALIAS.REQUEST_SEND_REG');\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.wallet.wallet_id]);\r\n });\r\n }\r\n this.requestProcessing = false;\r\n });\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n @bitmain\\r\\n
\\r\\n \\r\\n \\r\\n {{ 'COMMON.BACK' | translate }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
10:39
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
11:44
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
12:15
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
13:13
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n width: 100%; }\\n\\n.head {\\n flex: 0 0 auto;\\n box-sizing: content-box;\\n margin: -3rem -3rem 0; }\\n\\n.messages-content {\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n flex-grow: 1; }\\n\\n.messages-content .messages-list {\\n display: flex;\\n flex-direction: column;\\n font-size: 1.3rem;\\n margin: 1rem -3rem;\\n padding: 0 3rem;\\n overflow-y: overlay; }\\n\\n.messages-content .messages-list div {\\n margin: 0.7rem 0; }\\n\\n.messages-content .messages-list div.date {\\n text-align: center; }\\n\\n.messages-content .messages-list div.my, .messages-content .messages-list div.buddy {\\n position: relative;\\n padding: 1.8rem;\\n max-width: 60%; }\\n\\n.messages-content .messages-list div.buddy {\\n align-self: flex-end; }\\n\\n.messages-content .type-message {\\n display: flex;\\n flex: 0 0 auto;\\n width: 100%;\\n height: 4.2rem; }\\n\\n.messages-content .type-message .input-block {\\n width: 100%; }\\n\\n.messages-content .type-message .input-block > textarea {\\n min-height: 4.2rem; }\\n\\n.messages-content .type-message button {\\n flex: 0 0 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdHlwaW5nLW1lc3NhZ2UvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcdHlwaW5nLW1lc3NhZ2VcXHR5cGluZy1tZXNzYWdlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxjQUFjO0VBQ2QsdUJBQXVCO0VBQ3ZCLHFCQUFxQixFQUFBOztBQUd2QjtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsOEJBQThCO0VBQzlCLFlBQVksRUFBQTs7QUFKZDtJQU9JLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixlQUFlO0lBQ2YsbUJBQW1CLEVBQUE7O0FBWnZCO01BZU0sZ0JBQWdCLEVBQUE7O0FBZnRCO1FBa0JRLGtCQUFrQixFQUFBOztBQWxCMUI7UUFzQlEsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixjQUFjLEVBQUE7O0FBeEJ0QjtRQTRCUSxvQkFBb0IsRUFBQTs7QUE1QjVCO0lBa0NJLGFBQWE7SUFDYixjQUFjO0lBQ2QsV0FBVztJQUNYLGNBQWMsRUFBQTs7QUFyQ2xCO01Bd0NNLFdBQVcsRUFBQTs7QUF4Q2pCO1FBMkNRLGtCQUFrQixFQUFBOztBQTNDMUI7TUFnRE0sZUFBZSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvdHlwaW5nLW1lc3NhZ2UvdHlwaW5nLW1lc3NhZ2UuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uaGVhZCB7XHJcbiAgZmxleDogMCAwIGF1dG87XHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XHJcbiAgbWFyZ2luOiAtM3JlbSAtM3JlbSAwO1xyXG59XHJcblxyXG4ubWVzc2FnZXMtY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBmbGV4LWdyb3c6IDE7XHJcblxyXG4gIC5tZXNzYWdlcy1saXN0IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBtYXJnaW46IDFyZW0gLTNyZW07XHJcbiAgICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgICBvdmVyZmxvdy15OiBvdmVybGF5O1xyXG5cclxuICAgIGRpdiB7XHJcbiAgICAgIG1hcmdpbjogMC43cmVtIDA7XHJcblxyXG4gICAgICAmLmRhdGUge1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5teSwgJi5idWRkeSB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIHBhZGRpbmc6IDEuOHJlbTtcclxuICAgICAgICBtYXgtd2lkdGg6IDYwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5idWRkeSB7XHJcbiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC50eXBlLW1lc3NhZ2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDQuMnJlbTtcclxuXHJcbiAgICAuaW5wdXQtYmxvY2sge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgID4gdGV4dGFyZWEge1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IDQuMnJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIGZsZXg6IDAgMCAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiJdfQ== */\"","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-typing-message',\r\n templateUrl: './typing-message.component.html',\r\n styleUrls: ['./typing-message.component.scss']\r\n})\r\nexport class TypingMessageComponent implements OnInit {\r\n\r\n messagesId: number;\r\n private subMessages: any;\r\n\r\n constructor(private route: ActivatedRoute) {\r\n this.route.params.subscribe( params => console.log(params) );\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{variablesService.currentWallet.name}}\\r\\n {{ 'BREADCRUMBS.WALLET_DETAILS' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'WALLET_DETAILS.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'WALLET_DETAILS.FORM_ERRORS.NAME_DUPLICATE' | translate }}\\r\\n
\\r\\n
\\r\\n
= variablesService.maxWalletNameLength\\\">\\r\\n {{ 'WALLET_DETAILS.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
{{ 'WALLET_DETAILS.SEED_PHRASE_HINT' | translate }}
\\r\\n
\\r\\n \\r\\n
{{(index + 1) + '. ' + word}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \".form-details {\\n margin-top: 1.8rem; }\\n .form-details .input-block:first-child {\\n width: 50%; }\\n .form-details .seed-phrase {\\n display: flex;\\n font-size: 1.4rem;\\n line-height: 1.5rem;\\n padding: 1.4rem;\\n width: 100%;\\n height: 8.8rem; }\\n .form-details .seed-phrase .seed-phrase-hint {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n cursor: pointer;\\n width: 100%;\\n height: 100%; }\\n .form-details .seed-phrase .seed-phrase-content {\\n display: flex;\\n flex-direction: column;\\n flex-wrap: wrap;\\n width: 100%;\\n height: 100%; }\\n .form-details .wallet-buttons {\\n display: flex;\\n align-items: center;\\n justify-content: space-between; }\\n .form-details .wallet-buttons button {\\n margin: 2.9rem 0;\\n width: 100%;\\n max-width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvd2FsbGV0LWRldGFpbHMvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcd2FsbGV0LWRldGFpbHNcXHdhbGxldC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7RUFEcEI7SUFNTSxVQUFVLEVBQUE7RUFOaEI7SUFXSSxhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsV0FBVztJQUNYLGNBQWMsRUFBQTtFQWhCbEI7TUFtQk0sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsZUFBZTtNQUNmLFdBQVc7TUFDWCxZQUFZLEVBQUE7RUF4QmxCO01BNEJNLGFBQWE7TUFDYixzQkFBc0I7TUFDdEIsZUFBZTtNQUNmLFdBQVc7TUFDWCxZQUFZLEVBQUE7RUFoQ2xCO0lBcUNJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsOEJBQThCLEVBQUE7RUF2Q2xDO01BMENNLGdCQUFnQjtNQUNoQixXQUFXO01BQ1gsZ0JBQWdCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC93YWxsZXQtZGV0YWlscy93YWxsZXQtZGV0YWlscy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWRldGFpbHMge1xyXG4gIG1hcmdpbi10b3A6IDEuOHJlbTtcclxuXHJcbiAgLmlucHV0LWJsb2NrIHtcclxuXHJcbiAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgd2lkdGg6IDUwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zZWVkLXBocmFzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZm9udC1zaXplOiAxLjRyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xyXG4gICAgcGFkZGluZzogMS40cmVtO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDguOHJlbTtcclxuXHJcbiAgICAuc2VlZC1waHJhc2UtaGludCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlZWQtcGhyYXNlLWNvbnRlbnQge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAud2FsbGV0LWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAyLjlyZW0gMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0= */\"","import {Component, NgZone, OnDestroy, OnInit} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {Router} from '@angular/router';\r\nimport {Location} from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-wallet-details',\r\n templateUrl: './wallet-details.component.html',\r\n styleUrls: ['./wallet-details.component.scss']\r\n})\r\nexport class WalletDetailsComponent implements OnInit, OnDestroy {\r\n seedPhrase = '';\r\n showSeed = false;\r\n\r\n detailsForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, (g: FormControl) => {\r\n for (let i = 0; i < this.variablesService.wallets.length; i++) {\r\n if (g.value === this.variablesService.wallets[i].name) {\r\n if (this.variablesService.wallets[i].wallet_id === this.variablesService.currentWallet.wallet_id) {\r\n return {'same': true};\r\n } else {\r\n return {'duplicate': true};\r\n }\r\n }\r\n }\r\n return null;\r\n }]),\r\n path: new FormControl('')\r\n });\r\n\r\n constructor(\r\n private router: Router,\r\n private backend: BackendService,\r\n public variablesService: VariablesService,\r\n private ngZone: NgZone,\r\n private location: Location\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.showSeed = false;\r\n this.detailsForm.get('name').setValue(this.variablesService.currentWallet.name);\r\n this.detailsForm.get('path').setValue(this.variablesService.currentWallet.path);\r\n this.backend.getSmartWalletInfo(this.variablesService.currentWallet.wallet_id, (status, data) => {\r\n if (data.hasOwnProperty('restore_key')) {\r\n this.ngZone.run(() => {\r\n this.seedPhrase = data['restore_key'].trim();\r\n });\r\n }\r\n });\r\n }\r\n\r\n showSeedPhrase() {\r\n this.showSeed = true;\r\n }\r\n\r\n onSubmitEdit() {\r\n if (this.detailsForm.value) {\r\n this.variablesService.currentWallet.name = this.detailsForm.get('name').value;\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.variablesService.currentWallet.wallet_id]);\r\n });\r\n }\r\n }\r\n\r\n closeWallet() {\r\n this.backend.closeWallet(this.variablesService.currentWallet.wallet_id, () => {\r\n for (let i = this.variablesService.wallets.length - 1; i >= 0; i--) {\r\n if (this.variablesService.wallets[i].wallet_id === this.variablesService.currentWallet.wallet_id) {\r\n this.variablesService.wallets.splice(i, 1);\r\n }\r\n }\r\n this.ngZone.run(() => {\r\n if (this.variablesService.wallets.length) {\r\n this.variablesService.currentWallet = this.variablesService.wallets[0];\r\n this.router.navigate(['/wallet/' + this.variablesService.currentWallet.wallet_id]);\r\n } else {\r\n this.router.navigate(['/']);\r\n }\r\n });\r\n if (this.variablesService.appPass) {\r\n this.backend.storeSecureAppData();\r\n }\r\n });\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n ngOnDestroy() {}\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n

{{variablesService.currentWallet.name}}

\\r\\n \\r\\n
\\r\\n {{variablesService.currentWallet.alias['name']}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{variablesService.currentWallet.address}}\\r\\n \\r\\n
\\r\\n
\\r\\n {{variablesService.currentWallet.balance | intToMoney : '3'}} {{variablesService.defaultCurrency}}\\r\\n $ {{variablesService.currentWallet.getMoneyEquivalent(variablesService.moneyEquivalent) | intToMoney | number : '1.2-2'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n {{ tab.title | translate }}\\r\\n {{variablesService.currentWallet.new_contracts}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\"","module.exports = \":host {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n padding: 0 3rem 3rem;\\n min-width: 95rem;\\n width: 100%;\\n height: 100%; }\\n\\n.header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n flex: 0 0 auto;\\n height: 8rem; }\\n\\n.header > div {\\n display: flex;\\n align-items: center; }\\n\\n.header > div :not(:last-child) {\\n margin-right: 3.2rem; }\\n\\n.header h3 {\\n font-size: 1.7rem;\\n font-weight: 600;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n max-width: 50rem;\\n line-height: 2.7rem; }\\n\\n.header button {\\n display: flex;\\n align-items: center;\\n background: transparent;\\n border: none;\\n cursor: pointer;\\n font-weight: 400;\\n outline: none;\\n padding: 0; }\\n\\n.header button .icon {\\n margin-right: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.header button .icon.account {\\n -webkit-mask: url('account.svg') no-repeat center;\\n mask: url('account.svg') no-repeat center; }\\n\\n.header button .icon.lock {\\n -webkit-mask: url('lock.svg') no-repeat center;\\n mask: url('lock.svg') no-repeat center; }\\n\\n.header button .icon.details {\\n -webkit-mask: url('details-settings.svg') no-repeat center;\\n mask: url('details-settings.svg') no-repeat center;\\n margin-right: 0; }\\n\\n.header button .icon.close-wallet {\\n -webkit-mask: url('close-wallet.svg') no-repeat center;\\n mask: url('close-wallet.svg') no-repeat center;\\n margin-right: 0; }\\n\\n.header .alias {\\n display: flex;\\n align-items: center;\\n font-size: 1.3rem; }\\n\\n.header .alias .icon {\\n cursor: pointer;\\n margin-right: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.header .alias .icon.edit {\\n -webkit-mask: url('details.svg') no-repeat center;\\n mask: url('details.svg') no-repeat center; }\\n\\n.header .alias .icon.transfer {\\n -webkit-mask: url('send.svg') no-repeat center;\\n mask: url('send.svg') no-repeat center; }\\n\\n.address {\\n display: flex;\\n align-items: center;\\n flex: 0 0 auto;\\n font-size: 1.4rem;\\n line-height: 1.7rem; }\\n\\n.address .icon {\\n cursor: pointer;\\n margin-left: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.address .icon.copy {\\n -webkit-mask: url('copy.svg') no-repeat center;\\n mask: url('copy.svg') no-repeat center; }\\n\\n.address .icon.copy:hover {\\n opacity: 0.75; }\\n\\n.address .icon.copied {\\n -webkit-mask: url('complete-testwallet.svg') no-repeat center;\\n mask: url('complete-testwallet.svg') no-repeat center; }\\n\\n.balance {\\n display: flex;\\n align-items: flex-end;\\n justify-content: flex-start;\\n flex: 0 0 auto;\\n margin: 2.6rem 0; }\\n\\n.balance :first-child {\\n font-size: 3.3rem;\\n font-weight: 600;\\n line-height: 2.4rem;\\n margin-right: 3.5rem; }\\n\\n.balance :last-child {\\n font-size: 1.8rem;\\n font-weight: 600;\\n line-height: 1.3rem; }\\n\\n.tabs {\\n display: flex;\\n flex-direction: column;\\n flex: 1 1 auto; }\\n\\n.tabs .tabs-header {\\n display: flex;\\n justify-content: space-between;\\n flex: 0 0 auto; }\\n\\n.tabs .tabs-header .tab {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex: 1 0 auto;\\n cursor: pointer;\\n padding: 0 1rem;\\n height: 5rem; }\\n\\n.tabs .tabs-header .tab .icon {\\n margin-right: 1.3rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.tabs .tabs-header .tab .icon.send {\\n -webkit-mask: url('send.svg') no-repeat center;\\n mask: url('send.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.receive {\\n -webkit-mask: url('receive.svg') no-repeat center;\\n mask: url('receive.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.history {\\n -webkit-mask: url('history.svg') no-repeat center;\\n mask: url('history.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.contracts {\\n -webkit-mask: url('contracts.svg') no-repeat center;\\n mask: url('contracts.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.messages {\\n -webkit-mask: url('message.svg') no-repeat center;\\n mask: url('message.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.staking {\\n -webkit-mask: url('staking.svg') no-repeat center;\\n mask: url('staking.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .indicator {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n border-radius: 1rem;\\n font-size: 1rem;\\n font-weight: 600;\\n margin-left: 1.3rem;\\n padding: 0 0.5rem;\\n min-width: 1.6rem;\\n height: 1.6rem; }\\n\\n.tabs .tabs-header .tab.disabled {\\n cursor: url('not-allowed.svg'), not-allowed; }\\n\\n.tabs .tabs-header .tab:not(:last-child) {\\n margin-right: 0.3rem; }\\n\\n.tabs .tabs-content {\\n display: flex;\\n padding: 3rem;\\n flex: 1 1 auto;\\n overflow-x: hidden;\\n overflow-y: overlay; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvd2FsbGV0L0U6XFxaYW5vXFxjaGVja1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHdhbGxldFxcd2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsb0JBQW9CO0VBQ3BCLGdCQUFnQjtFQUNoQixXQUFXO0VBQ1gsWUFBWSxFQUFBOztBQUdkO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQiw4QkFBOEI7RUFDOUIsY0FBYztFQUNkLFlBQVksRUFBQTs7QUFMZDtJQVFJLGFBQWE7SUFDYixtQkFBbUIsRUFBQTs7QUFUdkI7TUFZTSxvQkFBb0IsRUFBQTs7QUFaMUI7SUFpQkksaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQix1QkFBdUI7SUFDdkIsZ0JBQWdCO0lBQ2hCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsbUJBQW1CLEVBQUE7O0FBdkJ2QjtJQTJCSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixZQUFZO0lBQ1osZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsVUFBVSxFQUFBOztBQWxDZDtNQXFDTSxvQkFBb0I7TUFDcEIsYUFBYTtNQUNiLGNBQWMsRUFBQTs7QUF2Q3BCO1FBMENRLGlEQUEwRDtnQkFBMUQseUNBQTBELEVBQUE7O0FBMUNsRTtRQThDUSw4Q0FBdUQ7Z0JBQXZELHNDQUF1RCxFQUFBOztBQTlDL0Q7UUFrRFEsMERBQW1FO2dCQUFuRSxrREFBbUU7UUFDbkUsZUFBZSxFQUFBOztBQW5EdkI7UUF1RFEsc0RBQStEO2dCQUEvRCw4Q0FBK0Q7UUFDL0QsZUFBZSxFQUFBOztBQXhEdkI7SUE4REksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixpQkFBaUIsRUFBQTs7QUFoRXJCO01BbUVNLGVBQWU7TUFDZixvQkFBb0I7TUFDcEIsYUFBYTtNQUNiLGNBQWMsRUFBQTs7QUF0RXBCO1FBeUVRLGlEQUEwRDtnQkFBMUQseUNBQTBELEVBQUE7O0FBekVsRTtRQTZFUSw4Q0FBdUQ7Z0JBQXZELHNDQUF1RCxFQUFBOztBQU0vRDtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsY0FBYztFQUNkLGlCQUFpQjtFQUNqQixtQkFBbUIsRUFBQTs7QUFMckI7SUFRSSxlQUFlO0lBQ2YsbUJBQW1CO0lBQ25CLGFBQWE7SUFDYixjQUFjLEVBQUE7O0FBWGxCO01BY00sOENBQXVEO2NBQXZELHNDQUF1RCxFQUFBOztBQWQ3RDtRQWlCUSxhQUFhLEVBQUE7O0FBakJyQjtNQXNCTSw2REFBc0U7Y0FBdEUscURBQXNFLEVBQUE7O0FBSzVFO0VBQ0UsYUFBYTtFQUNiLHFCQUFxQjtFQUNyQiwyQkFBMkI7RUFDM0IsY0FBYztFQUNkLGdCQUFnQixFQUFBOztBQUxsQjtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsbUJBQW1CO0lBQ25CLG9CQUFvQixFQUFBOztBQVh4QjtJQWVJLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsbUJBQW1CLEVBQUE7O0FBSXZCO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixjQUFjLEVBQUE7O0FBSGhCO0lBTUksYUFBYTtJQUNiLDhCQUE4QjtJQUM5QixjQUFjLEVBQUE7O0FBUmxCO01BV00sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsY0FBYztNQUNkLGVBQWU7TUFDZixlQUFlO01BQ2YsWUFBWSxFQUFBOztBQWpCbEI7UUFvQlEsb0JBQW9CO1FBQ3BCLGFBQWE7UUFDYixjQUFjLEVBQUE7O0FBdEJ0QjtVQXlCVSw4Q0FBdUQ7a0JBQXZELHNDQUF1RCxFQUFBOztBQXpCakU7VUE2QlUsaURBQTBEO2tCQUExRCx5Q0FBMEQsRUFBQTs7QUE3QnBFO1VBaUNVLGlEQUEwRDtrQkFBMUQseUNBQTBELEVBQUE7O0FBakNwRTtVQXFDVSxtREFBNEQ7a0JBQTVELDJDQUE0RCxFQUFBOztBQXJDdEU7VUF5Q1UsaURBQTBEO2tCQUExRCx5Q0FBMEQsRUFBQTs7QUF6Q3BFO1VBNkNVLGlEQUEwRDtrQkFBMUQseUNBQTBELEVBQUE7O0FBN0NwRTtRQWtEUSxhQUFhO1FBQ2IsbUJBQW1CO1FBQ25CLHVCQUF1QjtRQUN2QixtQkFBbUI7UUFDbkIsZUFBZTtRQUNmLGdCQUFnQjtRQUNoQixtQkFBbUI7UUFDbkIsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixjQUFjLEVBQUE7O0FBM0R0QjtRQStEUSwyQ0FBNEQsRUFBQTs7QUEvRHBFO1FBbUVRLG9CQUFvQixFQUFBOztBQW5FNUI7SUF5RUksYUFBYTtJQUNiLGFBQWE7SUFDYixjQUFjO0lBQ2Qsa0JBQWtCO0lBQ2xCLG1CQUFtQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvd2FsbGV0L3dhbGxldC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHBhZGRpbmc6IDAgM3JlbSAzcmVtO1xyXG4gIG1pbi13aWR0aDogOTVyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4uaGVhZGVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG4gIGhlaWdodDogOHJlbTtcclxuXHJcbiAgPiBkaXYge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gICAgOm5vdCg6bGFzdC1jaGlsZCkge1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDMuMnJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGgzIHtcclxuICAgIGZvbnQtc2l6ZTogMS43cmVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICBtYXgtd2lkdGg6IDUwcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuN3JlbTtcclxuICB9XHJcblxyXG4gIGJ1dHRvbiB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG5cclxuICAgIC5pY29uIHtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAxLjJyZW07XHJcbiAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgIGhlaWdodDogMS43cmVtO1xyXG5cclxuICAgICAgJi5hY2NvdW50IHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2FjY291bnQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmxvY2sge1xyXG4gICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvbG9jay5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuZGV0YWlscyB7XHJcbiAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9kZXRhaWxzLXNldHRpbmdzLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuY2xvc2Utd2FsbGV0IHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2Nsb3NlLXdhbGxldC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWxpYXMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuXHJcbiAgICAuaWNvbiB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAxLjJyZW07XHJcbiAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgIGhlaWdodDogMS43cmVtO1xyXG5cclxuICAgICAgJi5lZGl0IHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2RldGFpbHMuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnRyYW5zZmVyIHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3NlbmQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYWRkcmVzcyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG4gIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gIC5pY29uIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIG1hcmdpbi1sZWZ0OiAxLjJyZW07XHJcbiAgICB3aWR0aDogMS43cmVtO1xyXG4gICAgaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gICAgJi5jb3B5IHtcclxuICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9jb3B5LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuXHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIG9wYWNpdHk6IDAuNzU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLmNvcGllZCB7XHJcbiAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvY29tcGxldGUtdGVzdHdhbGxldC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYmFsYW5jZSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG4gIG1hcmdpbjogMi42cmVtIDA7XHJcblxyXG4gIDpmaXJzdC1jaGlsZCB7XHJcbiAgICBmb250LXNpemU6IDMuM3JlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMi40cmVtO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAzLjVyZW07XHJcbiAgfVxyXG5cclxuICA6bGFzdC1jaGlsZCB7XHJcbiAgICBmb250LXNpemU6IDEuOHJlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMS4zcmVtO1xyXG4gIH1cclxufVxyXG5cclxuLnRhYnMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBmbGV4OiAxIDEgYXV0bztcclxuXHJcbiAgLnRhYnMtaGVhZGVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmbGV4OiAwIDAgYXV0bztcclxuXHJcbiAgICAudGFiIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGZsZXg6IDEgMCBhdXRvO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDAgMXJlbTtcclxuICAgICAgaGVpZ2h0OiA1cmVtO1xyXG5cclxuICAgICAgLmljb24ge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMS4zcmVtO1xyXG4gICAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgICAgaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gICAgICAgICYuc2VuZCB7XHJcbiAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3NlbmQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5yZWNlaXZlIHtcclxuICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvcmVjZWl2ZS5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmhpc3Rvcnkge1xyXG4gICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9oaXN0b3J5LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuY29udHJhY3RzIHtcclxuICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvY29udHJhY3RzLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYubWVzc2FnZXMge1xyXG4gICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9tZXNzYWdlLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuc3Rha2luZyB7XHJcbiAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3N0YWtpbmcuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmluZGljYXRvciB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XHJcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEuM3JlbTtcclxuICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbTtcclxuICAgICAgICBtaW4td2lkdGg6IDEuNnJlbTtcclxuICAgICAgICBoZWlnaHQ6IDEuNnJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5kaXNhYmxlZCB7XHJcbiAgICAgICAgY3Vyc29yOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL25vdC1hbGxvd2VkLnN2ZyksIG5vdC1hbGxvd2VkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMC4zcmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudGFicy1jb250ZW50IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBwYWRkaW5nOiAzcmVtO1xyXG4gICAgZmxleDogMSAxIGF1dG87XHJcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XHJcbiAgICBvdmVyZmxvdy15OiBvdmVybGF5O1xyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, OnInit, OnDestroy, NgZone, ViewChild, ElementRef} from '@angular/core';\r\nimport {ActivatedRoute, Router, RoutesRecognized} from '@angular/router';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {IntToMoneyPipe} from '../_helpers/pipes/int-to-money.pipe';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-wallet',\r\n templateUrl: './wallet.component.html',\r\n styleUrls: ['./wallet.component.scss']\r\n})\r\nexport class WalletComponent implements OnInit, OnDestroy {\r\n subRouting1;\r\n subRouting2;\r\n walletID;\r\n copyAnimation = false;\r\n copyAnimationTimeout;\r\n balanceTooltip;\r\n\r\n @ViewChild('scrolledContent') private scrolledContent: ElementRef;\r\n\r\n tabs = [\r\n {\r\n title: 'WALLET.TABS.HISTORY',\r\n icon: 'history',\r\n link: '/history',\r\n indicator: false,\r\n active: true\r\n },\r\n {\r\n title: 'WALLET.TABS.SEND',\r\n icon: 'send',\r\n link: '/send',\r\n indicator: false,\r\n active: false\r\n },\r\n {\r\n title: 'WALLET.TABS.RECEIVE',\r\n icon: 'receive',\r\n link: '/receive',\r\n indicator: false,\r\n active: false\r\n },\r\n {\r\n title: 'WALLET.TABS.CONTRACTS',\r\n icon: 'contracts',\r\n link: '/contracts',\r\n indicator: 1,\r\n active: false\r\n },\r\n /*{\r\n title: 'WALLET.TABS.MESSAGES',\r\n icon: 'messages',\r\n link: '/messages',\r\n indicator: 32,\r\n active: false\r\n },*/\r\n {\r\n title: 'WALLET.TABS.STAKING',\r\n icon: 'staking',\r\n link: '/staking',\r\n indicator: false,\r\n active: false\r\n }\r\n ];\r\n aliasSubscription: Subscription;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private backend: BackendService,\r\n public variablesService: VariablesService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService,\r\n private intToMoneyPipe: IntToMoneyPipe\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.subRouting1 = this.route.params.subscribe(params => {\r\n this.walletID = +params['id'];\r\n this.variablesService.setCurrentWallet(this.walletID);\r\n this.scrolledContent.nativeElement.scrollTop = 0;\r\n clearTimeout(this.copyAnimationTimeout);\r\n this.copyAnimation = false;\r\n });\r\n this.subRouting2 = this.router.events.subscribe(val => {\r\n if (val instanceof RoutesRecognized) {\r\n if ( val.state.root.firstChild && val.state.root.firstChild.firstChild ) {\r\n for (let i = 0; i < this.tabs.length; i++) {\r\n this.tabs[i].active = (this.tabs[i].link === '/' + val.state.root.firstChild.firstChild.url[0].path);\r\n }\r\n }\r\n }\r\n });\r\n if (this.variablesService.currentWallet.alias.hasOwnProperty('name')) {\r\n this.variablesService.currentWallet.wakeAlias = false;\r\n }\r\n this.aliasSubscription = this.variablesService.getAliasChangedEvent.subscribe(() => {\r\n if (this.variablesService.currentWallet.alias.hasOwnProperty('name')) {\r\n this.variablesService.currentWallet.wakeAlias = false;\r\n }\r\n });\r\n }\r\n\r\n changeTab(index) {\r\n if ((this.tabs[index].link === '/send' || this.tabs[index].link === '/contracts' || this.tabs[index].link === '/staking') && (this.variablesService.daemon_state !== 2 || !this.variablesService.currentWallet.loaded)) {\r\n return;\r\n }\r\n this.tabs.forEach((tab) => {\r\n tab.active = false;\r\n });\r\n this.tabs[index].active = true;\r\n this.ngZone.run( () => {\r\n this.scrolledContent.nativeElement.scrollTop = 0;\r\n this.router.navigate(['wallet/' + this.walletID + this.tabs[index].link]);\r\n });\r\n }\r\n\r\n copyAddress() {\r\n this.backend.setClipboard(this.variablesService.currentWallet.address);\r\n this.copyAnimation = true;\r\n this.copyAnimationTimeout = window.setTimeout(() => {\r\n this.copyAnimation = false;\r\n }, 2000);\r\n }\r\n\r\n getTooltip() {\r\n this.balanceTooltip = document.createElement('div');\r\n const available = document.createElement('span');\r\n available.setAttribute('class', 'available');\r\n available.innerHTML = this.translate.instant('WALLET.AVAILABLE_BALANCE', {available: this.intToMoneyPipe.transform(this.variablesService.currentWallet.unlocked_balance), currency: this.variablesService.defaultCurrency});\r\n this.balanceTooltip.appendChild(available);\r\n const locked = document.createElement('span');\r\n locked.setAttribute('class', 'locked');\r\n locked.innerHTML = this.translate.instant('WALLET.LOCKED_BALANCE', {locked: this.intToMoneyPipe.transform(this.variablesService.currentWallet.balance.minus(this.variablesService.currentWallet.unlocked_balance)), currency: this.variablesService.defaultCurrency});\r\n this.balanceTooltip.appendChild(locked);\r\n const link = document.createElement('span');\r\n link.setAttribute('class', 'link');\r\n link.innerHTML = this.translate.instant('WALLET.LOCKED_BALANCE_LINK');\r\n link.addEventListener('click', () => {\r\n this.openInBrowser('docs.zano.org/docs/locked-balance');\r\n });\r\n this.balanceTooltip.appendChild(link);\r\n return this.balanceTooltip;\r\n }\r\n\r\n onHideTooltip() {\r\n this.balanceTooltip = null;\r\n }\r\n\r\n openInBrowser(link) {\r\n this.backend.openUrlInBrowser(link);\r\n }\r\n\r\n closeWallet() {\r\n this.backend.closeWallet(this.variablesService.currentWallet.wallet_id, () => {\r\n for (let i = this.variablesService.wallets.length - 1; i >= 0; i--) {\r\n if (this.variablesService.wallets[i].wallet_id === this.variablesService.currentWallet.wallet_id) {\r\n this.variablesService.wallets.splice(i, 1);\r\n }\r\n }\r\n this.ngZone.run(() => {\r\n if (this.variablesService.wallets.length) {\r\n this.variablesService.currentWallet = this.variablesService.wallets[0];\r\n this.router.navigate(['/wallet/' + this.variablesService.currentWallet.wallet_id]);\r\n } else {\r\n this.router.navigate(['/']);\r\n }\r\n });\r\n if (this.variablesService.appPass) {\r\n this.backend.storeSecureAppData();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subRouting1.unsubscribe();\r\n this.subRouting2.unsubscribe();\r\n this.aliasSubscription.unsubscribe();\r\n clearTimeout(this.copyAnimationTimeout);\r\n }\r\n\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/src/gui/qt-daemon/html/polyfills.js b/src/gui/qt-daemon/html/polyfills.js index 4a42665e..bf988a6a 100644 --- a/src/gui/qt-daemon/html/polyfills.js +++ b/src/gui/qt-daemon/html/polyfills.js @@ -5800,8 +5800,8 @@ __webpack_require__.r(__webpack_exports__); /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -__webpack_require__(/*! D:\Projects\zano\src\gui\qt-daemon\html_source\src\polyfills.ts */"./src/polyfills.ts"); -module.exports = __webpack_require__(/*! D:\Projects\zano\src\gui\qt-daemon\html_source\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models\jit-polyfills.js */"./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js"); +__webpack_require__(/*! E:\Zano\check\zano\src\gui\qt-daemon\html_source\src\polyfills.ts */"./src/polyfills.ts"); +module.exports = __webpack_require__(/*! E:\Zano\check\zano\src\gui\qt-daemon\html_source\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models\jit-polyfills.js */"./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js"); /***/ }) diff --git a/src/gui/qt-daemon/html/styles.js b/src/gui/qt-daemon/html/styles.js index 7c5df269..68e557ee 100644 --- a/src/gui/qt-daemon/html/styles.js +++ b/src/gui/qt-daemon/html/styles.js @@ -7,7 +7,7 @@ /*! no static exports found */ /***/ (function(module, exports) { -module.exports = [[module.i, "/*\r\n* Implementation of themes\r\n*/\n.ng-select.ng-select-opened>.ng-select-container{background:#fff;border-color:#b3b3b3 #ccc #d9d9d9}\n.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}\n.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-2px;border-color:transparent transparent #999;border-width:0 5px 5px}\n.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent #333}\n.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}\n.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-right-radius:0;border-top-left-radius:0}\n.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:#007eff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 0 3px rgba(0,126,255,0.1)}\n.ng-select.ng-select-disabled>.ng-select-container{background-color:#f9f9f9}\n.ng-select .ng-has-value .ng-placeholder{display:none}\n.ng-select .ng-select-container{background-color:#fff;border-radius:4px;border:1px solid #ccc;min-height:36px;align-items:center}\n.ng-select .ng-select-container:hover{box-shadow:0 1px 0 rgba(0,0,0,0.06)}\n.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:10px}\n[dir=\"rtl\"] .ng-select .ng-select-container .ng-value-container{padding-right:10px;padding-left:0}\n.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#999}\n.ng-select.ng-select-single .ng-select-container{height:36px}\n.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:5px;left:0;padding-left:10px;padding-right:50px}\n[dir=\"rtl\"] .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{padding-right:10px;padding-left:50px}\n.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{background-color:#f9f9f9;border:1px solid #e6e6e6}\n.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 5px}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:5px;padding-left:7px}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-right:7px;padding-left:0}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{font-size:.9em;margin-bottom:5px;background-color:#ebf5ff;border-radius:2px;margin-right:5px}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{margin-right:0;margin-left:5px}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#f9f9f9}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:5px}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:0;padding-right:5px}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{display:inline-block;padding:1px 5px}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:1px 5px}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#d1e8ff}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid #b8dbff}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-left:1px solid #b8dbff;border-right:none}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid #b8dbff}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:0;border-right:1px solid #b8dbff}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 3px 3px}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 3px 3px 0}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:5px;padding-bottom:5px;padding-left:3px}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-right:3px;padding-left:0}\n.ng-select .ng-clear-wrapper{color:#999}\n.ng-select .ng-clear-wrapper:hover .ng-clear{color:#D0021B}\n.ng-select .ng-spinner-zone{padding:5px 5px 0 0}\n[dir=\"rtl\"] .ng-select .ng-spinner-zone{padding:5px 0 0 5px}\n.ng-select .ng-arrow-wrapper{width:25px;padding-right:5px}\n[dir=\"rtl\"] .ng-select .ng-arrow-wrapper{padding-left:5px;padding-right:0}\n.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:#666}\n.ng-select .ng-arrow-wrapper .ng-arrow{border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 2.5px}\n.ng-dropdown-panel{background-color:#fff;border:1px solid #ccc;box-shadow:0 1px 0 rgba(0,0,0,0.06);left:0}\n.ng-dropdown-panel.ng-select-bottom{top:100%;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top-color:#e6e6e6;margin-top:-1px}\n.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-right-radius:4px;border-bottom-left-radius:4px}\n.ng-dropdown-panel.ng-select-top{bottom:100%;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-color:#e6e6e6;margin-bottom:-1px}\n.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px;border-top-left-radius:4px}\n.ng-dropdown-panel .ng-dropdown-header{border-bottom:1px solid #ccc;padding:5px 7px}\n.ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid #ccc;padding:5px 7px}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:8px 10px;font-weight:500;color:rgba(0,0,0,0.54);cursor:pointer}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#f5faff}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{background-color:#ebf5ff;font-weight:600}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{background-color:#fff;color:rgba(0,0,0,0.87);padding:8px 10px}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:#333;background-color:#ebf5ff}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:600}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:#f5faff;color:#333}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#ccc}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:22px}\n[dir=\"rtl\"] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-right:22px;padding-left:0}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:5px}\n[dir=\"rtl\"] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-left:5px;padding-right:0}\n[dir=\"rtl\"] .ng-dropdown-panel{direction:rtl;text-align:right}\nhtml {\n box-sizing: border-box;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box; }\n*, *:before, *:after {\n box-sizing: inherit;\n -webkit-box-sizing: inherit;\n -moz-box-sizing: inherit;\n margin: 0;\n padding: 0;\n -webkit-touch-collout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup,\nmenu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n border: 0;\n font-size: 100%;\n font: inherit;\n vertical-align: baseline; }\narticle, aside, details, figcaption, figure,\nfooter, header, hgroup, menu, nav, section {\n display: block; }\nbody {\n line-height: 1;\n font-style: normal; }\nol, ul {\n list-style: none; }\nblockquote, q {\n quotes: none; }\nblockquote:before, blockquote:after,\nq:before, q:after {\n content: none; }\ntable {\n border-collapse: collapse;\n border-spacing: 0; }\ntd,\nth {\n padding: 0; }\ninput {\n outline: none; }\ninput:-webkit-autofill {\n -webkit-box-shadow: 0 0 0 1000px white inset; }\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n outline: none; }\nbutton[disabled],\nhtml input[disabled] {\n cursor: default; }\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0; }\ninput {\n line-height: normal; }\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box; }\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none; }\na {\n text-decoration: none; }\na:active, a:hover, a:focus {\n outline: 0; }\ni {\n font-style: italic; }\nb, strong {\n font-weight: 700; }\nimg {\n width: auto;\n max-width: 100%;\n height: auto;\n vertical-align: top;\n border: 0; }\n.hidden {\n display: none !important; }\n.theme-dark .app-content .preloader .loading-bar {\n background-color: #5cda9d; }\n.theme-gray .app-content .preloader .loading-bar {\n background-color: #47cf8d; }\n.theme-white .app-content .preloader .loading-bar {\n background-color: #46c172; }\nbutton {\n border: none;\n font-family: OpenSans, sans-serif;\n font-size: 1.5rem;\n font-weight: 600;\n outline: none;\n padding: 0 1rem;\n height: 4.2rem; }\n.theme-dark button:disabled:not(.transparent-button) {\n background-color: #9cadb7;\n color: #111921; }\n.theme-gray button:disabled:not(.transparent-button) {\n background-color: #79848f;\n color: #1a1a1a; }\n.theme-white button:disabled:not(.transparent-button) {\n background-color: #90a4ae;\n color: #fefefe; }\n.theme-dark button:disabled:not(.transparent-button):hover {\n background-color: #b7d1e0; }\n.theme-gray button:disabled:not(.transparent-button):hover {\n background-color: #a1aebb; }\n.theme-white button:disabled:not(.transparent-button):hover {\n background-color: #aebec6; }\n.theme-dark button:disabled:not(.transparent-button):focus {\n background-color: #a7b9c2; }\n.theme-gray button:disabled:not(.transparent-button):focus {\n background-color: #8a959f; }\n.theme-white button:disabled:not(.transparent-button):focus {\n background-color: #a7b9c2; }\n.theme-dark button.blue-button:not(:disabled) {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray button.blue-button:not(:disabled) {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white button.blue-button:not(:disabled) {\n background-color: #2c95f1;\n color: #fefefe; }\n.theme-dark button.blue-button:not(:disabled):hover {\n background-color: #82d7ff; }\n.theme-gray button.blue-button:not(:disabled):hover {\n background-color: #86d6ff; }\n.theme-white button.blue-button:not(:disabled):hover {\n background-color: #5cb3ff; }\n.theme-dark button.blue-button:not(:disabled):focus {\n background-color: #59b5fd; }\n.theme-gray button.blue-button:not(:disabled):focus {\n background-color: #5fb6fc; }\n.theme-white button.blue-button:not(:disabled):focus {\n background-color: #379ffa; }\n.theme-dark button.green-button:not(:disabled) {\n background-color: #5cda9d;\n color: #111921; }\n.theme-gray button.green-button:not(:disabled) {\n background-color: #47cf8d;\n color: #1a1a1a; }\n.theme-white button.green-button:not(:disabled) {\n background-color: #46c172;\n color: #fefefe; }\n.theme-dark button.green-button:not(:disabled):hover {\n background-color: #8dfcc6; }\n.theme-gray button.green-button:not(:disabled):hover {\n background-color: #7bf6c6; }\n.theme-white button.green-button:not(:disabled):hover {\n background-color: #5ad586; }\n.theme-dark button.green-button:not(:disabled):focus {\n background-color: #62e0b2; }\n.theme-gray button.green-button:not(:disabled):focus {\n background-color: #5cdc9e; }\n.theme-white button.green-button:not(:disabled):focus {\n background-color: #53c77c; }\n.theme-dark button.turquoise-button:not(:disabled) {\n background-color: #4dd0e1;\n color: #111921; }\n.theme-gray button.turquoise-button:not(:disabled) {\n background-color: #3ec5d7;\n color: #1a1a1a; }\n.theme-white button.turquoise-button:not(:disabled) {\n background-color: #26b6c7;\n color: #fefefe; }\n.theme-dark button.turquoise-button:not(:disabled):hover {\n background-color: #87f4f5; }\n.theme-gray button.turquoise-button:not(:disabled):hover {\n background-color: #72edfe; }\n.theme-white button.turquoise-button:not(:disabled):hover {\n background-color: #52cbd9; }\n.theme-dark button.turquoise-button:not(:disabled):focus {\n background-color: #42d5e8; }\n.theme-gray button.turquoise-button:not(:disabled):focus {\n background-color: #50d0e1; }\n.theme-white button.turquoise-button:not(:disabled):focus {\n background-color: #31becf; }\nbutton.transparent-button {\n display: flex;\n align-items: center;\n justify-content: center; }\n.theme-dark button.transparent-button {\n background-color: transparent;\n border: 0.2rem solid #2b3644;\n color: #e0e0e0; }\n.theme-gray button.transparent-button {\n background-color: transparent;\n border: 0.2rem solid #2f3438;\n color: #e0e0e0; }\n.theme-white button.transparent-button {\n background-color: transparent;\n border: 0.2rem solid #ebebeb;\n color: #43454b; }\nbutton.transparent-button .icon {\n margin-right: 1rem;\n -webkit-mask: url('complete-testwallet.svg') no-repeat center;\n mask: url('complete-testwallet.svg') no-repeat center;\n width: 1.7rem;\n height: 1.7rem; }\n.theme-dark button.transparent-button .icon {\n background-color: #e0e0e0; }\n.theme-gray button.transparent-button .icon {\n background-color: #e0e0e0; }\n.theme-white button.transparent-button .icon {\n background-color: #43454b; }\n.input-block {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n margin-bottom: 0.4rem; }\n.input-block .wrap-label {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n min-height: 2.4rem; }\n.input-block label {\n font-size: 1.3rem;\n line-height: 2.4rem; }\n.theme-dark .input-block label {\n color: #556576; }\n.theme-gray .input-block label {\n color: #565c62; }\n.theme-white .input-block label {\n color: #a0a5ab; }\n.input-block input[type='text'], .input-block input[type='password'], .input-block select {\n border: none;\n font-size: 1.4rem;\n outline: none;\n padding: 0 1rem;\n width: 100%;\n height: 4.2rem; }\n.theme-dark .input-block input[type='text'], .theme-dark .input-block input[type='password'], .theme-dark .input-block select {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray .input-block input[type='text'], .theme-gray .input-block input[type='password'], .theme-gray .input-block select {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white .input-block input[type='text'], .theme-white .input-block input[type='password'], .theme-white .input-block select {\n background-color: #e6e6e6;\n color: #43454b; }\n.input-block.textarea {\n height: auto; }\n.input-block.textarea textarea {\n font-family: OpenSans, sans-serif;\n border: none;\n font-size: 1.4rem;\n outline: none;\n padding: 1rem;\n width: 100%;\n min-width: 100%;\n height: 100%;\n min-height: 7.5rem;\n max-height: 7.5rem;\n overflow: auto;\n resize: none; }\n.theme-dark .input-block.textarea textarea {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray .input-block.textarea textarea {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white .input-block.textarea textarea {\n background-color: #e6e6e6;\n color: #43454b; }\n.input-block .error-block {\n font-size: 1rem;\n line-height: 1.4rem;\n align-self: flex-end;\n text-align: right; }\n.theme-dark .input-block .error-block {\n color: #ff5252; }\n.theme-gray .input-block .error-block {\n color: #ff5252; }\n.theme-white .input-block .error-block {\n color: #ff5252; }\n.theme-dark .error-text {\n color: #ff5252; }\n.theme-gray .error-text {\n color: #ff5252; }\n.theme-white .error-text {\n color: #ff5252; }\ninput[type='radio'].style-radio + label {\n display: flex;\n align-items: center;\n cursor: pointer;\n font-weight: 400;\n padding-left: 2.4rem;\n -webkit-touch-collout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n.theme-dark input[type='radio'].style-radio + label {\n color: #556576; }\n.theme-gray input[type='radio'].style-radio + label {\n color: #565c62; }\n.theme-white input[type='radio'].style-radio + label {\n color: #a0a5ab; }\ninput[type='radio'].style-radio:not(checked) {\n position: absolute;\n opacity: 0; }\ninput[type='radio'].style-radio:not(checked) + label {\n position: relative; }\ninput[type='radio'].style-radio:not(checked) + label:before {\n content: '';\n position: absolute;\n top: 0.7rem;\n left: 0;\n background: transparent;\n border-radius: 50%;\n width: 1.4rem;\n height: 1.4rem; }\n.theme-dark input[type='radio'].style-radio:not(checked) + label:before {\n border: 0.1rem solid #4db1ff; }\n.theme-gray input[type='radio'].style-radio:not(checked) + label:before {\n border: 0.1rem solid #42a5f5; }\n.theme-white input[type='radio'].style-radio:not(checked) + label:before {\n border: 0.1rem solid #2c95f1; }\ninput[type='radio'].style-radio:not(checked) + label:after {\n content: '';\n position: absolute;\n top: 1rem;\n left: 0.3rem;\n border-radius: 50%;\n opacity: 0;\n width: 0.8rem;\n height: 0.8rem; }\n.theme-dark input[type='radio'].style-radio:not(checked) + label:after {\n background-color: #4db1ff; }\n.theme-gray input[type='radio'].style-radio:not(checked) + label:after {\n background-color: #42a5f5; }\n.theme-white input[type='radio'].style-radio:not(checked) + label:after {\n background-color: #2c95f1; }\ninput[type='radio'].style-radio:checked + label:after {\n opacity: 1; }\ninput[type='checkbox'].style-checkbox + label {\n display: flex;\n align-items: center;\n cursor: pointer;\n font-weight: 400;\n padding-left: 3.6rem;\n -webkit-touch-collout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n.theme-dark input[type='checkbox'].style-checkbox + label {\n color: #556576; }\n.theme-gray input[type='checkbox'].style-checkbox + label {\n color: #565c62; }\n.theme-white input[type='checkbox'].style-checkbox + label {\n color: #a0a5ab; }\ninput[type='checkbox'].style-checkbox:not(checked) {\n position: absolute;\n top: 50%;\n left: 1.6rem;\n transform: translateY(-50%);\n visibility: hidden; }\ninput[type='checkbox'].style-checkbox:not(checked) + label {\n position: relative; }\ninput[type='checkbox'].style-checkbox:not(checked) + label:before {\n content: '';\n position: absolute;\n top: 50%;\n left: 1.6rem;\n transform: translateY(-50%);\n background: transparent;\n width: 1.4rem;\n height: 1.4rem; }\n.theme-dark input[type='checkbox'].style-checkbox:not(checked) + label:before {\n border: 0.1rem solid #4db1ff; }\n.theme-gray input[type='checkbox'].style-checkbox:not(checked) + label:before {\n border: 0.1rem solid #42a5f5; }\n.theme-white input[type='checkbox'].style-checkbox:not(checked) + label:before {\n border: 0.1rem solid #2c95f1; }\ninput[type='checkbox'].style-checkbox:checked + label:before {\n background: url('complete-testwallet.svg'); }\n.theme-dark input[type='checkbox'].style-checkbox:checked + label:before {\n background-color: #4db1ff; }\n.theme-gray input[type='checkbox'].style-checkbox:checked + label:before {\n background-color: #42a5f5; }\n.theme-white input[type='checkbox'].style-checkbox:checked + label:before {\n background-color: #2c95f1; }\n.theme-dark .switch {\n background-color: #000000; }\n.theme-gray .switch {\n background-color: #000000; }\n.theme-white .switch {\n background-color: #e0e0e0; }\n.theme-dark .switch .circle.on {\n background-color: #4db1ff; }\n.theme-gray .switch .circle.on {\n background-color: #42a5f5; }\n.theme-white .switch .circle.on {\n background-color: #2c95f1; }\n.theme-dark .switch .circle.off {\n background-color: #556576; }\n.theme-gray .switch .circle.off {\n background-color: #565c62; }\n.theme-white .switch .circle.off {\n background-color: #a0a5ab; }\n.table-tooltip {\n padding: 1rem 2rem; }\n.theme-dark .table-tooltip {\n background: #42505f;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-gray .table-tooltip {\n background: #3e464c;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-white .table-tooltip {\n background: #ffffff;\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5);\n color: #43454b; }\n.table-tooltip .tooltip-inner {\n font-size: 1.3rem;\n line-height: 1.8rem;\n white-space: pre-wrap; }\n.table-tooltip.ng-tooltip-top {\n margin-top: -1rem; }\n.table-tooltip.ng-tooltip-top:after {\n content: \"\";\n position: absolute;\n bottom: -1rem;\n left: calc(50% - 0.5rem);\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-top:after {\n border-color: #42505f transparent transparent transparent; }\n.theme-gray .table-tooltip.ng-tooltip-top:after {\n border-color: #3e464c transparent transparent transparent; }\n.theme-white .table-tooltip.ng-tooltip-top:after {\n border-color: #ffffff transparent transparent transparent; }\n.table-tooltip.ng-tooltip-top-left {\n margin-top: -1rem; }\n.table-tooltip.ng-tooltip-top-left:after {\n content: \"\";\n position: absolute;\n bottom: -1rem;\n left: 0.7rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-top-left:after {\n border-color: #42505f transparent transparent #42505f; }\n.theme-gray .table-tooltip.ng-tooltip-top-left:after {\n border-color: #3e464c transparent transparent #3e464c; }\n.theme-white .table-tooltip.ng-tooltip-top-left:after {\n border-color: #ffffff transparent transparent #ffffff; }\n.table-tooltip.ng-tooltip-top-right {\n margin-top: -1rem; }\n.table-tooltip.ng-tooltip-top-right:after {\n content: \"\";\n position: absolute;\n bottom: -1rem;\n right: 0.7rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-top-right:after {\n border-color: #42505f #42505f transparent transparent; }\n.theme-gray .table-tooltip.ng-tooltip-top-right:after {\n border-color: #3e464c #3e464c transparent transparent; }\n.theme-white .table-tooltip.ng-tooltip-top-right:after {\n border-color: #ffffff #ffffff transparent transparent; }\n.table-tooltip.ng-tooltip-bottom {\n margin-top: 1rem; }\n.table-tooltip.ng-tooltip-bottom:before {\n content: \"\";\n position: absolute;\n top: -1rem;\n left: calc(50% - 0.5rem);\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-bottom:before {\n border-color: transparent transparent #42505f transparent; }\n.theme-gray .table-tooltip.ng-tooltip-bottom:before {\n border-color: transparent transparent #3e464c transparent; }\n.theme-white .table-tooltip.ng-tooltip-bottom:before {\n border-color: transparent transparent #ffffff transparent; }\n.table-tooltip.ng-tooltip-bottom-left {\n margin-top: 1rem; }\n.table-tooltip.ng-tooltip-bottom-left:before {\n content: \"\";\n position: absolute;\n top: -1rem;\n left: 0.7rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-bottom-left:before {\n border-color: transparent transparent #42505f #42505f; }\n.theme-gray .table-tooltip.ng-tooltip-bottom-left:before {\n border-color: transparent transparent #3e464c #3e464c; }\n.theme-white .table-tooltip.ng-tooltip-bottom-left:before {\n border-color: transparent transparent #ffffff #ffffff; }\n.table-tooltip.ng-tooltip-bottom-right {\n margin-top: 1rem; }\n.table-tooltip.ng-tooltip-bottom-right:before {\n content: \"\";\n position: absolute;\n top: -1rem;\n right: 0.7rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-bottom-right:before {\n border-color: transparent #42505f #42505f transparent; }\n.theme-gray .table-tooltip.ng-tooltip-bottom-right:before {\n border-color: transparent #3e464c #3e464c transparent; }\n.theme-white .table-tooltip.ng-tooltip-bottom-right:before {\n border-color: transparent #ffffff #ffffff transparent; }\n.table-tooltip.ng-tooltip-left {\n margin-left: -1rem; }\n.table-tooltip.ng-tooltip-left:after {\n content: \"\";\n position: absolute;\n top: calc(50% - 0.5rem);\n right: -1rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-left:after {\n border-color: transparent transparent transparent #42505f; }\n.theme-gray .table-tooltip.ng-tooltip-left:after {\n border-color: transparent transparent transparent #3e464c; }\n.theme-white .table-tooltip.ng-tooltip-left:after {\n border-color: transparent transparent transparent #ffffff; }\n.table-tooltip.ng-tooltip-right {\n margin-left: 1rem; }\n.table-tooltip.ng-tooltip-right:before {\n content: \"\";\n position: absolute;\n top: calc(50% - 0.5rem);\n left: -1rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-right:before {\n border-color: transparent #42505f transparent transparent; }\n.theme-gray .table-tooltip.ng-tooltip-right:before {\n border-color: transparent #3e464c transparent transparent; }\n.theme-white .table-tooltip.ng-tooltip-right:before {\n border-color: transparent #ffffff transparent transparent; }\n.table-tooltip-dimensions .tooltip-inner {\n overflow: auto;\n max-width: 20rem;\n max-height: 10rem; }\n.balance-tooltip {\n padding: 1.3rem; }\n.theme-dark .balance-tooltip {\n background: #42505f;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-gray .balance-tooltip {\n background: #3e464c;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-white .balance-tooltip {\n background: #ffffff;\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5);\n color: #43454b; }\n.balance-tooltip .tooltip-inner {\n display: flex;\n flex-direction: column;\n font-size: 1.3rem; }\n.balance-tooltip .tooltip-inner .available {\n margin-bottom: 1.7rem; }\n.balance-tooltip .tooltip-inner .available b {\n font-weight: 600; }\n.balance-tooltip .tooltip-inner .locked {\n margin-bottom: 0.7rem; }\n.balance-tooltip .tooltip-inner .locked b {\n font-weight: 600; }\n.balance-tooltip .tooltip-inner .link {\n cursor: pointer; }\n.theme-dark .balance-tooltip .tooltip-inner .link {\n color: #4db1ff; }\n.theme-gray .balance-tooltip .tooltip-inner .link {\n color: #42a5f5; }\n.theme-white .balance-tooltip .tooltip-inner .link {\n color: #2c95f1; }\n.balance-tooltip.ng-tooltip-top {\n margin-top: -1rem; }\n.balance-tooltip.ng-tooltip-bottom {\n margin-top: 1rem; }\n.balance-tooltip.ng-tooltip-left {\n margin-left: -1rem; }\n.balance-tooltip.ng-tooltip-right {\n margin-left: 1rem; }\n.account-tooltip .tooltip-inner {\n word-break: break-word;\n max-width: 18rem; }\n.comment-tooltip .tooltip-inner {\n overflow: auto;\n word-break: break-word;\n max-width: 50rem;\n max-height: 25rem; }\n.update-tooltip {\n padding: 1.5rem; }\n.theme-dark .update-tooltip {\n background: #42505f;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-gray .update-tooltip {\n background: #3e464c;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-white .update-tooltip {\n background: #ffffff;\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5);\n color: #43454b; }\n.theme-dark .update-tooltip.important {\n background: #5f2b11;\n color: #e0e0e0; }\n.theme-gray .update-tooltip.important {\n background: #55240d;\n color: #e0e0e0; }\n.theme-white .update-tooltip.important {\n background: #ef6c00;\n color: #ffffff; }\n.theme-dark .update-tooltip.important.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #5f2b11 #5f2b11; }\n.theme-gray .update-tooltip.important.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #55240d #55240d; }\n.theme-white .update-tooltip.important.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #ef6c00 #ef6c00; }\n.theme-dark .update-tooltip.important.ng-tooltip-right-bottom:before {\n border-color: transparent #5f2b11 #5f2b11 transparent; }\n.theme-gray .update-tooltip.important.ng-tooltip-right-bottom:before {\n border-color: transparent #55240d #55240d transparent; }\n.theme-white .update-tooltip.important.ng-tooltip-right-bottom:before {\n border-color: transparent #ef6c00 #ef6c00 transparent; }\n.update-tooltip.critical {\n padding: 2.5rem; }\n.theme-dark .update-tooltip.critical {\n background: #5f1d1d;\n color: #e0e0e0; }\n.theme-gray .update-tooltip.critical {\n background: #4c1919;\n color: #e0e0e0; }\n.theme-white .update-tooltip.critical {\n background: #e53935;\n color: #ffffff; }\n.update-tooltip.critical .tooltip-inner {\n display: flex;\n flex-direction: column;\n align-items: center; }\n.theme-dark .update-tooltip.critical.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #5f1d1d #5f1d1d; }\n.theme-gray .update-tooltip.critical.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #4c1919 #4c1919; }\n.theme-white .update-tooltip.critical.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #e53935 #e53935; }\n.theme-dark .update-tooltip.critical.ng-tooltip-right-bottom:before {\n border-color: transparent #5f1d1d #5f1d1d transparent; }\n.theme-gray .update-tooltip.critical.ng-tooltip-right-bottom:before {\n border-color: transparent #4c1919 #4c1919 transparent; }\n.theme-white .update-tooltip.critical.ng-tooltip-right-bottom:before {\n border-color: transparent #e53935 #e53935 transparent; }\n.update-tooltip .tooltip-inner {\n font-size: 1.3rem;\n line-height: 1.8rem;\n white-space: pre-wrap; }\n.update-tooltip .tooltip-inner .standard-update {\n font-size: 1.5rem;\n line-height: 2.7rem; }\n.theme-dark .update-tooltip .tooltip-inner .standard-update {\n color: #4db1ff; }\n.theme-gray .update-tooltip .tooltip-inner .standard-update {\n color: #42a5f5; }\n.theme-white .update-tooltip .tooltip-inner .standard-update {\n color: #2c95f1; }\n.update-tooltip .tooltip-inner .important-update {\n font-size: 1.5rem;\n line-height: 2.7rem; }\n.theme-dark .update-tooltip .tooltip-inner .important-update {\n color: #ff6f00; }\n.theme-gray .update-tooltip .tooltip-inner .important-update {\n color: #ff6f00; }\n.theme-white .update-tooltip .tooltip-inner .important-update {\n color: #ffffff; }\n.update-tooltip .tooltip-inner .critical-update {\n font-size: 1.5rem;\n line-height: 2.7rem;\n text-align: center; }\n.update-tooltip .tooltip-inner .wrong-time {\n font-size: 1.5rem;\n line-height: 2.7rem; }\n.theme-dark .update-tooltip .tooltip-inner .wrong-time {\n color: #ff6f00; }\n.theme-gray .update-tooltip .tooltip-inner .wrong-time {\n color: #ff6f00; }\n.theme-white .update-tooltip .tooltip-inner .wrong-time {\n color: #ffffff; }\n.update-tooltip .tooltip-inner .icon {\n margin: 1.5rem 0;\n width: 5rem;\n height: 5rem; }\n.theme-dark .update-tooltip .tooltip-inner .icon {\n background-color: #ff5252; }\n.theme-gray .update-tooltip .tooltip-inner .icon {\n background-color: #ff5252; }\n.theme-white .update-tooltip .tooltip-inner .icon {\n background-color: #ffffff; }\n.update-tooltip.ng-tooltip-left-bottom {\n margin-left: -1.5rem; }\n.update-tooltip.ng-tooltip-left-bottom:after {\n content: \"\";\n position: absolute;\n bottom: 0.6rem;\n right: -1rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .update-tooltip.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #42505f #42505f; }\n.theme-gray .update-tooltip.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #3e464c #3e464c; }\n.theme-white .update-tooltip.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #ffffff #ffffff; }\n.update-tooltip.ng-tooltip-right-bottom {\n margin-left: 1.5rem; }\n.update-tooltip.ng-tooltip-right-bottom:before {\n content: \"\";\n position: absolute;\n bottom: 0.6rem;\n left: -1rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .update-tooltip.ng-tooltip-right-bottom:before {\n border-color: transparent #42505f #42505f transparent; }\n.theme-gray .update-tooltip.ng-tooltip-right-bottom:before {\n border-color: transparent #3e464c #3e464c transparent; }\n.theme-white .update-tooltip.ng-tooltip-right-bottom:before {\n border-color: transparent #ffffff #ffffff transparent; }\n.ngx-contextmenu .dropdown-menu {\n border: none;\n padding: 0; }\n.theme-dark .ngx-contextmenu .dropdown-menu {\n background-color: #2b3644;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5); }\n.theme-gray .ngx-contextmenu .dropdown-menu {\n background-color: #292d31;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5); }\n.theme-white .ngx-contextmenu .dropdown-menu {\n background-color: #e0e0e0;\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5); }\n.ngx-contextmenu li {\n display: block;\n font-family: OpenSans, sans-serif;\n font-size: 1.3rem;\n text-transform: uppercase;\n text-align: center; }\n.ngx-contextmenu a {\n display: block;\n padding: 0.5em 1em; }\n.theme-dark .ngx-contextmenu a {\n color: #e0e0e0; }\n.theme-gray .ngx-contextmenu a {\n color: #e0e0e0; }\n.theme-white .ngx-contextmenu a {\n color: #43454b; }\n.theme-dark .ngx-contextmenu a:hover {\n background-color: #556576;\n color: #e0e0e0; }\n.theme-gray .ngx-contextmenu a:hover {\n background-color: #515960;\n color: #e0e0e0; }\n.theme-white .ngx-contextmenu a:hover {\n background-color: #ffffff;\n color: #43454b; }\n.ng-select.custom-select {\n width: 100%; }\n.ng-select.custom-select .ng-select-container {\n border: none;\n border-radius: 0;\n cursor: pointer;\n font-size: 1.4rem;\n outline: none;\n padding: 0 1rem;\n height: 4.2rem; }\n.theme-dark .ng-select.custom-select .ng-select-container {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray .ng-select.custom-select .ng-select-container {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white .ng-select.custom-select .ng-select-container {\n background-color: #e6e6e6;\n color: #43454b; }\n.ng-select.custom-select .ng-select-container .ng-value-container {\n padding: 0; }\n.ng-select.custom-select .ng-select-container .ng-value-container .ng-input {\n top: auto; }\n.ng-select.custom-select .ng-dropdown-panel {\n border: none; }\n.theme-dark .ng-select.custom-select .ng-dropdown-panel {\n background-color: #171e27; }\n.theme-gray .ng-select.custom-select .ng-dropdown-panel {\n background-color: #292d31; }\n.theme-white .ng-select.custom-select .ng-dropdown-panel {\n background-color: #e6e6e6; }\n.ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option {\n font-size: 1.4rem;\n padding: 1rem; }\n.theme-dark .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option {\n background-color: #e6e6e6;\n color: #43454b; }\n.theme-dark .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked {\n background-color: rgba(58, 69, 85, 0.5);\n color: #e0e0e0; }\n.theme-gray .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked {\n background-color: rgba(58, 62, 66, 0.5);\n color: #e0e0e0; }\n.theme-white .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked {\n background-color: rgba(240, 240, 240, 0.5);\n color: #43454b; }\n.theme-dark .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected {\n background-color: rgba(43, 54, 68, 0.5);\n color: #e0e0e0; }\n.theme-gray .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected {\n background-color: rgba(37, 40, 43, 0.5);\n color: #e0e0e0; }\n.theme-white .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected {\n background-color: rgba(224, 224, 224, 0.5);\n color: #43454b; }\n.ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items::-webkit-scrollbar {\n background-color: transparent;\n cursor: default;\n width: 1rem;\n height: 1rem; }\n.ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items::-webkit-scrollbar-track {\n background: transparent; }\n.ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items::-webkit-scrollbar-thumb {\n background-color: #556576;\n background-clip: padding-box;\n border: 0.25rem solid transparent;\n border-radius: 0.5rem; }\n.ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items::-webkit-scrollbar-thumb:hover {\n background-color: #556576; }\n.theme-dark app-modal-container .modal {\n background: url('background-dark.png');\n color: #e0e0e0; }\n.theme-gray app-modal-container .modal {\n background: url('background-gray.png');\n color: #e0e0e0; }\n.theme-white app-modal-container .modal {\n background: url('background-white.png');\n color: #43454b; }\n.theme-dark app-modal-container .modal .content .icon.error {\n background-color: #ff5252; }\n.theme-gray app-modal-container .modal .content .icon.error {\n background-color: #ff5252; }\n.theme-white app-modal-container .modal .content .icon.error {\n background-color: #ff5252; }\n.theme-dark app-modal-container .modal .content .icon.success {\n background-color: #5cda9d; }\n.theme-gray app-modal-container .modal .content .icon.success {\n background-color: #47cf8d; }\n.theme-white app-modal-container .modal .content .icon.success {\n background-color: #46c172; }\n.theme-dark app-modal-container .modal .content .icon.info {\n background-color: #4db1ff; }\n.theme-gray app-modal-container .modal .content .icon.info {\n background-color: #42a5f5; }\n.theme-white app-modal-container .modal .content .icon.info {\n background-color: #2c95f1; }\n.theme-dark app-modal-container .modal .action-button {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray app-modal-container .modal .action-button {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white app-modal-container .modal .action-button {\n background-color: #2c95f1;\n color: #fefefe; }\n.theme-dark app-modal-container .modal .close-button .icon {\n background-color: #556576; }\n.theme-gray app-modal-container .modal .close-button .icon {\n background-color: #515960; }\n.theme-white app-modal-container .modal .close-button .icon {\n background-color: #43454b; }\n.theme-dark app-transaction-details .table {\n border-top: 0.2rem solid #2b3644; }\n.theme-gray app-transaction-details .table {\n border-top: 0.2rem solid #2f3438; }\n.theme-white app-transaction-details .table {\n border-top: 0.2rem solid #ebebeb; }\n.theme-dark app-transaction-details .table .row .cell.label {\n color: #556576; }\n.theme-gray app-transaction-details .table .row .cell.label {\n color: #565c62; }\n.theme-white app-transaction-details .table .row .cell.label {\n color: #a0a5ab; }\n.theme-dark app-transaction-details .table .row .cell.value {\n color: #e0e0e0; }\n.theme-gray app-transaction-details .table .row .cell.value {\n color: #e0e0e0; }\n.theme-white app-transaction-details .table .row .cell.value {\n color: #43454b; }\n.theme-dark app-transaction-details .table .row .cell.key-value {\n color: #4db1ff; }\n.theme-gray app-transaction-details .table .row .cell.key-value {\n color: #42a5f5; }\n.theme-white app-transaction-details .table .row .cell.key-value {\n color: #2c95f1; }\n.theme-dark app-progress-container .progress-bar-container {\n color: #e0e0e0; }\n.theme-gray app-progress-container .progress-bar-container {\n color: #e0e0e0; }\n.theme-white app-progress-container .progress-bar-container {\n color: #43454b; }\n.theme-dark app-progress-container .progress-bar-container .progress-bar {\n background-color: #343f4a; }\n.theme-gray app-progress-container .progress-bar-container .progress-bar {\n background-color: #363a3e; }\n.theme-white app-progress-container .progress-bar-container .progress-bar {\n background-color: #dcdcdc; }\n.theme-dark app-progress-container .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #5cda9d; }\n.theme-gray app-progress-container .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #47cf8d; }\n.theme-white app-progress-container .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #46c172; }\n.theme-dark app-open-wallet-modal .modal {\n background: url('background-dark.png');\n color: #e0e0e0; }\n.theme-gray app-open-wallet-modal .modal {\n background: url('background-gray.png');\n color: #e0e0e0; }\n.theme-white app-open-wallet-modal .modal {\n background: url('background-white.png');\n color: #43454b; }\napp-main, app-create-wallet, app-open-wallet, app-restore-wallet, app-seed-phrase, app-wallet-details, app-assign-alias, app-edit-alias, app-transfer-alias, app-settings, app-login {\n flex: 1 1 auto;\n padding: 3rem;\n min-width: 85rem; }\napp-main .content, app-create-wallet .content, app-open-wallet .content, app-restore-wallet .content, app-seed-phrase .content, app-wallet-details .content, app-assign-alias .content, app-edit-alias .content, app-transfer-alias .content, app-settings .content, app-login .content {\n position: relative;\n padding: 3rem;\n min-height: 100%; }\n.theme-dark app-main .content, .theme-dark app-create-wallet .content, .theme-dark app-open-wallet .content, .theme-dark app-restore-wallet .content, .theme-dark app-seed-phrase .content, .theme-dark app-wallet-details .content, .theme-dark app-assign-alias .content, .theme-dark app-edit-alias .content, .theme-dark app-transfer-alias .content, .theme-dark app-settings .content, .theme-dark app-login .content {\n background-color: rgba(43, 54, 68, 0.5);\n color: #e0e0e0; }\n.theme-gray app-main .content, .theme-gray app-create-wallet .content, .theme-gray app-open-wallet .content, .theme-gray app-restore-wallet .content, .theme-gray app-seed-phrase .content, .theme-gray app-wallet-details .content, .theme-gray app-assign-alias .content, .theme-gray app-edit-alias .content, .theme-gray app-transfer-alias .content, .theme-gray app-settings .content, .theme-gray app-login .content {\n background-color: rgba(37, 40, 43, 0.5);\n color: #e0e0e0; }\n.theme-white app-main .content, .theme-white app-create-wallet .content, .theme-white app-open-wallet .content, .theme-white app-restore-wallet .content, .theme-white app-seed-phrase .content, .theme-white app-wallet-details .content, .theme-white app-assign-alias .content, .theme-white app-edit-alias .content, .theme-white app-transfer-alias .content, .theme-white app-settings .content, .theme-white app-login .content {\n background-color: rgba(255, 255, 255, 0.5);\n color: #43454b; }\napp-main .content .head, app-create-wallet .content .head, app-open-wallet .content .head, app-restore-wallet .content .head, app-seed-phrase .content .head, app-wallet-details .content .head, app-assign-alias .content .head, app-edit-alias .content .head, app-transfer-alias .content .head, app-settings .content .head, app-login .content .head {\n position: absolute;\n top: 0;\n left: 0; }\n.theme-dark app-main .content .add-wallet .add-wallet-help {\n color: #4db1ff; }\n.theme-gray app-main .content .add-wallet .add-wallet-help {\n color: #42a5f5; }\n.theme-white app-main .content .add-wallet .add-wallet-help {\n color: #2c95f1; }\n.theme-dark app-main .content .add-wallet .add-wallet-help .icon {\n background-color: #4db1ff; }\n.theme-gray app-main .content .add-wallet .add-wallet-help .icon {\n background-color: #42a5f5; }\n.theme-white app-main .content .add-wallet .add-wallet-help .icon {\n background-color: #2c95f1; }\n.theme-dark app-seed-phrase .seed-phrase-content {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray app-seed-phrase .seed-phrase-content {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white app-seed-phrase .seed-phrase-content {\n background-color: #e6e6e6;\n color: #43454b; }\n.theme-dark app-wallet-details .seed-phrase {\n background-color: #171e27; }\n.theme-gray app-wallet-details .seed-phrase {\n background-color: #292d31; }\n.theme-white app-wallet-details .seed-phrase {\n background-color: #e6e6e6; }\napp-settings .content {\n height: 100%;\n overflow-y: auto;\n display: flex;\n justify-content: space-between;\n flex-direction: column; }\n.theme-dark app-settings .content .theme-selection {\n color: #556576; }\n.theme-gray app-settings .content .theme-selection {\n color: #565c62; }\n.theme-white app-settings .content .theme-selection {\n color: #a0a5ab; }\n.theme-dark app-settings .content .scale-selection .button-block {\n background-color: rgba(23, 31, 39, 0.5); }\n.theme-gray app-settings .content .scale-selection .button-block {\n background-color: rgba(28, 30, 33, 0.5); }\n.theme-white app-settings .content .scale-selection .button-block {\n background-color: rgba(224, 224, 224, 0.5); }\n.theme-dark app-settings .content .scale-selection .button-block .label {\n color: #556576; }\n.theme-gray app-settings .content .scale-selection .button-block .label {\n color: #565c62; }\n.theme-white app-settings .content .scale-selection .button-block .label {\n color: #a0a5ab; }\n.theme-dark app-settings .content .scale-selection .button-block.active {\n background-color: #4db1ff; }\n.theme-gray app-settings .content .scale-selection .button-block.active {\n background-color: #42a5f5; }\n.theme-white app-settings .content .scale-selection .button-block.active {\n background-color: #2c95f1; }\n.theme-dark app-settings .content .scale-selection .button-block.active .label {\n color: #4db1ff; }\n.theme-gray app-settings .content .scale-selection .button-block.active .label {\n color: #42a5f5; }\n.theme-white app-settings .content .scale-selection .button-block.active .label {\n color: #2c95f1; }\napp-login {\n min-width: inherit; }\n.theme-dark app-sidebar {\n background-color: #171f27; }\n.theme-gray app-sidebar {\n background-color: #1c1e21; }\n.theme-white app-sidebar {\n background-color: white; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-header button {\n color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-header button {\n color: #42a5f5; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-header button {\n color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\n background-color: transparent;\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\n background-color: transparent;\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\n background-color: transparent;\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\n color: #a0a5ab; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\n background-color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\n background-color: #42a5f5; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\n background-color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\n background-color: #2c95f1;\n color: #fefefe; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\n background-color: #343f4a; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\n background-color: #363a3e; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\n background-color: #dcdcdc; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\n background-color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\n background-color: #42a5f5; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\n background-color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\n color: #a0a5ab; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\n background-color: rgba(43, 54, 68, 0.5);\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\n background-color: rgba(37, 40, 43, 0.5);\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\n background-color: #1e88e5;\n color: #ffffff; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\n color: #91baf1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\n background-color: #ffffff;\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\n background-color: #000000;\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\n background-color: #000000;\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\n background-color: #ffffff;\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\n color: #91baf1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\n background-color: rgba(58, 69, 85, 0.5); }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\n background-color: rgba(58, 62, 66, 0.5); }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\n background-color: rgba(240, 240, 240, 0.5); }\n.theme-dark app-sidebar .sidebar-accounts:after {\n background: linear-gradient(to bottom, transparent 0%, #171f27 100%); }\n.theme-gray app-sidebar .sidebar-accounts:after {\n background: linear-gradient(to bottom, transparent 0%, #1c1e21 100%); }\n.theme-white app-sidebar .sidebar-accounts:after {\n background: linear-gradient(to bottom, transparent 0%, white 100%); }\n.theme-dark app-sidebar .sidebar-settings {\n border-bottom: 0.2rem solid #1f2833; }\n.theme-gray app-sidebar .sidebar-settings {\n border-bottom: 0.2rem solid #2e3337; }\n.theme-white app-sidebar .sidebar-settings {\n border-bottom: 0.2rem solid #ebebeb; }\n.theme-dark app-sidebar .sidebar-settings .wrap-button button {\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-settings .wrap-button button {\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-settings .wrap-button button {\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-settings .wrap-button button .icon {\n background-color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-settings .wrap-button button .icon {\n background-color: #42a5f5; }\n.theme-white app-sidebar .sidebar-settings .wrap-button button .icon {\n background-color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-settings .wrap-button.active button {\n background-color: rgba(43, 54, 68, 0.5) !important;\n color: #e0e0e0 !important; }\n.theme-gray app-sidebar .sidebar-settings .wrap-button.active button {\n background-color: rgba(37, 40, 43, 0.5) !important;\n color: #e0e0e0 !important; }\n.theme-white app-sidebar .sidebar-settings .wrap-button.active button {\n background-color: #1e88e5 !important;\n color: #ffffff !important; }\n.theme-dark app-sidebar .sidebar-settings .wrap-button.active button .icon {\n background-color: #4db1ff !important; }\n.theme-gray app-sidebar .sidebar-settings .wrap-button.active button .icon {\n background-color: #42a5f5 !important; }\n.theme-white app-sidebar .sidebar-settings .wrap-button.active button .icon {\n background-color: #ffffff !important; }\n.theme-dark app-sidebar .sidebar-synchronization-status {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-synchronization-status {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-synchronization-status {\n color: #a0a5ab; }\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .offline:before {\n background-color: #ff5252; }\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .offline:before {\n background-color: #ff5252; }\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .offline:before {\n background-color: #ff5252; }\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .online:before {\n background-color: #5cda9d; }\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .online:before {\n background-color: #47cf8d; }\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .online:before {\n background-color: #46c172; }\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar {\n background-color: #343f4a; }\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar {\n background-color: #363a3e; }\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar {\n background-color: #dcdcdc; }\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar .fill {\n background-color: #5cda9d; }\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar .fill {\n background-color: #47cf8d; }\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar .fill {\n background-color: #46c172; }\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .loading {\n background-color: #5cda9d; }\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .loading {\n background-color: #47cf8d; }\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .loading {\n background-color: #46c172; }\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .standard {\n color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .standard {\n color: #42a5f5; }\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .standard {\n color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .important {\n color: #ff6f00; }\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .important {\n color: #ff6f00; }\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .important {\n color: #ff6f00; }\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .critical {\n color: #ff5252; }\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .critical {\n color: #ff5252; }\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .critical {\n color: #ff5252; }\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .time {\n color: #ff6f00; }\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .time {\n color: #ff6f00; }\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .time {\n color: #ff6f00; }\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .icon.standard {\n background-color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .icon.standard {\n background-color: #42a5f5; }\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .icon.standard {\n background-color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .icon.important {\n background-color: #ff6f00; }\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .icon.important {\n background-color: #ff6f00; }\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .icon.important {\n background-color: #ff6f00; }\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .icon.critical {\n background-color: #ff5252; }\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .icon.critical {\n background-color: #ff5252; }\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .icon.critical {\n background-color: #ff5252; }\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .icon.time {\n background-color: #ff6f00; }\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .icon.time {\n background-color: #ff6f00; }\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .icon.time {\n background-color: #ff6f00; }\n.theme-dark app-wallet {\n color: #e0e0e0; }\n.theme-gray app-wallet {\n color: #e0e0e0; }\n.theme-white app-wallet {\n color: #43454b; }\n.theme-dark app-wallet .header button {\n color: #e0e0e0; }\n.theme-gray app-wallet .header button {\n color: #e0e0e0; }\n.theme-white app-wallet .header button {\n color: #43454b; }\n.theme-dark app-wallet .header button .icon {\n background-color: #4db1ff; }\n.theme-gray app-wallet .header button .icon {\n background-color: #42a5f5; }\n.theme-white app-wallet .header button .icon {\n background-color: #2c95f1; }\n.theme-dark app-wallet .header .alias .icon {\n background-color: #4db1ff; }\n.theme-gray app-wallet .header .alias .icon {\n background-color: #42a5f5; }\n.theme-white app-wallet .header .alias .icon {\n background-color: #2c95f1; }\n.theme-dark app-wallet .address {\n color: #4db1ff; }\n.theme-gray app-wallet .address {\n color: #42a5f5; }\n.theme-white app-wallet .address {\n color: #2c95f1; }\n.theme-dark app-wallet .address .icon {\n background-color: #4db1ff; }\n.theme-gray app-wallet .address .icon {\n background-color: #42a5f5; }\n.theme-white app-wallet .address .icon {\n background-color: #2c95f1; }\n.theme-dark app-wallet .tabs .tabs-header .tab {\n background-color: rgba(23, 31, 39, 0.5); }\n.theme-gray app-wallet .tabs .tabs-header .tab {\n background-color: rgba(28, 30, 33, 0.5); }\n.theme-white app-wallet .tabs .tabs-header .tab {\n background-color: rgba(224, 224, 224, 0.5); }\n.theme-dark app-wallet .tabs .tabs-header .tab .icon {\n background-color: #4db1ff; }\n.theme-gray app-wallet .tabs .tabs-header .tab .icon {\n background-color: #42a5f5; }\n.theme-white app-wallet .tabs .tabs-header .tab .icon {\n background-color: #2c95f1; }\n.theme-dark app-wallet .tabs .tabs-header .tab .indicator {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray app-wallet .tabs .tabs-header .tab .indicator {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white app-wallet .tabs .tabs-header .tab .indicator {\n background-color: #ffffff;\n color: #43454b; }\n.theme-dark app-wallet .tabs .tabs-header .tab.active {\n background-color: rgba(43, 54, 68, 0.5); }\n.theme-gray app-wallet .tabs .tabs-header .tab.active {\n background-color: rgba(37, 40, 43, 0.5); }\n.theme-white app-wallet .tabs .tabs-header .tab.active {\n background-color: rgba(255, 255, 255, 0.5); }\n.theme-dark app-wallet .tabs .tabs-header .tab:hover:not(.active):not(.disabled) {\n background-color: rgba(58, 69, 85, 0.5); }\n.theme-gray app-wallet .tabs .tabs-header .tab:hover:not(.active):not(.disabled) {\n background-color: rgba(58, 62, 66, 0.5); }\n.theme-white app-wallet .tabs .tabs-header .tab:hover:not(.active):not(.disabled) {\n background-color: #ffffff; }\n.theme-dark app-wallet .tabs .tabs-content {\n background-color: rgba(43, 54, 68, 0.5); }\n.theme-gray app-wallet .tabs .tabs-content {\n background-color: rgba(37, 40, 43, 0.5); }\n.theme-white app-wallet .tabs .tabs-content {\n background-color: rgba(255, 255, 255, 0.5); }\n.theme-dark app-send .form-send .send-select {\n color: #e0e0e0; }\n.theme-gray app-send .form-send .send-select {\n color: #e0e0e0; }\n.theme-white app-send .form-send .send-select {\n color: #43454b; }\n.theme-dark app-send .form-send .send-select .icon {\n background-color: #4db1ff; }\n.theme-gray app-send .form-send .send-select .icon {\n background-color: #42a5f5; }\n.theme-white app-send .form-send .send-select .icon {\n background-color: #2c95f1; }\n.theme-dark app-send .form-send .additional-details {\n border: 0.2rem solid #2b3644; }\n.theme-gray app-send .form-send .additional-details {\n border: 0.2rem solid #2f3438; }\n.theme-white app-send .form-send .additional-details {\n border: 0.2rem solid #ebebeb; }\n.theme-dark app-receive .btn-copy-address {\n background-color: #4db1ff; }\n.theme-gray app-receive .btn-copy-address {\n background-color: #42a5f5; }\n.theme-white app-receive .btn-copy-address {\n background-color: #2c95f1; }\n.theme-dark app-history table tbody tr.locked-transaction {\n color: #556576; }\n.theme-gray app-history table tbody tr.locked-transaction {\n color: #565c62; }\n.theme-white app-history table tbody tr.locked-transaction {\n color: #a0a5ab; }\n.theme-dark app-history table tbody tr:nth-child(4n+1) {\n background-color: #18202a; }\n.theme-gray app-history table tbody tr:nth-child(4n+1) {\n background-color: #25292d; }\n.theme-white app-history table tbody tr:nth-child(4n+1) {\n background-color: #ffffff; }\n.theme-dark app-history table tbody tr:nth-child(4n+2) {\n background-color: #18202a; }\n.theme-gray app-history table tbody tr:nth-child(4n+2) {\n background-color: #25292d; }\n.theme-white app-history table tbody tr:nth-child(4n+2) {\n background-color: #ffffff; }\n.theme-dark app-history table tbody tr:nth-child(4n+3) {\n background-color: transparent; }\n.theme-gray app-history table tbody tr:nth-child(4n+3) {\n background-color: transparent; }\n.theme-white app-history table tbody tr:nth-child(4n+3) {\n background-color: transparent; }\n.theme-dark app-history table tbody tr:nth-child(4n+4) {\n background-color: transparent; }\n.theme-gray app-history table tbody tr:nth-child(4n+4) {\n background-color: transparent; }\n.theme-white app-history table tbody tr:nth-child(4n+4) {\n background-color: transparent; }\n.theme-dark app-history table tbody tr .status .confirmation {\n background-color: #343f4a; }\n.theme-gray app-history table tbody tr .status .confirmation {\n background-color: #363a3e; }\n.theme-white app-history table tbody tr .status .confirmation {\n background-color: #dcdcdc; }\n.theme-dark app-history table tbody tr .status .confirmation .fill {\n background-color: #5cda9d; }\n.theme-gray app-history table tbody tr .status .confirmation .fill {\n background-color: #47cf8d; }\n.theme-white app-history table tbody tr .status .confirmation .fill {\n background-color: #46c172; }\n.theme-dark app-history table tbody tr .lock-transaction {\n background-color: #ff6f00; }\n.theme-gray app-history table tbody tr .lock-transaction {\n background-color: #ff6f00; }\n.theme-white app-history table tbody tr .lock-transaction {\n background-color: #ff6f00; }\n.theme-dark app-history table tbody tr .status.send .status-transaction {\n background-color: #ff5252; }\n.theme-gray app-history table tbody tr .status.send .status-transaction {\n background-color: #ff5252; }\n.theme-white app-history table tbody tr .status.send .status-transaction {\n background-color: #ff5252; }\n.theme-dark app-history table tbody tr .status.received .status-transaction {\n background-color: #5cda9d; }\n.theme-gray app-history table tbody tr .status.received .status-transaction {\n background-color: #47cf8d; }\n.theme-white app-history table tbody tr .status.received .status-transaction {\n background-color: #46c172; }\n.theme-dark app-contracts .wrap-table .contract .icon.new, .theme-dark app-contracts .wrap-table .contract .icon.alert {\n background-color: #ff5252; }\n.theme-gray app-contracts .wrap-table .contract .icon.new, .theme-gray app-contracts .wrap-table .contract .icon.alert {\n background-color: #ff5252; }\n.theme-white app-contracts .wrap-table .contract .icon.new, .theme-white app-contracts .wrap-table .contract .icon.alert {\n background-color: #ff5252; }\n.theme-dark app-contracts .wrap-table .contract .icon.purchase, .theme-dark app-contracts .wrap-table .contract .icon.sell {\n background-color: #4db1ff; }\n.theme-gray app-contracts .wrap-table .contract .icon.purchase, .theme-gray app-contracts .wrap-table .contract .icon.sell {\n background-color: #42a5f5; }\n.theme-white app-contracts .wrap-table .contract .icon.purchase, .theme-white app-contracts .wrap-table .contract .icon.sell {\n background-color: #2c95f1; }\n.theme-dark app-purchase .form-purchase .purchase-select {\n color: #e0e0e0; }\n.theme-gray app-purchase .form-purchase .purchase-select {\n color: #e0e0e0; }\n.theme-white app-purchase .form-purchase .purchase-select {\n color: #43454b; }\n.theme-dark app-purchase .form-purchase .purchase-select .icon {\n background-color: #4db1ff; }\n.theme-gray app-purchase .form-purchase .purchase-select .icon {\n background-color: #42a5f5; }\n.theme-white app-purchase .form-purchase .purchase-select .icon {\n background-color: #2c95f1; }\n.theme-dark app-purchase .form-purchase .purchase-states {\n color: #4db1ff; }\n.theme-gray app-purchase .form-purchase .purchase-states {\n color: #42a5f5; }\n.theme-white app-purchase .form-purchase .purchase-states {\n color: #2c95f1; }\n.theme-dark app-purchase .form-purchase .additional-details {\n border: 0.2rem solid #2b3644; }\n.theme-gray app-purchase .form-purchase .additional-details {\n border: 0.2rem solid #2f3438; }\n.theme-white app-purchase .form-purchase .additional-details {\n border: 0.2rem solid #ebebeb; }\n.theme-dark app-purchase .progress-bar-container .progress-bar {\n background-color: #343f4a; }\n.theme-gray app-purchase .progress-bar-container .progress-bar {\n background-color: #363a3e; }\n.theme-white app-purchase .progress-bar-container .progress-bar {\n background-color: #dcdcdc; }\n.theme-dark app-purchase .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #5cda9d; }\n.theme-gray app-purchase .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #47cf8d; }\n.theme-white app-purchase .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #46c172; }\napp-messages table tbody tr td:first-child span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap; }\n.theme-dark app-messages table tbody tr td:first-child .icon {\n background-color: #ff5252; }\n.theme-gray app-messages table tbody tr td:first-child .icon {\n background-color: #ff5252; }\n.theme-white app-messages table tbody tr td:first-child .icon {\n background-color: #ff5252; }\n.theme-dark app-typing-message .head .interlocutor {\n color: #4db1ff; }\n.theme-gray app-typing-message .head .interlocutor {\n color: #42a5f5; }\n.theme-white app-typing-message .head .interlocutor {\n color: #2c95f1; }\n.theme-dark app-typing-message .messages-content .messages-list div.date {\n color: #556576; }\n.theme-gray app-typing-message .messages-content .messages-list div.date {\n color: #565c62; }\n.theme-white app-typing-message .messages-content .messages-list div.date {\n color: #a0a5ab; }\n.theme-dark app-typing-message .messages-content .messages-list div.my {\n background-color: #2a3544; }\n.theme-gray app-typing-message .messages-content .messages-list div.my {\n background-color: #30363c; }\n.theme-white app-typing-message .messages-content .messages-list div.my {\n background-color: #fff; }\napp-typing-message .messages-content .messages-list div.my:before {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: -1.1rem;\n border: 1.2rem solid transparent; }\n.theme-dark app-typing-message .messages-content .messages-list div.my:before {\n border-top-color: #2a3544; }\n.theme-gray app-typing-message .messages-content .messages-list div.my:before {\n border-top-color: #30363c; }\n.theme-white app-typing-message .messages-content .messages-list div.my:before {\n border-top-color: #fff; }\n.theme-dark app-typing-message .messages-content .messages-list div.buddy {\n background-color: #18202a; }\n.theme-gray app-typing-message .messages-content .messages-list div.buddy {\n background-color: #25292d; }\n.theme-white app-typing-message .messages-content .messages-list div.buddy {\n background-color: #ededed; }\napp-typing-message .messages-content .messages-list div.buddy:after {\n content: \"\";\n display: block;\n position: absolute;\n right: -1.1rem;\n top: 0;\n border: 1.2rem solid transparent; }\n.theme-dark app-typing-message .messages-content .messages-list div.buddy:after {\n border-top-color: #18202a; }\n.theme-gray app-typing-message .messages-content .messages-list div.buddy:after {\n border-top-color: #25292d; }\n.theme-white app-typing-message .messages-content .messages-list div.buddy:after {\n border-top-color: #ededed; }\n.theme-dark app-staking .chart-header .general .label {\n color: #556576; }\n.theme-gray app-staking .chart-header .general .label {\n color: #565c62; }\n.theme-white app-staking .chart-header .general .label {\n color: #a0a5ab; }\n.theme-dark app-staking .chart-header .general .options {\n color: #e0e0e0; }\n.theme-gray app-staking .chart-header .general .options {\n color: #e0e0e0; }\n.theme-white app-staking .chart-header .general .options {\n color: #43454b; }\napp-staking .chart-header .selected {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n flex-grow: 1;\n font-size: 1.6rem; }\n.theme-dark app-staking .chart-options .title {\n color: #556576; }\n.theme-gray app-staking .chart-options .title {\n color: #565c62; }\n.theme-white app-staking .chart-options .title {\n color: #a0a5ab; }\n.theme-dark app-staking .chart-options .options button {\n color: #e0e0e0;\n background-color: #2b3644; }\n.theme-gray app-staking .chart-options .options button {\n color: #e0e0e0;\n background-color: #292d31; }\n.theme-white app-staking .chart-options .options button {\n color: #43454b;\n background-color: #e0e0e0; }\n.theme-dark app-staking .chart-options .options button.active {\n background-color: #556576; }\n.theme-gray app-staking .chart-options .options button.active {\n background-color: #515960; }\n.theme-white app-staking .chart-options .options button.active {\n background-color: #ffffff; }\n.input-block-alias {\n position: relative; }\n.input-block-alias .alias-dropdown {\n position: absolute;\n top: 6.5rem;\n max-height: 10rem;\n overflow: auto;\n width: 100%; }\n.theme-dark .input-block-alias .alias-dropdown {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray .input-block-alias .alias-dropdown {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white .input-block-alias .alias-dropdown {\n background-color: #e6e6e6;\n color: #43454b; }\n.input-block-alias .alias-dropdown div {\n font-size: 1.4rem;\n padding: 1rem; }\n.theme-dark .input-block-alias .alias-dropdown div:hover {\n background-color: rgba(58, 69, 85, 0.5); }\n.theme-gray .input-block-alias .alias-dropdown div:hover {\n background-color: rgba(58, 62, 66, 0.5); }\n.theme-white .input-block-alias .alias-dropdown div:hover {\n background-color: rgba(240, 240, 240, 0.5); }\n.head {\n display: flex;\n align-items: flex-end;\n justify-content: space-between;\n font-size: 1.3rem;\n padding: 0 3rem;\n width: 100%;\n height: 3rem; }\n.theme-dark .head {\n color: #4db1ff; }\n.theme-gray .head {\n color: #42a5f5; }\n.theme-white .head {\n color: #2c95f1; }\n.head .breadcrumbs > span:not(:last-child), .head .breadcrumbs a:not(:last-child) {\n position: relative;\n cursor: pointer;\n margin-right: 20px;\n outline-style: none; }\n.head .breadcrumbs > span:not(:last-child):after, .head .breadcrumbs a:not(:last-child):after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0.5rem;\n right: -1.5rem;\n width: 0.9rem;\n height: 0.9rem;\n -webkit-mask: url('arrow-right.svg') no-repeat center;\n mask: url('arrow-right.svg') no-repeat center;\n -webkit-mask-size: cover;\n mask-size: cover; }\n.theme-dark .head .breadcrumbs > span:not(:last-child):after, .theme-dark .head .breadcrumbs a:not(:last-child):after {\n background-color: #4db1ff; }\n.theme-gray .head .breadcrumbs > span:not(:last-child):after, .theme-gray .head .breadcrumbs a:not(:last-child):after {\n background-color: #42a5f5; }\n.theme-white .head .breadcrumbs > span:not(:last-child):after, .theme-white .head .breadcrumbs a:not(:last-child):after {\n background-color: #2c95f1; }\n.head .back-btn {\n display: flex;\n align-items: center;\n background-color: transparent;\n color: #4db1ff;\n font-size: inherit;\n font-weight: 400;\n line-height: 1.3rem;\n padding: 0;\n height: auto; }\n.head .back-btn .icon {\n margin-right: 0.7rem;\n -webkit-mask: url('back.svg') no-repeat center;\n mask: url('back.svg') no-repeat center;\n width: 0.9rem;\n height: 0.9rem; }\n.theme-dark .head .back-btn .icon {\n background-color: #4db1ff; }\n.theme-gray .head .back-btn .icon {\n background-color: #42a5f5; }\n.theme-white .head .back-btn .icon {\n background-color: #2c95f1; }\n.scrolled-content::-webkit-scrollbar {\n background-color: transparent;\n cursor: default;\n width: 1rem;\n height: 1rem; }\n.scrolled-content::-webkit-scrollbar-track {\n background: transparent; }\n.scrolled-content::-webkit-scrollbar-thumb {\n background-color: #556576;\n background-clip: padding-box;\n border: 0.25rem solid transparent;\n border-radius: 0.5rem; }\n.scrolled-content::-webkit-scrollbar-thumb:hover {\n background-color: #556576; }\ntable {\n font-size: 1.3rem;\n width: 100%; }\ntable thead {\n text-align: left; }\n.theme-dark table thead {\n color: #556576; }\n.theme-gray table thead {\n color: #565c62; }\n.theme-white table thead {\n color: #a0a5ab; }\ntable thead tr {\n height: 4rem; }\ntable thead tr th {\n padding: 1rem;\n vertical-align: bottom; }\ntable thead tr th:first-child {\n padding-left: 3rem; }\ntable thead tr th:last-child {\n padding-right: 3rem; }\ntable tbody {\n text-align: left; }\n.theme-dark table tbody {\n color: #e0e0e0; }\n.theme-gray table tbody {\n color: #e0e0e0; }\n.theme-white table tbody {\n color: #43454b; }\ntable tbody tr {\n height: 3.5rem; }\n.theme-dark table tbody tr:nth-child(odd) {\n background-color: #18202a; }\n.theme-gray table tbody tr:nth-child(odd) {\n background-color: #25292d; }\n.theme-white table tbody tr:nth-child(odd) {\n background-color: #ffffff; }\ntable tbody tr td {\n line-height: 1.7rem;\n padding: 0 1rem;\n vertical-align: middle;\n white-space: nowrap;\n max-width: 20rem; }\ntable tbody tr td:first-child {\n padding-left: 3rem; }\ntable tbody tr td:last-child {\n padding-right: 3rem; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-Light.ttf');\n font-weight: 300; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-Regular.ttf');\n font-weight: 400; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-SemiBold.ttf');\n font-weight: 600; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-Bold.ttf');\n font-weight: 700; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-ExtraBold.ttf');\n font-weight: 800; }\nhtml {\n font-family: OpenSans, sans-serif;\n font-size: 10px; }\nbody {\n font-family: OpenSans, sans-serif;\n font-size: 1.6rem;\n width: 100vw;\n height: 100vh; }\nbody.theme-dark {\n background: #131921 url('background-dark.png') no-repeat center;\n background-size: cover; }\nbody.theme-gray {\n background: #101417 url('background-gray.png') no-repeat center;\n background-size: cover; }\nbody.theme-white {\n background: #eeeeee url('background-white.png') no-repeat center;\n background-size: cover; }\nbody app-root {\n display: flex;\n width: 100%;\n height: 100%; }\n.update-tooltip .tooltip-inner .icon {\n -webkit-mask: url('update-alert.svg') no-repeat center;\n mask: url('update-alert.svg') no-repeat center; }\n\r\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxiYXNlXFxfbWl4aW5zLnNjc3MiLCJzcmMvc3R5bGVzLnNjc3MiLCJub2RlX21vZHVsZXMvQG5nLXNlbGVjdC9uZy1zZWxlY3QvdGhlbWVzL2RlZmF1bHQudGhlbWUuY3NzIiwic3JjL0Q6XFxQcm9qZWN0c1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXGJhc2VcXF9udWxsLnNjc3MiLCJzcmMvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcYmFzZVxcX2Jhc2Uuc2NzcyIsInNyYy9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxiYXNlXFxfdGhlbWUuc2NzcyIsInNyYy9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxsYXlvdXRcXF9tYWluLnNjc3MiLCJzcmMvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcbGF5b3V0XFxfc2lkZWJhci5zY3NzIiwic3JjL0Q6XFxQcm9qZWN0c1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXGxheW91dFxcX3dhbGxldC5zY3NzIiwic3JjL0Q6XFxQcm9qZWN0c1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXG1vZHVsZXNcXF9oZWFkLnNjc3MiLCJzcmMvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcbW9kdWxlc1xcX3Njcm9sbC5zY3NzIiwic3JjL0Q6XFxQcm9qZWN0c1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXG1vZHVsZXNcXF90YWJsZS5zY3NzIiwic3JjL0Q6XFxQcm9qZWN0c1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxzdHlsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4RUE7O0NDNUVDO0FDRkQsaURBQWlELGVBQWUsQ0FBQyxpQ0FBaUM7QUFBQyx1REFBdUQsZUFBZTtBQUFDLDJEQUEyRCxRQUFRLENBQUMseUNBQXlDLENBQUMsc0JBQXNCO0FBQUMsaUVBQWlFLHlDQUF5QztBQUFDLGtFQUFrRSw0QkFBNEIsQ0FBQywyQkFBMkI7QUFBQywrREFBK0QseUJBQXlCLENBQUMsd0JBQXdCO0FBQUMseUVBQXlFLG9CQUFvQixDQUFDLDBFQUEwRTtBQUFDLG1EQUFtRCx3QkFBd0I7QUFBQyx5Q0FBeUMsWUFBWTtBQUFDLGdDQUFnQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsa0JBQWtCO0FBQUMsc0NBQXNDLG1DQUFtQztBQUFDLG9EQUFvRCxrQkFBa0IsQ0FBQyxpQkFBaUI7QUFBQyxnRUFBZ0Usa0JBQWtCLENBQUMsY0FBYztBQUFDLG9FQUFvRSxVQUFVO0FBQUMsaURBQWlELFdBQVc7QUFBQywrRUFBK0UsT0FBTyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0I7QUFBQywyRkFBMkYsa0JBQWtCLENBQUMsaUJBQWlCO0FBQUMsb0dBQW9HLHdCQUF3QixDQUFDLHdCQUF3QjtBQUFDLG9IQUFvSCxhQUFhO0FBQUMsdUVBQXVFLGVBQWUsQ0FBQyxnQkFBZ0I7QUFBQyxtRkFBbUYsaUJBQWlCLENBQUMsY0FBYztBQUFDLGlG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d0JnQztJRHZCaEMsY0NpQjJCLEVBQUE7QUxrQjdCO0lJcENFLHlCQ2dGZ0M7SUQvRWhDLGNDeUUyQixFQUFBO0FMdEM3QjtJSTdCSSx5QkN0Q3lCLEVBQUE7QUxtRTdCO0lJN0JJLHlCQ2tCeUIsRUFBQTtBTFc3QjtJSTdCSSx5QkMwRXlCLEVBQUE7QUw3QzdCO0lJdEJJLHlCQzVDeUIsRUFBQTtBTGtFN0I7SUl0QkkseUJDWXlCLEVBQUE7QUxVN0I7SUl0QkkseUJDb0V5QixFQUFBO0FMOUM3QjtJSWRFLHlCQ2hEaUM7SURpRGpDLGNDN0QyQixFQUFBO0FMMEU3QjtJSWRFLHlCQ1FpQztJRFBqQyxjQ0wyQixFQUFBO0FMa0I3QjtJSWRFLHlCQ2dFaUM7SUQvRGpDLGNDbUQyQixFQUFBO0FMdEM3QjtJSVBJLHlCQ3REMEIsRUFBQTtBTDZEOUI7SUlQSSx5QkNFMEIsRUFBQTtBTEs5QjtJSVBJLHlCQzBEMEIsRUFBQTtBTG5EOUI7SUlBSSx5QkM1RDBCLEVBQUE7QUw0RDlCO0lJQUkseUJDSjBCLEVBQUE7QUxJOUI7SUlBSSx5QkNvRDBCLEVBQUE7QUxwRDlCO0lJUUUseUJDbkVxQztJRG9FckMsY0NuRjJCLEVBQUE7QUwwRTdCO0lJUUUseUJDWHFDO0lEWXJDLGNDM0IyQixFQUFBO0FMa0I3QjtJSVFFLHlCQzZDcUM7SUQ1Q3JDLGNDNkIyQixFQUFBO0FMdEM3QjtJSWVJLHlCQ3pFOEIsRUFBQTtBTDBEbEM7SUllSSx5QkNqQjhCLEVBQUE7QUxFbEM7SUllSSx5QkN1QzhCLEVBQUE7QUx0RGxDO0lJc0JJLHlCQy9FOEIsRUFBQTtBTHlEbEM7SUlzQkkseUJDdkI4QixFQUFBO0FMQ2xDO0lJc0JJLHlCQ2lDOEIsRUFBQTtBRDdIdEM7SUFrR0ksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUIsRUFBQTtBSjlCdkI7TUlpQ0UsNkJBQTZCO01BQzdCLDRCQzFGbUM7TUQyRm5DLGNDOUdvQixFQUFBO0FMMkV0QjtNSWlDRSw2QkFBNkI7TUFDN0IsNEJDbENtQztNRG1DbkMsY0N0RG9CLEVBQUE7QUxt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cUIyQjtJRG9xQjNCLGNDM3NCa0IsRUFBQTtBTG1CdEI7SUl1ckJJLHlCQzNtQjJCO0lENG1CM0IsY0NucEJrQixFQUFBO0FEeXBCMUI7RUFHSSxXQUFXLEVBQUE7QUFIZjtJQU1NLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsZUFBZTtJQUNmLGNBQWMsRUFBQTtBSjFzQmhCO01JNnNCSSx5QkNwd0J5QjtNRHF3QnpCLGNDenhCa0IsRUFBQTtBTDJFdEI7TUk2c0JJLHlCQzVzQnlCO01ENnNCekIsY0NqdUJrQixFQUFBO0FMbUJ0QjtNSTZzQkkseUJDcHBCeUI7TURxcEJ6QixjQ3pxQmtCLEVBQUE7QUR5cEIxQjtNQW9CUSxVQUFVLEVBQUE7QUFwQmxCO1FBdUJVLFNBQVMsRUFBQTtBQXZCbkI7SUE2Qk0sWUFBWSxFQUFBO0FKM3RCZDtNSTh0QkkseUJDcnhCeUIsRUFBQTtBTHVEN0I7TUk4dEJJLHlCQzd0QnlCLEVBQUE7QUxEN0I7TUk4dEJJLHlCQ3JxQnlCLEVBQUE7QURxb0JqQztNQXNDVSxpQkFBaUI7TUFDakIsYUFBYSxFQUFBO0FKcnVCbkI7UUl3dUJRLHlCQy94QnFCO1FEZ3lCckIsY0NwekJjLEVBQUE7QUwyRXRCO1FJd3VCUSx5QkN2dUJxQjtRRHd1QnJCLGNDNXZCYyxFQUFBO0FMbUJ0QjtRSXd1QlEseUJDL3FCcUI7UURnckJyQixjQ3BzQmMsRUFBQTtBTHJDdEI7UUkrdUJVLHVDQ3J5QjZCO1FEc3lCN0IsY0MzekJZLEVBQUE7QUwyRXRCO1FJK3VCVSx1Q0M3dUI2QjtRRDh1QjdCLGNDbndCWSxFQUFBO0FMbUJ0QjtRSSt1QlUsMENDcnJCZ0M7UURzckJoQyxjQzNzQlksRUFBQTtBTHJDdEI7UUl1dkJVLHVDQzV5QmdDO1FENnlCaEMsY0NuMEJZLEVBQUE7QUwyRXRCO1FJdXZCVSx1Q0NwdkJnQztRRHF2QmhDLGNDM3dCWSxFQUFBO0FMbUJ0QjtRSXV2QlUsMENDNXJCbUM7UUQ2ckJuQyxjQ250QlksRUFBQTtBRHlwQjFCO01BZ0VVLDZCQUE2QjtNQUM3QixlQUFlO01BQ2YsV0FBVztNQUNYLFlBQVksRUFBQTtBQW5FdEI7TUF1RVUsdUJBQXVCLEVBQUE7QUF2RWpDO01BMkVVLHlCQUF5QjtNQUN6Qiw0QkFBNEI7TUFDNUIsaUNBQWlDO01BQ2pDLHFCQUFxQixFQUFBO0FBOUUvQjtNQWtGVSx5QkFBeUIsRUFBQTtBSmh4Qi9CO0VJNHhCRSxzQ0N6ekIwRDtFRDB6QjFELGNDeDJCb0IsRUFBQTtBTDJFdEI7RUk0eEJFLHNDQ2p3QjBEO0VEa3dCMUQsY0NoekJvQixFQUFBO0FMbUJ0QjtFSTR4QkUsdUNDenNCMkQ7RUQwc0IzRCxjQ3h2Qm9CLEVBQUE7QUxyQ3RCO0VJcXlCTSx5QkMxMkJlLEVBQUE7QUxxRXJCO0VJcXlCTSx5QkNsekJlLEVBQUE7QUxhckI7RUlxeUJNLHlCQzF2QmUsRUFBQTtBTDNDckI7RUk0eUJNLHlCQ24zQmlCLEVBQUE7QUx1RXZCO0VJNHlCTSx5QkMzekJpQixFQUFBO0FMZXZCO0VJNHlCTSx5QkNud0JpQixFQUFBO0FMekN2QjtFSW16Qk0seUJDMzNCZ0IsRUFBQTtBTHdFdEI7RUltekJNLHlCQ24wQmdCLEVBQUE7QUxnQnRCO0VJbXpCTSx5QkMzd0JnQixFQUFBO0FMeEN0QjtFSTJ6QkkseUJDbjRCa0I7RURvNEJsQixjQ3Q0QnlCLEVBQUE7QUwwRTdCO0VJMnpCSSx5QkMzMEJrQjtFRDQwQmxCLGNDOTBCeUIsRUFBQTtBTGtCN0I7RUkyekJJLHlCQ254QmtCO0VEb3hCbEIsY0N0eEJ5QixFQUFBO0FMdEM3QjtFSXEwQk0seUJDajJCbUIsRUFBQTtBTDRCekI7RUlxMEJNLHlCQ3p5Qm1CLEVBQUE7QUw1QnpCO0VJcTBCTSx5QkNqdkJtQixFQUFBO0FMcEZ6QjtFSWkxQkUsZ0NDejRCbUMsRUFBQTtBTHdEckM7RUlpMUJFLGdDQ2oxQm1DLEVBQUE7QUxBckM7RUlpMUJFLGdDQ3p4Qm1DLEVBQUE7QUx4RHJDO0VJMjFCUSxjQ3A2QmtCLEVBQUE7QUx5RTFCO0VJMjFCUSxjQzUyQmtCLEVBQUE7QUxpQjFCO0VJMjFCUSxjQ3B6QmtCLEVBQUE7QUx2QzFCO0VJazJCUSxjQzc2QmMsRUFBQTtBTDJFdEI7RUlrMkJRLGNDcjNCYyxFQUFBO0FMbUJ0QjtFSWsyQlEsY0M3ekJjLEVBQUE7QUxyQ3RCO0VJeTJCUSxjQ2o3QmMsRUFBQTtBTHdFdEI7RUl5MkJRLGNDejNCYyxFQUFBO0FMZ0J0QjtFSXkyQlEsY0NqMEJjLEVBQUE7QUx4Q3RCO0VJczNCRSxjQ2o4Qm9CLEVBQUE7QUwyRXRCO0VJczNCRSxjQ3o0Qm9CLEVBQUE7QUxtQnRCO0VJczNCRSxjQ2oxQm9CLEVBQUE7QUxyQ3RCO0VJNDNCSSx5QkNuNkIrQixFQUFBO0FMdUNuQztFSTQzQkkseUJDMzJCK0IsRUFBQTtBTGpCbkM7RUk0M0JJLHlCQ256QitCLEVBQUE7QUx6RW5DO0VJazRCTSx5QkN4NkJpQyxFQUFBO0FMc0N2QztFSWs0Qk0seUJDaDNCaUMsRUFBQTtBTGxCdkM7RUlrNEJNLHlCQ3h6QmlDLEVBQUE7QUwxRXZDO0VJODRCRSxzQ0MzNkIwRDtFRDQ2QjFELGNDMTlCb0IsRUFBQTtBTDJFdEI7RUk4NEJFLHNDQ24zQjBEO0VEbzNCMUQsY0NsNkJvQixFQUFBO0FMbUJ0QjtFSTg0QkUsdUNDM3pCMkQ7RUQ0ekIzRCxjQzEyQm9CLEVBQUE7QUN4SDFCO0VBQ0UsY0FBYztFQUNkLGFBQWE7RUFDYixnQkFBZ0IsRUFBQTtBQUhsQjtJQU1JLGtCQUFrQjtJQUNsQixhQUFhO0lBQ2IsZ0JBQWdCLEVBQUE7QU4yRWhCO01NeEVFLHVDREoyQztNQ0szQyxjREpvQixFQUFBO0FMMkV0QjtNTXhFRSx1Q0RvRDJDO01DbkQzQyxjRG9Eb0IsRUFBQTtBTG1CdEI7TU14RUUsMENENEc4QztNQzNHOUMsY0Q0R29CLEVBQUE7QUN4SDFCO01BZ0JNLGtCQUFrQjtNQUNsQixNQUFNO01BQ04sT0FBTyxFQUFBO0FOaUVUO0VNbkRNLGNEckJnQixFQUFBO0FMd0V0QjtFTW5ETSxjRG1DZ0IsRUFBQTtBTGdCdEI7RU1uRE0sY0QyRmdCLEVBQUE7QUx4Q3RCO0VNN0NRLHlCRDNCYyxFQUFBO0FMd0V0QjtFTTdDUSx5QkQ2QmMsRUFBQTtBTGdCdEI7RU03Q1EseUJEcUZjLEVBQUE7QUx4Q3RCO0VNaENFLHlCRHZCMkI7RUN3QjNCLGNENUNvQixFQUFBO0FMMkV0QjtFTWhDRSx5QkRpQzJCO0VDaEMzQixjRFlvQixFQUFBO0FMbUJ0QjtFTWhDRSx5QkR5RjJCO0VDeEYzQixjRG9Fb0IsRUFBQTtBTHJDdEI7RU1yQkUseUJEbEMyQixFQUFBO0FMdUQ3QjtFTXJCRSx5QkRzQjJCLEVBQUE7QUxEN0I7RU1yQkUseUJEOEUyQixFQUFBO0FDekVqQztFQUdJLFlBQVk7RUFDWixnQkFBZ0I7RUFDaEIsYUFBYTtFQUNiLDhCQUE4QjtFQUM5QixzQkFBc0IsRUFBQTtBTlN0QjtJTUpJLGNEckVzQixFQUFBO0FMeUUxQjtJTUpJLGNEYnNCLEVBQUE7QUxpQjFCO0lNSkksY0QyQ3NCLEVBQUE7QUx2QzFCO0lNS00sdUNEakQyQyxFQUFBO0FMNENqRDtJTUtNLHVDRE8yQyxFQUFBO0FMWmpEO0lNS00sMENEK0Q4QyxFQUFBO0FMcEVwRDtJTVdRLGNEcEZrQixFQUFBO0FMeUUxQjtJTVdRLGNENUJrQixFQUFBO0FMaUIxQjtJTVdRLGNENEJrQixFQUFBO0FMdkMxQjtJTWtCUSx5QkQxRmMsRUFBQTtBTHdFdEI7SU1rQlEseUJEbENjLEVBQUE7QUxnQnRCO0lNa0JRLHlCRHNCYyxFQUFBO0FMeEN0QjtJTXdCVSxjRGhHWSxFQUFBO0FMd0V0QjtJTXdCVSxjRHhDWSxFQUFBO0FMZ0J0QjtJTXdCVSxjRGdCWSxFQUFBO0FDUDFCO0VBQ0Usa0JBQWtCLEVBQUE7QU5sQ2hCO0VPaEZBLHlCRkEyQyxFQUFBO0FMZ0YzQztFT2hGQSx5QkZ3RDJDLEVBQUE7QUx3QjNDO0VPaEZBLHVCRmdIOEMsRUFBQTtBTGhDOUM7RU90RU0sY0ZMZ0IsRUFBQTtBTDJFdEI7RU90RU0sY0ZtRGdCLEVBQUE7QUxtQnRCO0VPdEVNLGNGMkdnQixFQUFBO0FMckN0QjtFTy9ETSxjRlRnQixFQUFBO0FMd0V0QjtFTy9ETSxjRitDZ0IsRUFBQTtBTGdCdEI7RU8vRE0sY0Z1R2dCLEVBQUE7QUx4Q3RCO0VPckRNLDZCQUE2QjtFQUM3QixjRnZCZ0IsRUFBQTtBTDJFdEI7RU9yRE0sNkJBQTZCO0VBQzdCLGNGaUNnQixFQUFBO0FMbUJ0QjtFT3JETSw2QkFBNkI7RUFDN0IsY0Z5RmdCLEVBQUE7QUxyQ3RCO0VPNUNVLGNGN0JnQixFQUFBO0FMeUUxQjtFTzVDVSxjRjJCZ0IsRUFBQTtBTGlCMUI7RU81Q1UsY0ZtRmdCLEVBQUE7QUx2QzFCO0VPckNVLHlCRm5DWSxFQUFBO0FMd0V0QjtFT3JDVSx5QkZxQlksRUFBQTtBTGdCdEI7RU9yQ1UseUJGNkVZLEVBQUE7QUx4Q3RCO0VPOUJVLHlCRnRDd0I7RUV1Q3hCLGNGN0NtQixFQUFBO0FMMEU3QjtFTzlCVSx5QkZrQndCO0VFakJ4QixjRldtQixFQUFBO0FMa0I3QjtFTzlCVSx5QkYwRXdCO0VFekV4QixjRm1FbUIsRUFBQTtBTHRDN0I7RU9wQlkseUJGbkJ1QixFQUFBO0FMdUNuQztFT3BCWSx5QkZxQ3VCLEVBQUE7QUxqQm5DO0VPcEJZLHlCRjZGdUIsRUFBQTtBTHpFbkM7RU9kYyx5QkYxRFEsRUFBQTtBTHdFdEI7RU9kYyx5QkZGUSxFQUFBO0FMZ0J0QjtFT2RjLHlCRnNEUSxFQUFBO0FMeEN0QjtFT0xVLGNGcEVnQixFQUFBO0FMeUUxQjtFT0xVLGNGWmdCLEVBQUE7QUxpQjFCO0VPTFUsY0Y0Q2dCLEVBQUE7QUx2QzFCO0VPR1EsdUNGdERxQztFRXVEckMsY0ZyRHFCLEVBQUE7QUxpRDdCO0VPR1EsdUNGRXFDO0VFRHJDLGNGR3FCLEVBQUE7QUxQN0I7RU9HUSx5QkYwRHFDO0VFekRyQyxjRjJEcUIsRUFBQTtBTC9EN0I7RU9ZWSxjRjVEcUIsRUFBQTtBTGdEakM7RU9ZWSxjRkpxQixFQUFBO0FMUmpDO0VPWVksY0ZvRHFCLEVBQUE7QUxoRWpDO0VPbUJZLHlCRmhFNEI7RUVpRTVCLGNGbkVzQixFQUFBO0FMK0NsQztFT21CWSx5QkZSNEI7RUVTNUIsY0ZYc0IsRUFBQTtBTFRsQztFT21CWSx5QkZnRDRCO0VFL0M1QixjRjZDc0IsRUFBQTtBTGpFbEM7RU8yQlkseUJGekV5QjtFRTBFekIsY0Z2R1UsRUFBQTtBTDJFdEI7RU8yQlkseUJGakJ5QjtFRWtCekIsY0YvQ1UsRUFBQTtBTG1CdEI7RU8yQlkseUJGdUN5QjtFRXRDekIsY0ZTVSxFQUFBO0FMckN0QjtFT21DWSxjRm5GcUIsRUFBQTtBTGdEakM7RU9tQ1ksY0YzQnFCLEVBQUE7QUxSakM7RU9tQ1ksY0Y2QnFCLEVBQUE7QUxoRWpDO0VPNENRLHVDRjlGMEMsRUFBQTtBTGtEbEQ7RU80Q1EsdUNGdEMwQyxFQUFBO0FMTmxEO0VPNENRLDBDRmtCNkMsRUFBQTtBTDlEckQ7RU9xREksb0VBQTJGLEVBQUE7QVByRC9GO0VPcURJLG9FQUEyRixFQUFBO0FQckQvRjtFT3FESSxrRUFBMkYsRUFBQTtBUHJEL0Y7RU82REUsbUNGNUl5QixFQUFBO0FMK0UzQjtFTzZERSxtQ0ZwRnlCLEVBQUE7QUx1QjNCO0VPNkRFLG1DRjVCeUIsRUFBQTtBTGpDM0I7RU9xRU0sY0ZoSmdCLEVBQUE7QUwyRXRCO0VPcUVNLGNGeEZnQixFQUFBO0FMbUJ0QjtFT3FFTSxjRmhDZ0IsRUFBQTtBTHJDdEI7RU8yRVEseUJGbkpjLEVBQUE7QUx3RXRCO0VPMkVRLHlCRjNGYyxFQUFBO0FMZ0J0QjtFTzJFUSx5QkZuQ2MsRUFBQTtBTHhDdEI7RU9xRlEsa0RBQTBEO0VBQzFELHlCQUE2QyxFQUFBO0FQdEZyRDtFT3FGUSxrREFBMEQ7RUFDMUQseUJBQTZDLEVBQUE7QVB0RnJEO0VPcUZRLG9DQUEwRDtFQUMxRCx5QkFBNkMsRUFBQTtBUHRGckQ7RU80RlUsb0NBQW1FLEVBQUE7QVA1RjdFO0VPNEZVLG9DQUFtRSxFQUFBO0FQNUY3RTtFTzRGVSxvQ0FBbUUsRUFBQTtBUDVGN0U7RU91R0UsY0ZoTHdCLEVBQUE7QUx5RTFCO0VPdUdFLGNGeEh3QixFQUFBO0FMaUIxQjtFT3VHRSxjRmhFd0IsRUFBQTtBTHZDMUI7RU8rR00seUJGNUxlLEVBQUE7QUw2RXJCO0VPK0dNLHlCRnBJZSxFQUFBO0FMcUJyQjtFTytHTSx5QkY1RWUsRUFBQTtBTG5DckI7RU9zSE0seUJGcE1jLEVBQUE7QUw4RXBCO0VPc0hNLHlCRjVJYyxFQUFBO0FMc0JwQjtFT3NITSx5QkZwRmMsRUFBQTtBTGxDcEI7RU9pSVUseUJGeEt5QixFQUFBO0FMdUNuQztFT2lJVSx5QkZoSHlCLEVBQUE7QUxqQm5DO0VPaUlVLHlCRnhEeUIsRUFBQTtBTHpFbkM7RU91SVkseUJGN0syQixFQUFBO0FMc0N2QztFT3VJWSx5QkZySDJCLEVBQUE7QUxsQnZDO0VPdUlZLHlCRjdEMkIsRUFBQTtBTDFFdkM7RU9nSlEseUJGdEwrQixFQUFBO0FMc0N2QztFT2dKUSx5QkY5SCtCLEVBQUE7QUxsQnZDO0VPZ0pRLHlCRnRFK0IsRUFBQTtBTDFFdkM7RU8ySk0sY0ZuT2dCLEVBQUE7QUx3RXRCO0VPMkpNLGNGM0tnQixFQUFBO0FMZ0J0QjtFTzJKTSxjRm5IZ0IsRUFBQTtBTHhDdEI7RU9rS00sY0Z4T2tCLEVBQUE7QUxzRXhCO0VPa0tNLGNGaExrQixFQUFBO0FMY3hCO0VPa0tNLGNGeEhrQixFQUFBO0FMMUN4QjtFT3lLTSxjRjlPZSxFQUFBO0FMcUVyQjtFT3lLTSxjRnRMZSxFQUFBO0FMYXJCO0VPeUtNLGNGOUhlLEVBQUE7QUwzQ3JCO0VPZ0xNLGNGdFBrQixFQUFBO0FMc0V4QjtFT2dMTSxjRjlMa0IsRUFBQTtBTGN4QjtFT2dMTSxjRnRJa0IsRUFBQTtBTDFDeEI7RU95TFEseUJGalFjLEVBQUE7QUx3RXRCO0VPeUxRLHlCRnpNYyxFQUFBO0FMZ0J0QjtFT3lMUSx5QkZqSmMsRUFBQTtBTHhDdEI7RU9nTVEseUJGdFFnQixFQUFBO0FMc0V4QjtFT2dNUSx5QkY5TWdCLEVBQUE7QUxjeEI7RU9nTVEseUJGdEpnQixFQUFBO0FMMUN4QjtFT3VNUSx5QkY1UWEsRUFBQTtBTHFFckI7RU91TVEseUJGcE5hLEVBQUE7QUxhckI7RU91TVEseUJGNUphLEVBQUE7QUwzQ3JCO0VPOE1RLHlCRnBSZ0IsRUFBQTtBTHNFeEI7RU84TVEseUJGNU5nQixFQUFBO0FMY3hCO0VPOE1RLHlCRnBLZ0IsRUFBQTtBTDFDeEI7RVFoRkEsY0hLc0IsRUFBQTtBTDJFdEI7RVFoRkEsY0g2RHNCLEVBQUE7QUxtQnRCO0VRaEZBLGNIcUhzQixFQUFBO0FMckN0QjtFUXhFSSxjSEhrQixFQUFBO0FMMkV0QjtFUXhFSSxjSHFEa0IsRUFBQTtBTG1CdEI7RVF4RUksY0g2R2tCLEVBQUE7QUxyQ3RCO0VRbEVNLHlCSE5nQixFQUFBO0FMd0V0QjtFUWxFTSx5QkhrRGdCLEVBQUE7QUxnQnRCO0VRbEVNLHlCSDBHZ0IsRUFBQTtBTHhDdEI7RVF4RE0seUJIaEJnQixFQUFBO0FMd0V0QjtFUXhETSx5Qkh3Q2dCLEVBQUE7QUxnQnRCO0VReERNLHlCSGdHZ0IsRUFBQTtBTHhDdEI7RVEvQ0UsY0h6Qm9CLEVBQUE7QUx3RXRCO0VRL0NFLGNIK0JvQixFQUFBO0FMZ0J0QjtFUS9DRSxjSHVGb0IsRUFBQTtBTHhDdEI7RVF6Q0kseUJIL0JrQixFQUFBO0FMd0V0QjtFUXpDSSx5Qkh5QmtCLEVBQUE7QUxnQnRCO0VRekNJLHlCSGlGa0IsRUFBQTtBTHhDdEI7RVE3Qk0sdUNIZjJDLEVBQUE7QUw0Q2pEO0VRN0JNLHVDSHlDMkMsRUFBQTtBTFpqRDtFUTdCTSwwQ0hpRzhDLEVBQUE7QUxwRXBEO0VRdkJRLHlCSGpEYyxFQUFBO0FMd0V0QjtFUXZCUSx5QkhPYyxFQUFBO0FMZ0J0QjtFUXZCUSx5QkgrRGMsRUFBQTtBTHhDdEI7RVFoQlEseUJIN0JnQztFRzhCaEMsY0hoQzBCLEVBQUE7QUwrQ2xDO0VRaEJRLHlCSDJCZ0M7RUcxQmhDLGNId0IwQixFQUFBO0FMVGxDO0VRaEJRLHlCSG1GZ0M7RUdsRmhDLGNIZ0YwQixFQUFBO0FMakVsQztFUVJRLHVDSHBFcUMsRUFBQTtBTDRFN0M7RVFSUSx1Q0hacUMsRUFBQTtBTG9CN0M7RVFSUSwwQ0g0Q3dDLEVBQUE7QUxwQ2hEO0VRRFEsdUNIMUNzQyxFQUFBO0FMMkM5QztFUURRLHVDSGNzQyxFQUFBO0FMYjlDO0VRRFEseUJIc0V3QixFQUFBO0FMckVoQztFUVFJLHVDSHBGeUMsRUFBQTtBTDRFN0M7RVFRSSx1Q0g1QnlDLEVBQUE7QUxvQjdDO0VRUUksMENINEI0QyxFQUFBO0FMcENoRDtFUXFCSSxjSGhHa0IsRUFBQTtBTDJFdEI7RVFxQkksY0h4Q2tCLEVBQUE7QUxtQnRCO0VRcUJJLGNIZ0JrQixFQUFBO0FMckN0QjtFUTJCTSx5QkhuR2dCLEVBQUE7QUx3RXRCO0VRMkJNLHlCSDNDZ0IsRUFBQTtBTGdCdEI7RVEyQk0seUJIYWdCLEVBQUE7QUx4Q3RCO0VRbUNJLDRCSDNGaUMsRUFBQTtBTHdEckM7RVFtQ0ksNEJIbkNpQyxFQUFBO0FMQXJDO0VRbUNJLDRCSHFCaUMsRUFBQTtBTHhEckM7RVE4Q0UseUJIdEhvQixFQUFBO0FMd0V0QjtFUThDRSx5Qkg5RG9CLEVBQUE7QUxnQnRCO0VROENFLHlCSE5vQixFQUFBO0FMeEN0QjtFUThEUSxjSHZJa0IsRUFBQTtBTHlFMUI7RVE4RFEsY0gvRWtCLEVBQUE7QUxpQjFCO0VROERRLGNIdkJrQixFQUFBO0FMdkMxQjtFUXFFUSx5QkgvR3FCLEVBQUE7QUwwQzdCO0VRcUVRLHlCSHZEcUIsRUFBQTtBTGQ3QjtFUXFFUSx5QkhDcUIsRUFBQTtBTHRFN0I7RVE0RVEseUJIdEhxQixFQUFBO0FMMEM3QjtFUTRFUSx5Qkg5RHFCLEVBQUE7QUxkN0I7RVE0RVEseUJITnFCLEVBQUE7QUx0RTdCO0VRbUZRLDZCQUE2QixFQUFBO0FSbkZyQztFUW1GUSw2QkFBNkIsRUFBQTtBUm5GckM7RVFtRlEsNkJBQTZCLEVBQUE7QVJuRnJDO0VRMEZRLDZCQUE2QixFQUFBO0FSMUZyQztFUTBGUSw2QkFBNkIsRUFBQTtBUjFGckM7RVEwRlEsNkJBQTZCLEVBQUE7QVIxRnJDO0VRbUdVLHlCSDFJeUIsRUFBQTtBTHVDbkM7RVFtR1UseUJIbEZ5QixFQUFBO0FMakJuQztFUW1HVSx5QkgxQnlCLEVBQUE7QUx6RW5DO0VReUdZLHlCSC9JMkIsRUFBQTtBTHNDdkM7RVF5R1kseUJIdkYyQixFQUFBO0FMbEJ2QztFUXlHWSx5QkgvQjJCLEVBQUE7QUwxRXZDO0VRa0hRLHlCSHhMZ0IsRUFBQTtBTHNFeEI7RVFrSFEseUJIaElnQixFQUFBO0FMY3hCO0VRa0hRLHlCSHhFZ0IsRUFBQTtBTDFDeEI7RVEySFUseUJIaE1XLEVBQUE7QUxxRXJCO0VRMkhVLHlCSHhJVyxFQUFBO0FMYXJCO0VRMkhVLHlCSGhGVyxFQUFBO0FMM0NyQjtFUXFJVSx5Qkg1TWEsRUFBQTtBTHVFdkI7RVFxSVUseUJIcEphLEVBQUE7QUxldkI7RVFxSVUseUJINUZhLEVBQUE7QUx6Q3ZCO0VReUpRLHlCSDlOYSxFQUFBO0FMcUVyQjtFUXlKUSx5Qkh0S2EsRUFBQTtBTGFyQjtFUXlKUSx5Qkg5R2EsRUFBQTtBTDNDckI7RVFnS1EseUJIeE9jLEVBQUE7QUx3RXRCO0VRZ0tRLHlCSGhMYyxFQUFBO0FMZ0J0QjtFUWdLUSx5Qkh4SGMsRUFBQTtBTHhDdEI7RVErS0ksY0gxUGtCLEVBQUE7QUwyRXRCO0VRK0tJLGNIbE1rQixFQUFBO0FMbUJ0QjtFUStLSSxjSDFJa0IsRUFBQTtBTHJDdEI7RVFxTE0seUJIN1BnQixFQUFBO0FMd0V0QjtFUXFMTSx5QkhyTWdCLEVBQUE7QUxnQnRCO0VRcUxNLHlCSDdJZ0IsRUFBQTtBTHhDdEI7RVE2TEksY0hyUWtCLEVBQUE7QUx3RXRCO0VRNkxJLGNIN01rQixFQUFBO0FMZ0J0QjtFUTZMSSxjSHJKa0IsRUFBQTtBTHhDdEI7RVFvTUksNEJINVBpQyxFQUFBO0FMd0RyQztFUW9NSSw0QkhwTWlDLEVBQUE7QUxBckM7RVFvTUksNEJINUlpQyxFQUFBO0FMeERyQztFUThNSSx5QkhyUCtCLEVBQUE7QUx1Q25DO0VROE1JLHlCSDdMK0IsRUFBQTtBTGpCbkM7RVE4TUkseUJIckkrQixFQUFBO0FMekVuQztFUW9OTSx5QkgxUGlDLEVBQUE7QUxzQ3ZDO0VRb05NLHlCSGxNaUMsRUFBQTtBTGxCdkM7RVFvTk0seUJIMUlpQyxFQUFBO0FHaUozQztFUjdTRSxnQkFBZ0I7RUFDaEIsdUJBQXVCO0VBQ3ZCLG1CQUFtQixFQUFBO0FBZ0ZqQjtFUTRPVSx5QkhqVFcsRUFBQTtBTHFFckI7RVE0T1UseUJIelBXLEVBQUE7QUxhckI7RVE0T1UseUJIak1XLEVBQUE7QUwzQ3JCO0VRNFBJLGNIcFVrQixFQUFBO0FMd0V0QjtFUTRQSSxjSDVRa0IsRUFBQTtBTGdCdEI7RVE0UEksY0hwTmtCLEVBQUE7QUx4Q3RCO0VRMFFRLGNIblZrQixFQUFBO0FMeUUxQjtFUTBRUSxjSDNSa0IsRUFBQTtBTGlCMUI7RVEwUVEsY0huT2tCLEVBQUE7QUx2QzFCO0VRaVJRLHlCSDFUeUIsRUFBQTtBTHlDakM7RVFpUlEseUJIbFF5QixFQUFBO0FMZmpDO0VRaVJRLHNCSDFNc0IsRUFBQTtBRzhLbEM7RVIvUEUsV0FEMEQ7RUFFMUQsY0FGNEI7RUFHNUIsa0JBSDRDO0VRa1NsQyxNQUFNO0VBQ04sYUFBYTtFQUNiLGdDQUFnQyxFQUFBO0FSelJ4QztJUTRSVSx5QkhyVXVCLEVBQUE7QUx5Q2pDO0lRNFJVLHlCSDdRdUIsRUFBQTtBTGZqQztJUTRSVSxzQkhyTm9CLEVBQUE7QUx2RTlCO0VRb1NRLHlCSDVVNEIsRUFBQTtBTHdDcEM7RVFvU1EseUJIcFI0QixFQUFBO0FMaEJwQztFUW9TUSx5Qkg1TjRCLEVBQUE7QUc2S3hDO0VSL1BFLFdBRDBEO0VBRTFELGNBRjRCO0VBRzVCLGtCQUg0QztFUXFUbEMsY0FBYztFQUNkLE1BQU07RUFDTixnQ0FBZ0MsRUFBQTtBUjVTeEM7SVErU1UseUJIdlYwQixFQUFBO0FMd0NwQztJUStTVSx5QkgvUjBCLEVBQUE7QUxoQnBDO0lRK1NVLHlCSHZPMEIsRUFBQTtBTHhFcEM7RVFpVU0sY0gxWW9CLEVBQUE7QUx5RTFCO0VRaVVNLGNIbFZvQixFQUFBO0FMaUIxQjtFUWlVTSxjSDFSb0IsRUFBQTtBTHZDMUI7RVF3VU0sY0huWmdCLEVBQUE7QUwyRXRCO0VRd1VNLGNIM1ZnQixFQUFBO0FMbUJ0QjtFUXdVTSxjSG5TZ0IsRUFBQTtBR21SMUI7RUFzQk0sYUFBYTtFQUNiLG1CQUFtQjtFQUNuQix5QkFBeUI7RUFDekIsWUFBWTtFQUNaLGlCQUFpQixFQUFBO0FSbFZuQjtFUTJWSSxjSHBhc0IsRUFBQTtBTHlFMUI7RVEyVkksY0g1V3NCLEVBQUE7QUxpQjFCO0VRMlZJLGNIcFRzQixFQUFBO0FMdkMxQjtFUW9XTSxjSC9hZ0I7RUdnYmhCLHlCSDFZOEIsRUFBQTtBTHFDcEM7RVFvV00sY0h2WGdCO0VHd1hoQix5QkhsVjhCLEVBQUE7QUxuQnBDO0VRb1dNLGNIL1RnQjtFR2dVaEIseUJIMVI4QixFQUFBO0FMM0VwQztFUTJXUSx5QkgvWXVCLEVBQUE7QUxvQy9CO0VRMldRLHlCSHZWdUIsRUFBQTtBTHBCL0I7RVEyV1EseUJIL1J1QixFQUFBO0FHdVNuQztFQUNFLGtCQUFrQixFQUFBO0FBRHBCO0lBSUksa0JBQWtCO0lBQ2xCLFdBQVc7SUFDWCxpQkFBaUI7SUFDakIsY0FBYztJQUNkLFdBQVcsRUFBQTtBUjNYWDtNUThYRSx5QkhyYjJCO01Hc2IzQixjSDFjb0IsRUFBQTtBTDJFdEI7TVE4WEUseUJIN1gyQjtNRzhYM0IsY0hsWm9CLEVBQUE7QUxtQnRCO01ROFhFLHlCSHJVMkI7TUdzVTNCLGNIMVZvQixFQUFBO0FHOFUxQjtNQWdCTSxpQkFBaUI7TUFDakIsYUFBYSxFQUFBO0FScFlmO1FRd1lNLHVDSDliaUMsRUFBQTtBTHNEdkM7UVF3WU0sdUNIdFlpQyxFQUFBO0FMRnZDO1FRd1lNLDBDSDlVb0MsRUFBQTtBSTdJOUM7RUFDRSxhQUFhO0VBQ2IscUJBQXFCO0VBQ3JCLDhCQUE4QjtFQUM5QixpQkFBaUI7RUFDakIsZUFBZTtFQUNmLFdBQVc7RUFDWCxZQUFZLEVBQUE7QVQ0RVY7SVN6RUEsY0pDc0IsRUFBQTtBTHdFdEI7SVN6RUEsY0p5RHNCLEVBQUE7QUxnQnRCO0lTekVBLGNKaUhzQixFQUFBO0FJM0gxQjtJQWtCUSxrQkFBa0I7SUFDbEIsZUFBZTtJQUNmLGtCQUFrQjtJQUNsQixtQkFBbUIsRUFBQTtBQXJCM0I7TVR5RUUsV0FEMEQ7TUFFMUQsY0FGNEI7TUFHNUIsa0JBSDRDO01TOUNwQyxXQUFXO01BQ1gsY0FBYztNQUNkLGFBQWE7TUFDYixjQUFjO01BQ2QscURBQTZEO2NBQTdELDZDQUE2RDtNQUM3RCx3QkFBZ0I7Y0FBaEIsZ0JBQWdCLEVBQUE7QVRvRHRCO1FTakRRLHlCSnZCYyxFQUFBO0FMd0V0QjtRU2pEUSx5QkppQ2MsRUFBQTtBTGdCdEI7UVNqRFEseUJKeUZjLEVBQUE7QUkzSDFCO0lBMENJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsNkJBQTZCO0lBQzdCLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsZ0JBQWdCO0lBQ2hCLG1CQUFtQjtJQUNuQixVQUFVO0lBQ1YsWUFBWSxFQUFBO0FBbERoQjtNQXFETSxvQkFBb0I7TUFDcEIsOENBQXNEO2NBQXRELHNDQUFzRDtNQUN0RCxhQUFhO01BQ2IsY0FBYyxFQUFBO0FUMkJoQjtRU3hCSSx5QkpoRGtCLEVBQUE7QUx3RXRCO1FTeEJJLHlCSlFrQixFQUFBO0FMZ0J0QjtRU3hCSSx5QkpnRWtCLEVBQUE7QUszSDFCO0VBR0ksNkJBQTZCO0VBQzdCLGVBQWU7RUFDZixXQUFXO0VBQ1gsWUFBWSxFQUFBO0FBTmhCO0VBVUksdUJBQXVCLEVBQUE7QUFWM0I7RUFjSSx5QkFBeUI7RUFDekIsNEJBQTRCO0VBQzVCLGlDQUFpQztFQUNqQyxxQkFBcUIsRUFBQTtBQWpCekI7RUFxQkkseUJBQXlCLEVBQUE7QUNyQjdCO0VBQ0UsaUJBQWlCO0VBQ2pCLFdBQVcsRUFBQTtBQUZiO0lBS0ksZ0JBQWdCLEVBQUE7QVg4RWhCO01XM0VFLGNORXdCLEVBQUE7QUx5RTFCO01XM0VFLGNOMER3QixFQUFBO0FMaUIxQjtNVzNFRSxjTmtId0IsRUFBQTtBTTFIOUI7TUFZTSxZQUFZLEVBQUE7QUFabEI7UUFlUSxhQUFhO1FBQ2Isc0JBQXNCLEVBQUE7QUFoQjlCO1VBbUJVLGtCQUFrQixFQUFBO0FBbkI1QjtVQXVCVSxtQkFBbUIsRUFBQTtBQXZCN0I7SUE4QkksZ0JBQWdCLEVBQUE7QVhxRGhCO01XbERFLGNOekJvQixFQUFBO0FMMkV0QjtNV2xERSxjTitCb0IsRUFBQTtBTG1CdEI7TVdsREUsY051Rm9CLEVBQUE7QU14SDFCO01BcUNNLGNBQWMsRUFBQTtBWDhDaEI7UVd6Q00seUJORHVCLEVBQUE7QUwwQzdCO1FXekNNLHlCTnVEdUIsRUFBQTtBTGQ3QjtRV3pDTSx5Qk4rR3VCLEVBQUE7QU16SmpDO1FBK0NRLG1CQUFtQjtRQUNuQixlQUFlO1FBQ2Ysc0JBQXNCO1FBQ3RCLG1CQUFtQjtRQUNuQixnQkFBZ0IsRUFBQTtBQW5EeEI7VUFzRFUsa0JBQWtCLEVBQUE7QUF0RDVCO1VBMERVLG1CQUFtQixFQUFBO0FDdkM3QjtFQUNFLHFCQUFxQjtFQUNyQiw4QkFBOEM7RUFDOUMsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSxxQkFBcUI7RUFDckIsZ0NBQWdEO0VBQ2hELGdCQUFnQixFQUFBO0FBR2xCO0VBQ0UscUJBQXFCO0VBQ3JCLGlDQUFpRDtFQUNqRCxnQkFBZ0IsRUFBQTtBQUdsQjtFQUNFLHFCQUFxQjtFQUNyQiw2QkFBNkM7RUFDN0MsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSxxQkFBcUI7RUFDckIsa0NBQWtEO0VBQ2xELGdCQUFnQixFQUFBO0FBSWxCO0VBQ0UsaUNBQWlDO0VBQ2pDLGVBQWUsRUFBQTtBQUdqQjtFQUNFLGlDQUFpQztFQUNqQyxpQkFBaUI7RUFDakIsWUFBWTtFQUNaLGFBQWEsRUFBQTtBQUpmO0lBT0ksK0RBQTZFO0lBQzdFLHNCQUFzQixFQUFBO0FBUjFCO0lBWUksK0RBQTZFO0lBQzdFLHNCQUFzQixFQUFBO0FBYjFCO0lBaUJJLGdFQUE4RTtJQUM5RSxzQkFBc0IsRUFBQTtBQWxCMUI7SUFzQkksYUFBYTtJQUNiLFdBQVc7SUFDWCxZQUFZLEVBQUE7QUFJaEI7RUFLTSxzREFBeUQ7VUFBekQsOENBQXlELEVBQUEiLCJmaWxlIjoic3JjL3N0eWxlcy5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQG1peGluIHRleHQtdHJ1bmNhdGUge1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxufVxyXG5AbWl4aW4gdGV4dFdyYXAge1xyXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XHJcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcclxuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XHJcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xyXG4gIGxpbmUtYnJlYWs6IHN0cmljdDtcclxuICAtd2Via2l0LWh5cGhlbnM6IGF1dG87XHJcbiAgLW1zLWh5cGhlbnM6IGF1dG87XHJcbiAgaHlwaGVuczogYXV0bztcclxufVxyXG5AbWl4aW4gY292ZXJCb3gge1xyXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHR0b3A6IDA7XHJcblx0bGVmdDogMDtcclxuXHR3aWR0aDogMTAwJTtcclxuXHRoZWlnaHQ6IDEwMCU7XHJcbn1cclxuQG1peGluIGFicyAoJHRvcDogYXV0bywgJHJpZ2h0OiBhdXRvLCAkYm90dG9tOiBhdXRvLCAkbGVmdDogYXV0bykge1xyXG4gIHRvcDogJHRvcDtcclxuICByaWdodDogJHJpZ2h0O1xyXG4gIGJvdHRvbTogJGJvdHRvbTtcclxuICBsZWZ0OiAkbGVmdDtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbn1cclxuQG1peGluIGNvdmVySW1nIHtcclxuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG5cdC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuXHQtby1iYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG5cdGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDUwJTtcclxufVxyXG5AbWl4aW4gdmFsaW5nQm94IHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0dG9wOiAgNTAlO1xyXG5cdGxlZnQ6IDUwJTtcclxuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxufVxyXG5AbWl4aW4gdW5TZWxlY3Qge1xyXG5cdC13ZWJraXQtdG91Y2gtY29sbG91dDogbm9uZTtcclxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcclxuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcclxuICB1c2VyLXNlbGVjdDogbm9uZTtcclxufVxyXG5AbWl4aW4gbWF4MTE5OSB7IC8vIG1ha2V0IDExNzFcclxuICBAbWVkaWEgKG1heC13aWR0aDogMTE5OXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1heDExNzAgeyAvLyBtYWtldHMgOTkyXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDExNzBweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtYXg5OTEgeyAvLyBtYWtldHMgNzYyXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDk5MXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1heDc2MSB7IC8vIG1ha2V0cyA1NzZcclxuICBAbWVkaWEgKG1heC13aWR0aDogNzYxcHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbWF4NTc1IHsgLy8gbWFrZXRzIDQwMFxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA1NzVweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtb2JpbGUge1xyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiAzOTlweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBpY29DZW50ZXIge1xyXG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XHJcbn1cclxuQG1peGluIHBzZXVkbyAoJGRpc3BsYXk6IGJsb2NrLCAkcG9zOiBhYnNvbHV0ZSwgJGNvbnRlbnQ6ICcnKXtcclxuICBjb250ZW50OiAkY29udGVudDtcclxuICBkaXNwbGF5OiAkZGlzcGxheTtcclxuICBwb3NpdGlvbjogJHBvcztcclxufVxyXG5cclxuLypcclxuKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGVtZXNcclxuKi9cclxuQG1peGluIHRoZW1pZnkoJHRoZW1lczogJHRoZW1lcykge1xyXG4gIEBlYWNoICR0aGVtZSwgJG1hcCBpbiAkdGhlbWVzIHtcclxuICAgIC50aGVtZS0jeyR0aGVtZX0gJiB7XHJcbiAgICAgICR0aGVtZS1tYXA6ICgpICFnbG9iYWw7XHJcbiAgICAgIEBlYWNoICRrZXksICRzdWJtYXAgaW4gJG1hcCB7XHJcbiAgICAgICAgJHZhbHVlOiBtYXAtZ2V0KG1hcC1nZXQoJHRoZW1lcywgJHRoZW1lKSwgJyN7JGtleX0nKTtcclxuICAgICAgICAkdGhlbWUtbWFwOiBtYXAtbWVyZ2UoJHRoZW1lLW1hcCwgKCRrZXk6ICR2YWx1ZSkpICFnbG9iYWw7XHJcbiAgICAgIH1cclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICAgICR0aGVtZS1tYXA6IG51bGwgIWdsb2JhbDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBmdW5jdGlvbiB0aGVtZWQoJGtleSkge1xyXG4gIEByZXR1cm4gbWFwLWdldCgkdGhlbWUtbWFwLCAka2V5KTtcclxufVxyXG4iLCIvKlxyXG4qIEltcGxlbWVudGF0aW9uIG9mIHRoZW1lc1xyXG4qL1xuQGltcG9ydCB1cmwofkBuZy1zZWxlY3Qvbmctc2VsZWN0L3RoZW1lcy9kZWZhdWx0LnRoZW1lLmNzcyk7XG5odG1sIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cblxuKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGluaGVyaXQ7XG4gIC1tb3otYm94LXNpemluZzogaW5oZXJpdDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICAtd2Via2l0LXRvdWNoLWNvbGxvdXQ6IG5vbmU7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTsgfVxuXG5odG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG5hLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG5kZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG5zbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuYiwgdSwgaSwgY2VudGVyLFxuZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbmZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxudGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG5hcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbmZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbm1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxudGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgYm9yZGVyOiAwO1xuICBmb250LXNpemU6IDEwMCU7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG5hcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLFxuZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWVudSwgbmF2LCBzZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cblxub2wsIHVsIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG5ibG9ja3F1b3RlLCBxIHtcbiAgcXVvdGVzOiBub25lOyB9XG5cbmJsb2NrcXVvdGU6YmVmb3JlLCBibG9ja3F1b3RlOmFmdGVyLFxucTpiZWZvcmUsIHE6YWZ0ZXIge1xuICBjb250ZW50OiBub25lOyB9XG5cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxudGQsXG50aCB7XG4gIHBhZGRpbmc6IDA7IH1cblxuaW5wdXQge1xuICBvdXRsaW5lOiBub25lOyB9XG4gIGlucHV0Oi13ZWJraXQtYXV0b2ZpbGwge1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMTAwMHB4IHdoaXRlIGluc2V0OyB9XG5cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdXRsaW5lOiBub25lOyB9XG5cbmJ1dHRvbltkaXNhYmxlZF0sXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gIGN1cnNvcjogZGVmYXVsdDsgfVxuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDsgfVxuXG5pbnB1dCB7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7IH1cblxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgfVxuXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgfVxuXG5hIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG4gIGE6YWN0aXZlLCBhOmhvdmVyLCBhOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwOyB9XG5cbmkge1xuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cblxuYiwgc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuXG5pbWcge1xuICB3aWR0aDogYXV0bztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIGJvcmRlcjogMDsgfVxuXG4uaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbi50aGVtZS1kYXJrIC5hcHAtY29udGVudCAucHJlbG9hZGVyIC5sb2FkaW5nLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7IH1cblxuLnRoZW1lLWdyYXkgLmFwcC1jb250ZW50IC5wcmVsb2FkZXIgLmxvYWRpbmctYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDsgfVxuXG4udGhlbWUtd2hpdGUgLmFwcC1jb250ZW50IC5wcmVsb2FkZXIgLmxvYWRpbmctYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG5idXR0b24ge1xuICBib3JkZXI6IG5vbmU7XG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHBhZGRpbmc6IDAgMXJlbTtcbiAgaGVpZ2h0OiA0LjJyZW07IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uOmRpc2FibGVkOm5vdCgudHJhbnNwYXJlbnQtYnV0dG9uKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzljYWRiNztcbiAgICBjb2xvcjogIzExMTkyMTsgfVxuICAudGhlbWUtZ3JheSBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzk4NDhmO1xuICAgIGNvbG9yOiAjMWExYTFhOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBhNGFlO1xuICAgIGNvbG9yOiAjZmVmZWZlOyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbjpkaXNhYmxlZDpub3QoLnRyYW5zcGFyZW50LWJ1dHRvbik6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNiN2QxZTA7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uOmRpc2FibGVkOm5vdCgudHJhbnNwYXJlbnQtYnV0dG9uKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ExYWViYjsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uOmRpc2FibGVkOm5vdCgudHJhbnNwYXJlbnQtYnV0dG9uKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2FlYmVjNjsgfVxuICAudGhlbWUtZGFyayBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTdiOWMyOyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbjpkaXNhYmxlZDpub3QoLnRyYW5zcGFyZW50LWJ1dHRvbik6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM4YTk1OWY7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbjpkaXNhYmxlZDpub3QoLnRyYW5zcGFyZW50LWJ1dHRvbik6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNhN2I5YzI7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uLmJsdWUtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmO1xuICAgIGNvbG9yOiAjMTExOTIxOyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTtcbiAgICBjb2xvcjogIzFhMWExYTsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uLmJsdWUtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxO1xuICAgIGNvbG9yOiAjZmVmZWZlOyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzgyZDdmZjsgfVxuICAudGhlbWUtZ3JheSBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM4NmQ2ZmY7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjNmZjsgfVxuICAudGhlbWUtZGFyayBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1OWI1ZmQ7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLmJsdWUtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWZiNmZjOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzNzlmZmE7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDtcbiAgICBjb2xvcjogIzExMTkyMTsgfVxuICAudGhlbWUtZ3JheSBidXR0b24uZ3JlZW4tYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkO1xuICAgIGNvbG9yOiAjMWExYTFhOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b24uZ3JlZW4tYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyO1xuICAgIGNvbG9yOiAjZmVmZWZlOyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbi5ncmVlbi1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM4ZGZjYzY7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzdiZjZjNjsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzVhZDU4NjsgfVxuICAudGhlbWUtZGFyayBidXR0b24uZ3JlZW4tYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjJlMGIyOyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbi5ncmVlbi1idXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1Y2RjOWU7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbi5ncmVlbi1idXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1M2M3N2M7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0ZGQwZTE7XG4gICAgY29sb3I6ICMxMTE5MjE7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzZWM1ZDc7XG4gICAgY29sb3I6ICMxYTFhMWE7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbi50dXJxdW9pc2UtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZiNmM3O1xuICAgIGNvbG9yOiAjZmVmZWZlOyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbi50dXJxdW9pc2UtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODdmNGY1OyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbi50dXJxdW9pc2UtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzJlZGZlOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b24udHVycXVvaXNlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzUyY2JkOTsgfVxuICAudGhlbWUtZGFyayBidXR0b24udHVycXVvaXNlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQyZDVlODsgfVxuICAudGhlbWUtZ3JheSBidXR0b24udHVycXVvaXNlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzUwZDBlMTsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzMWJlY2Y7IH1cbiAgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XG4gICAgLnRoZW1lLWRhcmsgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlcjogMC4ycmVtIHNvbGlkICMyYjM2NDQ7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS1ncmF5IGJ1dHRvbi50cmFuc3BhcmVudC1idXR0b24ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXI6IDAuMnJlbSBzb2xpZCAjMmYzNDM4O1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtd2hpdGUgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlcjogMC4ycmVtIHNvbGlkICNlYmViZWI7XG4gICAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAgIGJ1dHRvbi50cmFuc3BhcmVudC1idXR0b24gLmljb24ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xuICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2NvbXBsZXRlLXRlc3R3YWxsZXQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xuICAgICAgd2lkdGg6IDEuN3JlbTtcbiAgICAgIGhlaWdodDogMS43cmVtOyB9XG4gICAgICAudGhlbWUtZGFyayBidXR0b24udHJhbnNwYXJlbnQtYnV0dG9uIC5pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLWdyYXkgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiAuaWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7IH1cbiAgICAgIC50aGVtZS13aGl0ZSBidXR0b24udHJhbnNwYXJlbnQtYnV0dG9uIC5pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQzNDU0YjsgfVxuXG4uaW5wdXQtYmxvY2sge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgbWFyZ2luLWJvdHRvbTogMC40cmVtOyB9XG4gIC5pbnB1dC1ibG9jayAud3JhcC1sYWJlbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBtaW4taGVpZ2h0OiAyLjRyZW07IH1cbiAgLmlucHV0LWJsb2NrIGxhYmVsIHtcbiAgICBmb250LXNpemU6IDEuM3JlbTtcbiAgICBsaW5lLWhlaWdodDogMi40cmVtOyB9XG4gICAgLnRoZW1lLWRhcmsgLmlucHV0LWJsb2NrIGxhYmVsIHtcbiAgICAgIGNvbG9yOiAjNTU2NTc2OyB9XG4gICAgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrIGxhYmVsIHtcbiAgICAgIGNvbG9yOiAjNTY1YzYyOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jayBsYWJlbCB7XG4gICAgICBjb2xvcjogI2EwYTVhYjsgfVxuICAuaW5wdXQtYmxvY2sgaW5wdXRbdHlwZT0ndGV4dCddLCAuaW5wdXQtYmxvY2sgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSwgLmlucHV0LWJsb2NrIHNlbGVjdCB7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgcGFkZGluZzogMCAxcmVtO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNC4ycmVtOyB9XG4gICAgLnRoZW1lLWRhcmsgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3RleHQnXSwgLnRoZW1lLWRhcmsgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sIC50aGVtZS1kYXJrIC5pbnB1dC1ibG9jayBzZWxlY3Qge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzE3MWUyNztcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3RleHQnXSwgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sIC50aGVtZS1ncmF5IC5pbnB1dC1ibG9jayBzZWxlY3Qge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jayBpbnB1dFt0eXBlPSd0ZXh0J10sIC50aGVtZS13aGl0ZSAuaW5wdXQtYmxvY2sgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSwgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jayBzZWxlY3Qge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjtcbiAgICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gIC5pbnB1dC1ibG9jay50ZXh0YXJlYSB7XG4gICAgaGVpZ2h0OiBhdXRvOyB9XG4gICAgLmlucHV0LWJsb2NrLnRleHRhcmVhIHRleHRhcmVhIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIG1pbi1oZWlnaHQ6IDcuNXJlbTtcbiAgICAgIG1heC1oZWlnaHQ6IDcuNXJlbTtcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgcmVzaXplOiBub25lOyB9XG4gICAgICAudGhlbWUtZGFyayAuaW5wdXQtYmxvY2sudGV4dGFyZWEgdGV4dGFyZWEge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZTI3O1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrLnRleHRhcmVhIHRleHRhcmVhIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAuaW5wdXQtYmxvY2sudGV4dGFyZWEgdGV4dGFyZWEge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xuICAgICAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAuaW5wdXQtYmxvY2sgLmVycm9yLWJsb2NrIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNHJlbTtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDsgfVxuICAgIC50aGVtZS1kYXJrIC5pbnB1dC1ibG9jayAuZXJyb3ItYmxvY2sge1xuICAgICAgY29sb3I6ICNmZjUyNTI7IH1cbiAgICAudGhlbWUtZ3JheSAuaW5wdXQtYmxvY2sgLmVycm9yLWJsb2NrIHtcbiAgICAgIGNvbG9yOiAjZmY1MjUyOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jayAuZXJyb3ItYmxvY2sge1xuICAgICAgY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWRhcmsgLmVycm9yLXRleHQge1xuICBjb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZ3JheSAuZXJyb3ItdGV4dCB7XG4gIGNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS13aGl0ZSAuZXJyb3ItdGV4dCB7XG4gIGNvbG9yOiAjZmY1MjUyOyB9XG5cbmlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW8gKyBsYWJlbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgcGFkZGluZy1sZWZ0OiAyLjRyZW07XG4gIC13ZWJraXQtdG91Y2gtY29sbG91dDogbm9uZTtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lOyB9XG4gIC50aGVtZS1kYXJrIGlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW8gKyBsYWJlbCB7XG4gICAgY29sb3I6ICM1NTY1NzY7IH1cbiAgLnRoZW1lLWdyYXkgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbyArIGxhYmVsIHtcbiAgICBjb2xvcjogIzU2NWM2MjsgfVxuICAudGhlbWUtd2hpdGUgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbyArIGxhYmVsIHtcbiAgICBjb2xvcjogI2EwYTVhYjsgfVxuXG5pbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgb3BhY2l0eTogMDsgfVxuICBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDAuN3JlbTtcbiAgICBsZWZ0OiAwO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB3aWR0aDogMS40cmVtO1xuICAgIGhlaWdodDogMS40cmVtOyB9XG4gICAgLnRoZW1lLWRhcmsgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgICAgYm9yZGVyOiAwLjFyZW0gc29saWQgIzRkYjFmZjsgfVxuICAgIC50aGVtZS1ncmF5IGlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86bm90KGNoZWNrZWQpICsgbGFiZWw6YmVmb3JlIHtcbiAgICAgIGJvcmRlcjogMC4xcmVtIHNvbGlkICM0MmE1ZjU7IH1cbiAgICAudGhlbWUtd2hpdGUgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgICAgYm9yZGVyOiAwLjFyZW0gc29saWQgIzJjOTVmMTsgfVxuICBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxcmVtO1xuICAgIGxlZnQ6IDAuM3JlbTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb3BhY2l0eTogMDtcbiAgICB3aWR0aDogMC44cmVtO1xuICAgIGhlaWdodDogMC44cmVtOyB9XG4gICAgLnRoZW1lLWRhcmsgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG4gICAgLnRoZW1lLWdyYXkgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG4gICAgLnRoZW1lLXdoaXRlIGlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86bm90KGNoZWNrZWQpICsgbGFiZWw6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG5pbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOmNoZWNrZWQgKyBsYWJlbDphZnRlciB7XG4gIG9wYWNpdHk6IDE7IH1cblxuaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveCArIGxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXdlaWdodDogNDAwO1xuICBwYWRkaW5nLWxlZnQ6IDMuNnJlbTtcbiAgLXdlYmtpdC10b3VjaC1jb2xsb3V0OiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7IH1cbiAgLnRoZW1lLWRhcmsgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveCArIGxhYmVsIHtcbiAgICBjb2xvcjogIzU1NjU3NjsgfVxuICAudGhlbWUtZ3JheSBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94ICsgbGFiZWwge1xuICAgIGNvbG9yOiAjNTY1YzYyOyB9XG4gIC50aGVtZS13aGl0ZSBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94ICsgbGFiZWwge1xuICAgIGNvbG9yOiAjYTBhNWFiOyB9XG5cbmlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6bm90KGNoZWNrZWQpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogMS42cmVtO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuICBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94Om5vdChjaGVja2VkKSArIGxhYmVsIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiAxLjZyZW07XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIHdpZHRoOiAxLjRyZW07XG4gICAgaGVpZ2h0OiAxLjRyZW07IH1cbiAgICAudGhlbWUtZGFyayBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94Om5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCAjNGRiMWZmOyB9XG4gICAgLnRoZW1lLWdyYXkgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgICAgYm9yZGVyOiAwLjFyZW0gc29saWQgIzQyYTVmNTsgfVxuICAgIC50aGVtZS13aGl0ZSBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94Om5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCAjMmM5NWYxOyB9XG5cbmlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7XG4gIGJhY2tncm91bmQ6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9jb21wbGV0ZS10ZXN0d2FsbGV0LnN2Zyk7IH1cbiAgLnRoZW1lLWRhcmsgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG4gIC50aGVtZS1ncmF5IGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuICAudGhlbWUtd2hpdGUgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIC5zd2l0Y2gge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyB9XG5cbi50aGVtZS1ncmF5IC5zd2l0Y2gge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyB9XG5cbi50aGVtZS13aGl0ZSAuc3dpdGNoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZGFyayAuc3dpdGNoIC5jaXJjbGUub24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IC5zd2l0Y2ggLmNpcmNsZS5vbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIC5zd2l0Y2ggLmNpcmNsZS5vbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgLnN3aXRjaCAuY2lyY2xlLm9mZiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgLnN3aXRjaCAuY2lyY2xlLm9mZiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIC5zd2l0Y2ggLmNpcmNsZS5vZmYge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTBhNWFiOyB9XG5cbi50YWJsZS10b29sdGlwIHtcbiAgcGFkZGluZzogMXJlbSAycmVtOyB9XG4gIC50aGVtZS1kYXJrIC50YWJsZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjNDI1MDVmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcCB7XG4gICAgYmFja2dyb3VuZDogIzNlNDY0YztcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMTIwLCAxMjAsIDEyMCwgMC41KTtcbiAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAudGFibGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciB7XG4gICAgZm9udC1zaXplOiAxLjNyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuOHJlbTtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3Age1xuICAgIG1hcmdpbi10b3A6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3A6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogLTFyZW07XG4gICAgICBsZWZ0OiBjYWxjKDUwJSAtIDAuNXJlbSk7XG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7IH1cbiAgICAgIC50aGVtZS1kYXJrIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wOmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjNDI1MDVmIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcDphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNlNDY0YyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wOmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZmZmZmZmIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wLWxlZnQge1xuICAgIG1hcmdpbi10b3A6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtbGVmdDphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAtMXJlbTtcbiAgICAgIGxlZnQ6IDAuN3JlbTtcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtbGVmdDphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzQyNTA1ZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNDI1MDVmOyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcC1sZWZ0OmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjM2U0NjRjIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICMzZTQ2NGM7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcC1sZWZ0OmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZmZmZmZmIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmY7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQge1xuICAgIG1hcmdpbi10b3A6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQ6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogLTFyZW07XG4gICAgICByaWdodDogMC43cmVtO1xuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkOyB9XG4gICAgICAudGhlbWUtZGFyayAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcC1yaWdodDphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzQyNTA1ZiAjNDI1MDVmIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcC1yaWdodDphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNlNDY0YyAjM2U0NjRjIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQ6YWZ0ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6ICNmZmZmZmYgI2ZmZmZmZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbSB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAtMXJlbTtcbiAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMC41cmVtKTtcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b206YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNDI1MDVmIHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICMzZTQ2NGMgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmYgdHJhbnNwYXJlbnQ7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b20tbGVmdCB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLWxlZnQ6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IC0xcmVtO1xuICAgICAgbGVmdDogMC43cmVtO1xuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkOyB9XG4gICAgICAudGhlbWUtZGFyayAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzQyNTA1ZiAjNDI1MDVmOyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzNlNDY0YyAjM2U0NjRjOyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b20tbGVmdDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmYgI2ZmZmZmZjsgfVxuICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1yaWdodCB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAtMXJlbTtcbiAgICAgIHJpZ2h0OiAwLjdyZW07XG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7IH1cbiAgICAgIC50aGVtZS1kYXJrIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIzQyNTA1ZiAjNDI1MDVmIHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1yaWdodDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICMzZTQ2NGMgIzNlNDY0YyB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgI2ZmZmZmZiAjZmZmZmZmIHRyYW5zcGFyZW50OyB9XG4gIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtbGVmdCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IGNhbGMoNTAlIC0gMC41cmVtKTtcbiAgICAgIHJpZ2h0OiAtMXJlbTtcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0OmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNDI1MDVmOyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWxlZnQ6YWZ0ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICMzZTQ2NGM7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWxlZnQ6YWZ0ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmY7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodCB7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07IH1cbiAgICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiBjYWxjKDUwJSAtIDAuNXJlbSk7XG4gICAgICBsZWZ0OiAtMXJlbTtcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICM0MjUwNWYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS1ncmF5IC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtcmlnaHQ6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAjM2U0NjRjIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICNmZmZmZmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cblxuLnRhYmxlLXRvb2x0aXAtZGltZW5zaW9ucyAudG9vbHRpcC1pbm5lciB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICBtYXgtd2lkdGg6IDIwcmVtO1xuICBtYXgtaGVpZ2h0OiAxMHJlbTsgfVxuXG4uYmFsYW5jZS10b29sdGlwIHtcbiAgcGFkZGluZzogMS4zcmVtOyB9XG4gIC50aGVtZS1kYXJrIC5iYWxhbmNlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICM0MjUwNWY7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS1ncmF5IC5iYWxhbmNlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICMzZTQ2NGM7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS13aGl0ZSAuYmFsYW5jZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMTIwLCAxMjAsIDEyMCwgMC41KTtcbiAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZm9udC1zaXplOiAxLjNyZW07IH1cbiAgICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5hdmFpbGFibGUge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMS43cmVtOyB9XG4gICAgICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5hdmFpbGFibGUgYiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7IH1cbiAgICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5sb2NrZWQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMC43cmVtOyB9XG4gICAgICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5sb2NrZWQgYiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7IH1cbiAgICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5saW5rIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjsgfVxuICAgICAgLnRoZW1lLWRhcmsgLmJhbGFuY2UtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAubGluayB7XG4gICAgICAgIGNvbG9yOiAjNGRiMWZmOyB9XG4gICAgICAudGhlbWUtZ3JheSAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5saW5rIHtcbiAgICAgICAgY29sb3I6ICM0MmE1ZjU7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5saW5rIHtcbiAgICAgICAgY29sb3I6ICMyYzk1ZjE7IH1cbiAgLmJhbGFuY2UtdG9vbHRpcC5uZy10b29sdGlwLXRvcCB7XG4gICAgbWFyZ2luLXRvcDogLTFyZW07IH1cbiAgLmJhbGFuY2UtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbSB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAuYmFsYW5jZS10b29sdGlwLm5nLXRvb2x0aXAtbGVmdCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtOyB9XG4gIC5iYWxhbmNlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodCB7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07IH1cblxuLmFjY291bnQtdG9vbHRpcCAudG9vbHRpcC1pbm5lciB7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIG1heC13aWR0aDogMThyZW07IH1cblxuLmNvbW1lbnQtdG9vbHRpcCAudG9vbHRpcC1pbm5lciB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICBtYXgtd2lkdGg6IDUwcmVtO1xuICBtYXgtaGVpZ2h0OiAyNXJlbTsgfVxuXG4udXBkYXRlLXRvb2x0aXAge1xuICBwYWRkaW5nOiAxLjVyZW07IH1cbiAgLnRoZW1lLWRhcmsgLnVwZGF0ZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjNDI1MDVmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAudXBkYXRlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICMzZTQ2NGM7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS13aGl0ZSAudXBkYXRlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgxMjAsIDEyMCwgMTIwLCAwLjUpO1xuICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gIC50aGVtZS1kYXJrIC51cGRhdGUtdG9vbHRpcC5pbXBvcnRhbnQge1xuICAgIGJhY2tncm91bmQ6ICM1ZjJiMTE7XG4gICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgLnRoZW1lLWdyYXkgLnVwZGF0ZS10b29sdGlwLmltcG9ydGFudCB7XG4gICAgYmFja2dyb3VuZDogIzU1MjQwZDtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwLmltcG9ydGFudCB7XG4gICAgYmFja2dyb3VuZDogI2VmNmMwMDtcbiAgICBjb2xvcjogI2ZmZmZmZjsgfVxuICAudGhlbWUtZGFyayAudXBkYXRlLXRvb2x0aXAuaW1wb3J0YW50Lm5nLXRvb2x0aXAtbGVmdC1ib3R0b206YWZ0ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzVmMmIxMSAjNWYyYjExOyB9XG4gIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5pbXBvcnRhbnQubmctdG9vbHRpcC1sZWZ0LWJvdHRvbTphZnRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNTUyNDBkICM1NTI0MGQ7IH1cbiAgLnRoZW1lLXdoaXRlIC51cGRhdGUtdG9vbHRpcC5pbXBvcnRhbnQubmctdG9vbHRpcC1sZWZ0LWJvdHRvbTphZnRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjZWY2YzAwICNlZjZjMDA7IH1cbiAgLnRoZW1lLWRhcmsgLnVwZGF0ZS10b29sdGlwLmltcG9ydGFudC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbTpiZWZvcmUge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIzVmMmIxMSAjNWYyYjExIHRyYW5zcGFyZW50OyB9XG4gIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5pbXBvcnRhbnQubmctdG9vbHRpcC1yaWdodC1ib3R0b206YmVmb3JlIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICM1NTI0MGQgIzU1MjQwZCB0cmFuc3BhcmVudDsgfVxuICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwLmltcG9ydGFudC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbTpiZWZvcmUge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgI2VmNmMwMCAjZWY2YzAwIHRyYW5zcGFyZW50OyB9XG4gIC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbCB7XG4gICAgcGFkZGluZzogMi41cmVtOyB9XG4gICAgLnRoZW1lLWRhcmsgLnVwZGF0ZS10b29sdGlwLmNyaXRpY2FsIHtcbiAgICAgIGJhY2tncm91bmQ6ICM1ZjFkMWQ7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbCB7XG4gICAgICBiYWNrZ3JvdW5kOiAjNGMxOTE5O1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwLmNyaXRpY2FsIHtcbiAgICAgIGJhY2tncm91bmQ6ICNlNTM5MzU7XG4gICAgICBjb2xvcjogI2ZmZmZmZjsgfVxuICAgIC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbCAudG9vbHRpcC1pbm5lciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cbiAgICAudGhlbWUtZGFyayAudXBkYXRlLXRvb2x0aXAuY3JpdGljYWwubmctdG9vbHRpcC1sZWZ0LWJvdHRvbTphZnRlciB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM1ZjFkMWQgIzVmMWQxZDsgfVxuICAgIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbC5uZy10b29sdGlwLWxlZnQtYm90dG9tOmFmdGVyIHtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzRjMTkxOSAjNGMxOTE5OyB9XG4gICAgLnRoZW1lLXdoaXRlIC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbC5uZy10b29sdGlwLWxlZnQtYm90dG9tOmFmdGVyIHtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2U1MzkzNSAjZTUzOTM1OyB9XG4gICAgLnRoZW1lLWRhcmsgLnVwZGF0ZS10b29sdGlwLmNyaXRpY2FsLm5nLXRvb2x0aXAtcmlnaHQtYm90dG9tOmJlZm9yZSB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICM1ZjFkMWQgIzVmMWQxZCB0cmFuc3BhcmVudDsgfVxuICAgIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbTpiZWZvcmUge1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAjNGMxOTE5ICM0YzE5MTkgdHJhbnNwYXJlbnQ7IH1cbiAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwLmNyaXRpY2FsLm5nLXRvb2x0aXAtcmlnaHQtYm90dG9tOmJlZm9yZSB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICNlNTM5MzUgI2U1MzkzNSB0cmFuc3BhcmVudDsgfVxuICAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIge1xuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjhyZW07XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB9XG4gICAgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5zdGFuZGFyZC11cGRhdGUge1xuICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICBsaW5lLWhlaWdodDogMi43cmVtOyB9XG4gICAgICAudGhlbWUtZGFyayAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLnN0YW5kYXJkLXVwZGF0ZSB7XG4gICAgICAgIGNvbG9yOiAjNGRiMWZmOyB9XG4gICAgICAudGhlbWUtZ3JheSAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLnN0YW5kYXJkLXVwZGF0ZSB7XG4gICAgICAgIGNvbG9yOiAjNDJhNWY1OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5zdGFuZGFyZC11cGRhdGUge1xuICAgICAgICBjb2xvcjogIzJjOTVmMTsgfVxuICAgIC51cGRhdGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAuaW1wb3J0YW50LXVwZGF0ZSB7XG4gICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjdyZW07IH1cbiAgICAgIC50aGVtZS1kYXJrIC51cGRhdGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAuaW1wb3J0YW50LXVwZGF0ZSB7XG4gICAgICAgIGNvbG9yOiAjZmY2ZjAwOyB9XG4gICAgICAudGhlbWUtZ3JheSAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLmltcG9ydGFudC11cGRhdGUge1xuICAgICAgICBjb2xvcjogI2ZmNmYwMDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC51cGRhdGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAuaW1wb3J0YW50LXVwZGF0ZSB7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmOyB9XG4gICAgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5jcml0aWNhbC11cGRhdGUge1xuICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICBsaW5lLWhlaWdodDogMi43cmVtO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gICAgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC53cm9uZy10aW1lIHtcbiAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDIuN3JlbTsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC53cm9uZy10aW1lIHtcbiAgICAgICAgY29sb3I6ICNmZjZmMDA7IH1cbiAgICAgIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAud3JvbmctdGltZSB7XG4gICAgICAgIGNvbG9yOiAjZmY2ZjAwOyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC53cm9uZy10aW1lIHtcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7IH1cbiAgICAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLmljb24ge1xuICAgICAgbWFyZ2luOiAxLjVyZW0gMDtcbiAgICAgIHdpZHRoOiA1cmVtO1xuICAgICAgaGVpZ2h0OiA1cmVtOyB9XG4gICAgICAudGhlbWUtZGFyayAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLmljb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG4gICAgICAudGhlbWUtZ3JheSAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLmljb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxuICAudXBkYXRlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0LWJvdHRvbSB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xLjVyZW07IH1cbiAgICAudXBkYXRlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0LWJvdHRvbTphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAwLjZyZW07XG4gICAgICByaWdodDogLTFyZW07XG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7IH1cbiAgICAgIC50aGVtZS1kYXJrIC51cGRhdGUtdG9vbHRpcC5uZy10b29sdGlwLWxlZnQtYm90dG9tOmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNDI1MDVmICM0MjUwNWY7IH1cbiAgICAgIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5uZy10b29sdGlwLWxlZnQtYm90dG9tOmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjM2U0NjRjICMzZTQ2NGM7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudXBkYXRlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0LWJvdHRvbTphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2ZmZmZmZiAjZmZmZmZmOyB9XG4gIC51cGRhdGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbSB7XG4gICAgbWFyZ2luLWxlZnQ6IDEuNXJlbTsgfVxuICAgIC51cGRhdGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbTpiZWZvcmUge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogMC42cmVtO1xuICAgICAgbGVmdDogLTFyZW07XG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7IH1cbiAgICAgIC50aGVtZS1kYXJrIC51cGRhdGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbTpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICM0MjUwNWYgIzQyNTA1ZiB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLnVwZGF0ZS10b29sdGlwLm5nLXRvb2x0aXAtcmlnaHQtYm90dG9tOmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIzNlNDY0YyAjM2U0NjRjIHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwLm5nLXRvb2x0aXAtcmlnaHQtYm90dG9tOmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgI2ZmZmZmZiAjZmZmZmZmIHRyYW5zcGFyZW50OyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgLmRyb3Bkb3duLW1lbnUge1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDA7IH1cbiAgLnRoZW1lLWRhcmsgLm5neC1jb250ZXh0bWVudSAuZHJvcGRvd24tbWVudSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJiMzY0NDtcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSk7IH1cbiAgLnRoZW1lLWdyYXkgLm5neC1jb250ZXh0bWVudSAuZHJvcGRvd24tbWVudSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSk7IH1cbiAgLnRoZW1lLXdoaXRlIC5uZ3gtY29udGV4dG1lbnUgLmRyb3Bkb3duLW1lbnUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgxMjAsIDEyMCwgMTIwLCAwLjUpOyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgbGkge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEuM3JlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwLjVlbSAxZW07IH1cbiAgLnRoZW1lLWRhcmsgLm5neC1jb250ZXh0bWVudSBhIHtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAubmd4LWNvbnRleHRtZW51IGEge1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS13aGl0ZSAubmd4LWNvbnRleHRtZW51IGEge1xuICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gIC50aGVtZS1kYXJrIC5uZ3gtY29udGV4dG1lbnUgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAubmd4LWNvbnRleHRtZW51IGE6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1MTU5NjA7XG4gICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgLnRoZW1lLXdoaXRlIC5uZ3gtY29udGV4dG1lbnUgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICBjb2xvcjogIzQzNDU0YjsgfVxuXG4ubmctc2VsZWN0LmN1c3RvbS1zZWxlY3Qge1xuICB3aWR0aDogMTAwJTsgfVxuICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICBoZWlnaHQ6IDQuMnJlbTsgfVxuICAgIC50aGVtZS1kYXJrIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctc2VsZWN0LWNvbnRhaW5lciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZTI3O1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtZ3JheSAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctc2VsZWN0LWNvbnRhaW5lciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xuICAgICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciB7XG4gICAgICBwYWRkaW5nOiAwOyB9XG4gICAgICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctaW5wdXQge1xuICAgICAgICB0b3A6IGF1dG87IH1cbiAgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCB7XG4gICAgYm9yZGVyOiBub25lOyB9XG4gICAgLnRoZW1lLWRhcmsgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZTI3OyB9XG4gICAgLnRoZW1lLWdyYXkgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjkyZDMxOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjsgfVxuICAgIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ge1xuICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICBwYWRkaW5nOiAxcmVtOyB9XG4gICAgICAudGhlbWUtZGFyayAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzE3MWUyNztcbiAgICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAgIC50aGVtZS1ncmF5IC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjkyZDMxO1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xuICAgICAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAgICAgLnRoZW1lLWRhcmsgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tbWFya2VkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg1OCwgNjksIDg1LCAwLjUpO1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tbWFya2VkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg1OCwgNjIsIDY2LCAwLjUpO1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ubmctb3B0aW9uLW1hcmtlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjQwLCAyNDAsIDI0MCwgMC41KTtcbiAgICAgICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgICAgIC50aGVtZS1kYXJrIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ubmctb3B0aW9uLXNlbGVjdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpO1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSk7XG4gICAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgICAudGhlbWUtd2hpdGUgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIyNCwgMjI0LCAyMjQsIDAuNSk7XG4gICAgICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gICAgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXM6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgd2lkdGg6IDFyZW07XG4gICAgICBoZWlnaHQ6IDFyZW07IH1cbiAgICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtczo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH1cbiAgICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjtcbiAgICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gICAgICBib3JkZXI6IDAuMjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07IH1cbiAgICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZGFyayBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCB7XG4gIGJhY2tncm91bmQ6IHVybCh+c3JjL2Fzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC1kYXJrLnBuZyk7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIHtcbiAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWdyYXkucG5nKTtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIHtcbiAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLXdoaXRlLnBuZyk7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLmVycm9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5lcnJvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLmVycm9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uc3VjY2VzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NmMxNzI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uaW5mbyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uaW5mbyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLmluZm8ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5hY3Rpb24tYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjtcbiAgY29sb3I6ICMxMTE5MjE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmFjdGlvbi1idXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1O1xuICBjb2xvcjogIzFhMWExYTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmFjdGlvbi1idXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxO1xuICBjb2xvcjogI2ZlZmVmZTsgfVxuXG4udGhlbWUtZGFyayBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY2xvc2UtYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY2xvc2UtYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUxNTk2MDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNsb3NlLWJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIHtcbiAgYm9yZGVyLXRvcDogMC4ycmVtIHNvbGlkICMyYjM2NDQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIHtcbiAgYm9yZGVyLXRvcDogMC4ycmVtIHNvbGlkICMyZjM0Mzg7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSB7XG4gIGJvcmRlci10b3A6IDAuMnJlbSBzb2xpZCAjZWJlYmViOyB9XG5cbi50aGVtZS1kYXJrIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLmxhYmVsIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwubGFiZWwge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwubGFiZWwge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtdHJhbnNhY3Rpb24tZGV0YWlscyAudGFibGUgLnJvdyAuY2VsbC52YWx1ZSB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLnZhbHVlIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLnZhbHVlIHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwua2V5LXZhbHVlIHtcbiAgY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwua2V5LXZhbHVlIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLmtleS12YWx1ZSB7XG4gIGNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1wcm9ncmVzcy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtcHJvZ3Jlc3MtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wcm9ncmVzcy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtcHJvZ3Jlc3MtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzZjRhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wcm9ncmVzcy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNjNhM2U7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wcm9ncmVzcy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2RjZGM7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXByb2dyZXNzLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5wcm9ncmVzcy1iYXItZnVsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXByb2dyZXNzLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5wcm9ncmVzcy1iYXItZnVsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0N2NmOGQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wcm9ncmVzcy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciAucHJvZ3Jlc3MtYmFyLWZ1bGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1vcGVuLXdhbGxldC1tb2RhbCAubW9kYWwge1xuICBiYWNrZ3JvdW5kOiB1cmwofnNyYy9hc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtZGFyay5wbmcpO1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtb3Blbi13YWxsZXQtbW9kYWwgLm1vZGFsIHtcbiAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWdyYXkucG5nKTtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1vcGVuLXdhbGxldC1tb2RhbCAubW9kYWwge1xuICBiYWNrZ3JvdW5kOiB1cmwofnNyYy9hc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtd2hpdGUucG5nKTtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuYXBwLW1haW4sIGFwcC1jcmVhdGUtd2FsbGV0LCBhcHAtb3Blbi13YWxsZXQsIGFwcC1yZXN0b3JlLXdhbGxldCwgYXBwLXNlZWQtcGhyYXNlLCBhcHAtd2FsbGV0LWRldGFpbHMsIGFwcC1hc3NpZ24tYWxpYXMsIGFwcC1lZGl0LWFsaWFzLCBhcHAtdHJhbnNmZXItYWxpYXMsIGFwcC1zZXR0aW5ncywgYXBwLWxvZ2luIHtcbiAgZmxleDogMSAxIGF1dG87XG4gIHBhZGRpbmc6IDNyZW07XG4gIG1pbi13aWR0aDogODVyZW07IH1cbiAgYXBwLW1haW4gLmNvbnRlbnQsIGFwcC1jcmVhdGUtd2FsbGV0IC5jb250ZW50LCBhcHAtb3Blbi13YWxsZXQgLmNvbnRlbnQsIGFwcC1yZXN0b3JlLXdhbGxldCAuY29udGVudCwgYXBwLXNlZWQtcGhyYXNlIC5jb250ZW50LCBhcHAtd2FsbGV0LWRldGFpbHMgLmNvbnRlbnQsIGFwcC1hc3NpZ24tYWxpYXMgLmNvbnRlbnQsIGFwcC1lZGl0LWFsaWFzIC5jb250ZW50LCBhcHAtdHJhbnNmZXItYWxpYXMgLmNvbnRlbnQsIGFwcC1zZXR0aW5ncyAuY29udGVudCwgYXBwLWxvZ2luIC5jb250ZW50IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogM3JlbTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlOyB9XG4gICAgLnRoZW1lLWRhcmsgYXBwLW1haW4gLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1jcmVhdGUtd2FsbGV0IC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtb3Blbi13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1yZXN0b3JlLXdhbGxldCAuY29udGVudCwgLnRoZW1lLWRhcmsgYXBwLXNlZWQtcGhyYXNlIC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtd2FsbGV0LWRldGFpbHMgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1hc3NpZ24tYWxpYXMgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1lZGl0LWFsaWFzIC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtdHJhbnNmZXItYWxpYXMgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1zZXR0aW5ncyAuY29udGVudCwgLnRoZW1lLWRhcmsgYXBwLWxvZ2luIC5jb250ZW50IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KTtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLWdyYXkgYXBwLW1haW4gLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1jcmVhdGUtd2FsbGV0IC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtb3Blbi13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1yZXN0b3JlLXdhbGxldCAuY29udGVudCwgLnRoZW1lLWdyYXkgYXBwLXNlZWQtcGhyYXNlIC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtd2FsbGV0LWRldGFpbHMgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1hc3NpZ24tYWxpYXMgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1lZGl0LWFsaWFzIC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtdHJhbnNmZXItYWxpYXMgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1zZXR0aW5ncyAuY29udGVudCwgLnRoZW1lLWdyYXkgYXBwLWxvZ2luIC5jb250ZW50IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzcsIDQwLCA0MywgMC41KTtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLXdoaXRlIGFwcC1tYWluIC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLWNyZWF0ZS13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtb3Blbi13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtcmVzdG9yZS13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtc2VlZC1waHJhc2UgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtd2FsbGV0LWRldGFpbHMgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtYXNzaWduLWFsaWFzIC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLWVkaXQtYWxpYXMgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtdHJhbnNmZXItYWxpYXMgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtc2V0dGluZ3MgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtbG9naW4gLmNvbnRlbnQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAgICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgICBhcHAtbWFpbiAuY29udGVudCAuaGVhZCwgYXBwLWNyZWF0ZS13YWxsZXQgLmNvbnRlbnQgLmhlYWQsIGFwcC1vcGVuLXdhbGxldCAuY29udGVudCAuaGVhZCwgYXBwLXJlc3RvcmUtd2FsbGV0IC5jb250ZW50IC5oZWFkLCBhcHAtc2VlZC1waHJhc2UgLmNvbnRlbnQgLmhlYWQsIGFwcC13YWxsZXQtZGV0YWlscyAuY29udGVudCAuaGVhZCwgYXBwLWFzc2lnbi1hbGlhcyAuY29udGVudCAuaGVhZCwgYXBwLWVkaXQtYWxpYXMgLmNvbnRlbnQgLmhlYWQsIGFwcC10cmFuc2Zlci1hbGlhcyAuY29udGVudCAuaGVhZCwgYXBwLXNldHRpbmdzIC5jb250ZW50IC5oZWFkLCBhcHAtbG9naW4gLmNvbnRlbnQgLmhlYWQge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMDsgfVxuXG4udGhlbWUtZGFyayBhcHAtbWFpbiAuY29udGVudCAuYWRkLXdhbGxldCAuYWRkLXdhbGxldC1oZWxwIHtcbiAgY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1haW4gLmNvbnRlbnQgLmFkZC13YWxsZXQgLmFkZC13YWxsZXQtaGVscCB7XG4gIGNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtbWFpbiAuY29udGVudCAuYWRkLXdhbGxldCAuYWRkLXdhbGxldC1oZWxwIHtcbiAgY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLW1haW4gLmNvbnRlbnQgLmFkZC13YWxsZXQgLmFkZC13YWxsZXQtaGVscCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1haW4gLmNvbnRlbnQgLmFkZC13YWxsZXQgLmFkZC13YWxsZXQtaGVscCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tYWluIC5jb250ZW50IC5hZGQtd2FsbGV0IC5hZGQtd2FsbGV0LWhlbHAgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zZWVkLXBocmFzZSAuc2VlZC1waHJhc2UtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxNzFlMjc7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zZWVkLXBocmFzZSAuc2VlZC1waHJhc2UtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOTJkMzE7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2VlZC1waHJhc2UgLnNlZWQtcGhyYXNlLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0LWRldGFpbHMgLnNlZWQtcGhyYXNlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE3MWUyNzsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0LWRldGFpbHMgLnNlZWQtcGhyYXNlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldC1kZXRhaWxzIC5zZWVkLXBocmFzZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7IH1cblxuYXBwLXNldHRpbmdzIC5jb250ZW50IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH1cbiAgLnRoZW1lLWRhcmsgYXBwLXNldHRpbmdzIC5jb250ZW50IC50aGVtZS1zZWxlY3Rpb24ge1xuICAgIGNvbG9yOiAjNTU2NTc2OyB9XG4gIC50aGVtZS1ncmF5IGFwcC1zZXR0aW5ncyAuY29udGVudCAudGhlbWUtc2VsZWN0aW9uIHtcbiAgICBjb2xvcjogIzU2NWM2MjsgfVxuICAudGhlbWUtd2hpdGUgYXBwLXNldHRpbmdzIC5jb250ZW50IC50aGVtZS1zZWxlY3Rpb24ge1xuICAgIGNvbG9yOiAjYTBhNWFiOyB9XG4gIC50aGVtZS1kYXJrIGFwcC1zZXR0aW5ncyAuY29udGVudCAuc2NhbGUtc2VsZWN0aW9uIC5idXR0b24tYmxvY2sge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjMsIDMxLCAzOSwgMC41KTsgfVxuICAudGhlbWUtZ3JheSBhcHAtc2V0dGluZ3MgLmNvbnRlbnQgLnNjYWxlLXNlbGVjdGlvbiAuYnV0dG9uLWJsb2NrIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI4LCAzMCwgMzMsIDAuNSk7IH1cbiAgLnRoZW1lLXdoaXRlIGFwcC1zZXR0aW5ncyAuY29udGVudCAuc2NhbGUtc2VsZWN0aW9uIC5idXR0b24tYmxvY2sge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjI0LCAyMjQsIDIyNCwgMC41KTsgfVxuICAudGhlbWUtZGFyayBhcHAtc2V0dGluZ3MgLmNvbnRlbnQgLnNjYWxlLXNlbGVjdGlvbiAuYnV0dG9uLWJsb2NrIC5sYWJlbCB7XG4gICAgY29sb3I6ICM1NTY1NzY7IH1cbiAgLnRoZW1lLWdyYXkgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jayAubGFiZWwge1xuICAgIGNvbG9yOiAjNTY1YzYyOyB9XG4gIC50aGVtZS13aGl0ZSBhcHAtc2V0dGluZ3MgLmNvbnRlbnQgLnNjYWxlLXNlbGVjdGlvbiAuYnV0dG9uLWJsb2NrIC5sYWJlbCB7XG4gICAgY29sb3I6ICNhMGE1YWI7IH1cbiAgLnRoZW1lLWRhcmsgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jay5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cbiAgLnRoZW1lLWdyYXkgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jay5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cbiAgLnRoZW1lLXdoaXRlIGFwcC1zZXR0aW5ncyAuY29udGVudCAuc2NhbGUtc2VsZWN0aW9uIC5idXR0b24tYmxvY2suYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG4gIC50aGVtZS1kYXJrIGFwcC1zZXR0aW5ncyAuY29udGVudCAuc2NhbGUtc2VsZWN0aW9uIC5idXR0b24tYmxvY2suYWN0aXZlIC5sYWJlbCB7XG4gICAgY29sb3I6ICM0ZGIxZmY7IH1cbiAgLnRoZW1lLWdyYXkgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jay5hY3RpdmUgLmxhYmVsIHtcbiAgICBjb2xvcjogIzQyYTVmNTsgfVxuICAudGhlbWUtd2hpdGUgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jay5hY3RpdmUgLmxhYmVsIHtcbiAgICBjb2xvcjogIzJjOTVmMTsgfVxuXG5hcHAtbG9naW4ge1xuICBtaW4td2lkdGg6IGluaGVyaXQ7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZjI3OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFjMWUyMTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1oZWFkZXIgaDMge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1oZWFkZXIgaDMge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtaGVhZGVyIGgzIHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtaGVhZGVyIGJ1dHRvbiB7XG4gIGNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWhlYWRlciBidXR0b24ge1xuICBjb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtaGVhZGVyIGJ1dHRvbiB7XG4gIGNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnRleHQge1xuICBjb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnRleHQge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC50ZXh0IHtcbiAgY29sb3I6ICNhMGE1YWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjtcbiAgY29sb3I6ICMxMTE5MjE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1O1xuICBjb2xvcjogIzFhMWExYTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxO1xuICBjb2xvcjogI2ZlZmVmZTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDNmNGE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzYzYTNlOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2RjZGM7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIgLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIgLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdy5hY2NvdW50LXN5bmNocm9uaXphdGlvbiB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdy5hY2NvdW50LXN5bmNocm9uaXphdGlvbiB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpO1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzNywgNDAsIDQzLCAwLjUpO1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZTg4ZTU7XG4gIGNvbG9yOiAjZmZmZmZmOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLnRleHQge1xuICBjb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC50ZXh0IHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLnRleHQge1xuICBjb2xvcjogIzkxYmFmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmO1xuICBjb2xvcjogIzExMTkyMTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1O1xuICBjb2xvcjogIzFhMWExYTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAuc3dpdGNoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAuc3dpdGNoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLnN3aXRjaCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xuICBjb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93LmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xuICBjb2xvcjogIzkxYmFmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQ6aG92ZXI6bm90KC5hY3RpdmUpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg1OCwgNjksIDg1LCAwLjUpOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudDpob3Zlcjpub3QoLmFjdGl2ZSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDU4LCA2MiwgNjYsIDAuNSk7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudDpob3Zlcjpub3QoLmFjdGl2ZSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0MCwgMjQwLCAyNDAsIDAuNSk7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHM6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB0cmFuc3BhcmVudCAwJSwgIzE3MWYyNyAxMDAlKTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50czphZnRlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50IDAlLCAjMWMxZTIxIDEwMCUpOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50czphZnRlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50IDAlLCB3aGl0ZSAxMDAlKTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zZXR0aW5ncyB7XG4gIGJvcmRlci1ib3R0b206IDAuMnJlbSBzb2xpZCAjMWYyODMzOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIHtcbiAgYm9yZGVyLWJvdHRvbTogMC4ycmVtIHNvbGlkICMyZTMzMzc7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIHtcbiAgYm9yZGVyLWJvdHRvbTogMC4ycmVtIHNvbGlkICNlYmViZWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgLndyYXAtYnV0dG9uIGJ1dHRvbiB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbiBidXR0b24ge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgLndyYXAtYnV0dG9uIGJ1dHRvbiB7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbiBidXR0b24gLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbiBidXR0b24gLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zZXR0aW5ncyAud3JhcC1idXR0b24gYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zZXR0aW5ncyAud3JhcC1idXR0b24uYWN0aXZlIGJ1dHRvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KSAhaW1wb3J0YW50O1xuICBjb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbi5hY3RpdmUgYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzNywgNDAsIDQzLCAwLjUpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbi5hY3RpdmUgYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFlODhlNSAhaW1wb3J0YW50O1xuICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbi5hY3RpdmUgYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZiAhaW1wb3J0YW50OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbi5hY3RpdmUgYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNSAhaW1wb3J0YW50OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zZXR0aW5ncyAud3JhcC1idXR0b24uYWN0aXZlIGJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIHtcbiAgY29sb3I6ICNhMGE1YWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAub2ZmbGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLm9mZmxpbmU6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAub2ZmbGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLm9ubGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNkYTlkOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLm9ubGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5vbmxpbmU6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5zeW5jaW5nIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzZjRhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnN5bmNpbmcgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNjNhM2U7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnN5bmNpbmcgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2RjZGM7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAuc3luY2luZyAucHJvZ3Jlc3MtYmFyIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5zeW5jaW5nIC5wcm9ncmVzcy1iYXIgLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5zeW5jaW5nIC5wcm9ncmVzcy1iYXIgLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLmxvYWRpbmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNkYTlkOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLmxvYWRpbmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5sb2FkaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5zdGFuZGFyZCB7XG4gIGNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLnN0YW5kYXJkIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLnN0YW5kYXJkIHtcbiAgY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaW1wb3J0YW50IHtcbiAgY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaW1wb3J0YW50IHtcbiAgY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLmltcG9ydGFudCB7XG4gIGNvbG9yOiAjZmY2ZjAwOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLmNyaXRpY2FsIHtcbiAgY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuY3JpdGljYWwge1xuICBjb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuY3JpdGljYWwge1xuICBjb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC50aW1lIHtcbiAgY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAudGltZSB7XG4gIGNvbG9yOiAjZmY2ZjAwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC50aW1lIHtcbiAgY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaWNvbi5zdGFuZGFyZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaWNvbi5zdGFuZGFyZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLmljb24uc3RhbmRhcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLmljb24uaW1wb3J0YW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5pY29uLmltcG9ydGFudCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLmljb24uaW1wb3J0YW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5pY29uLmNyaXRpY2FsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5pY29uLmNyaXRpY2FsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaWNvbi5jcml0aWNhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaWNvbi50aW1lIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5pY29uLnRpbWUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5pY29uLnRpbWUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQge1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC5oZWFkZXIgYnV0dG9uIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAuaGVhZGVyIGJ1dHRvbiB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC5oZWFkZXIgYnV0dG9uIHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAuaGVhZGVyIGJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAuaGVhZGVyIGJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLmhlYWRlciBidXR0b24gLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLmhlYWRlciAuYWxpYXMgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQgLmhlYWRlciAuYWxpYXMgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC5oZWFkZXIgLmFsaWFzIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC5hZGRyZXNzIHtcbiAgY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAuYWRkcmVzcyB7XG4gIGNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC5hZGRyZXNzIHtcbiAgY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAuYWRkcmVzcyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAuYWRkcmVzcyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLmFkZHJlc3MgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzLCAzMSwgMzksIDAuNSk7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjgsIDMwLCAzMywgMC41KTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjI0LCAyMjQsIDIyNCwgMC41KTsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjtcbiAgY29sb3I6ICMxMTE5MjE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTtcbiAgY29sb3I6ICMxYTFhMWE7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIgLmluZGljYXRvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpOyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzNywgNDAsIDQzLCAwLjUpOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiOmhvdmVyOm5vdCguYWN0aXZlKTpub3QoLmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTgsIDY5LCA4NSwgMC41KTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiOmhvdmVyOm5vdCguYWN0aXZlKTpub3QoLmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTgsIDYyLCA2NiwgMC41KTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYjpob3Zlcjpub3QoLmFjdGl2ZSk6bm90KC5kaXNhYmxlZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSk7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2VuZCAuZm9ybS1zZW5kIC5zZW5kLXNlbGVjdCB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zZW5kIC5mb3JtLXNlbmQgLnNlbmQtc2VsZWN0IHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zZW5kIC5mb3JtLXNlbmQgLnNlbmQtc2VsZWN0IHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNlbmQgLmZvcm0tc2VuZCAuc2VuZC1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zZW5kIC5mb3JtLXNlbmQgLnNlbmQtc2VsZWN0IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNlbmQgLmZvcm0tc2VuZCAuc2VuZC1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zZW5kIC5mb3JtLXNlbmQgLmFkZGl0aW9uYWwtZGV0YWlscyB7XG4gIGJvcmRlcjogMC4ycmVtIHNvbGlkICMyYjM2NDQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNlbmQgLmZvcm0tc2VuZCAuYWRkaXRpb25hbC1kZXRhaWxzIHtcbiAgYm9yZGVyOiAwLjJyZW0gc29saWQgIzJmMzQzODsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNlbmQgLmZvcm0tc2VuZCAuYWRkaXRpb25hbC1kZXRhaWxzIHtcbiAgYm9yZGVyOiAwLjJyZW0gc29saWQgI2ViZWJlYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtcmVjZWl2ZSAuYnRuLWNvcHktYWRkcmVzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXJlY2VpdmUgLmJ0bi1jb3B5LWFkZHJlc3Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtcmVjZWl2ZSAuYnRuLWNvcHktYWRkcmVzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIubG9ja2VkLXRyYW5zYWN0aW9uIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIubG9ja2VkLXRyYW5zYWN0aW9uIHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyLmxvY2tlZC10cmFuc2FjdGlvbiB7XG4gIGNvbG9yOiAjYTBhNWFiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bisxKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxODIwMmE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzEpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI1MjkyZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzEpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxuXG4udGhlbWUtZGFyayBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rMikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTgyMDJhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bisyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNTI5MmQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bisyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzMpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzMpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0biszKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi50aGVtZS1kYXJrIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bis0KSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bis0KSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rNCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4udGhlbWUtZGFyayBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzIC5jb25maXJtYXRpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzZjRhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5zdGF0dXMgLmNvbmZpcm1hdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNjNhM2U7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5zdGF0dXMgLmNvbmZpcm1hdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2RjZGM7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cyAuY29uZmlybWF0aW9uIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzIC5jb25maXJtYXRpb24gLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzIC5jb25maXJtYXRpb24gLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5sb2NrLXRyYW5zYWN0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAubG9jay10cmFuc2FjdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5sb2NrLXRyYW5zYWN0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDsgfVxuXG4udGhlbWUtZGFyayBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzLnNlbmQgLnN0YXR1cy10cmFuc2FjdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cy5zZW5kIC5zdGF0dXMtdHJhbnNhY3Rpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzLnNlbmQgLnN0YXR1cy10cmFuc2FjdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cy5yZWNlaXZlZCAuc3RhdHVzLXRyYW5zYWN0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzLnJlY2VpdmVkIC5zdGF0dXMtdHJhbnNhY3Rpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzLnJlY2VpdmVkIC5zdGF0dXMtdHJhbnNhY3Rpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLm5ldywgLnRoZW1lLWRhcmsgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24uYWxlcnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLm5ldywgLnRoZW1lLWdyYXkgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24uYWxlcnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5uZXcsIC50aGVtZS13aGl0ZSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5hbGVydCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24ucHVyY2hhc2UsIC50aGVtZS1kYXJrIGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLnNlbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLnB1cmNoYXNlLCAudGhlbWUtZ3JheSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5zZWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24ucHVyY2hhc2UsIC50aGVtZS13aGl0ZSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5zZWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLnB1cmNoYXNlLXNlbGVjdCB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc2VsZWN0IHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc2VsZWN0IHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc2VsZWN0IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc3RhdGVzIHtcbiAgY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zdGF0ZXMge1xuICBjb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zdGF0ZXMge1xuICBjb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLmFkZGl0aW9uYWwtZGV0YWlscyB7XG4gIGJvcmRlcjogMC4ycmVtIHNvbGlkICMyYjM2NDQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5hZGRpdGlvbmFsLWRldGFpbHMge1xuICBib3JkZXI6IDAuMnJlbSBzb2xpZCAjMmYzNDM4OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLmFkZGl0aW9uYWwtZGV0YWlscyB7XG4gIGJvcmRlcjogMC4ycmVtIHNvbGlkICNlYmViZWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXB1cmNoYXNlIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzZjRhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM2M2EzZTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNkY2RjOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1wdXJjaGFzZSAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5wcm9ncmVzcy1iYXItZnVsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXB1cmNoYXNlIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIgLnByb2dyZXNzLWJhci1mdWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIgLnByb2dyZXNzLWJhci1mdWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG5hcHAtbWVzc2FnZXMgdGFibGUgdGJvZHkgdHIgdGQ6Zmlyc3QtY2hpbGQgc3BhbiB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tZXNzYWdlcyB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1lc3NhZ2VzIHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1lc3NhZ2VzIHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtdHlwaW5nLW1lc3NhZ2UgLmhlYWQgLmludGVybG9jdXRvciB7XG4gIGNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC10eXBpbmctbWVzc2FnZSAuaGVhZCAuaW50ZXJsb2N1dG9yIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10eXBpbmctbWVzc2FnZSAuaGVhZCAuaW50ZXJsb2N1dG9yIHtcbiAgY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5kYXRlIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5kYXRlIHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuZGF0ZSB7XG4gIGNvbG9yOiAjYTBhNWFiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYubXkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmEzNTQ0OyB9XG5cbi50aGVtZS1ncmF5IGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYubXkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzAzNjNjOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2Lm15IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfVxuXG5hcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2Lm15OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogLTEuMXJlbTtcbiAgYm9yZGVyOiAxLjJyZW0gc29saWQgdHJhbnNwYXJlbnQ7IH1cbiAgLnRoZW1lLWRhcmsgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5teTpiZWZvcmUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICMyYTM1NDQ7IH1cbiAgLnRoZW1lLWdyYXkgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5teTpiZWZvcmUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICMzMDM2M2M7IH1cbiAgLnRoZW1lLXdoaXRlIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYubXk6YmVmb3JlIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjZmZmOyB9XG5cbi50aGVtZS1kYXJrIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuYnVkZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTgyMDJhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuYnVkZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjUyOTJkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VkZWRlZDsgfVxuXG5hcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IC0xLjFyZW07XG4gIHRvcDogMDtcbiAgYm9yZGVyOiAxLjJyZW0gc29saWQgdHJhbnNwYXJlbnQ7IH1cbiAgLnRoZW1lLWRhcmsgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5idWRkeTphZnRlciB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogIzE4MjAyYTsgfVxuICAudGhlbWUtZ3JheSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5OmFmdGVyIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjMjUyOTJkOyB9XG4gIC50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5OmFmdGVyIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjZWRlZGVkOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zdGFraW5nIC5jaGFydC1oZWFkZXIgLmdlbmVyYWwgLmxhYmVsIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuZ2VuZXJhbCAubGFiZWwge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuZ2VuZXJhbCAubGFiZWwge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc3Rha2luZyAuY2hhcnQtaGVhZGVyIC5nZW5lcmFsIC5vcHRpb25zIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuZ2VuZXJhbCAub3B0aW9ucyB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc3Rha2luZyAuY2hhcnQtaGVhZGVyIC5nZW5lcmFsIC5vcHRpb25zIHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuc2VsZWN0ZWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBmbGV4LWdyb3c6IDE7XG4gIGZvbnQtc2l6ZTogMS42cmVtOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC50aXRsZSB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC50aXRsZSB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAudGl0bGUge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAub3B0aW9ucyBidXR0b24ge1xuICBjb2xvcjogI2UwZTBlMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJiMzY0NDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAub3B0aW9ucyBidXR0b24ge1xuICBjb2xvcjogI2UwZTBlMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLm9wdGlvbnMgYnV0dG9uIHtcbiAgY29sb3I6ICM0MzQ1NGI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLm9wdGlvbnMgYnV0dG9uLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLm9wdGlvbnMgYnV0dG9uLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MTU5NjA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC5vcHRpb25zIGJ1dHRvbi5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB9XG5cbi5pbnB1dC1ibG9jay1hbGlhcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICAuaW5wdXQtYmxvY2stYWxpYXMgLmFsaWFzLWRyb3Bkb3duIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA2LjVyZW07XG4gICAgbWF4LWhlaWdodDogMTByZW07XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgd2lkdGg6IDEwMCU7IH1cbiAgICAudGhlbWUtZGFyayAuaW5wdXQtYmxvY2stYWxpYXMgLmFsaWFzLWRyb3Bkb3duIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxNzFlMjc7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS1ncmF5IC5pbnB1dC1ibG9jay1hbGlhcyAuYWxpYXMtZHJvcGRvd24ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jay1hbGlhcyAuYWxpYXMtZHJvcGRvd24ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjtcbiAgICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gICAgLmlucHV0LWJsb2NrLWFsaWFzIC5hbGlhcy1kcm9wZG93biBkaXYge1xuICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICBwYWRkaW5nOiAxcmVtOyB9XG4gICAgICAudGhlbWUtZGFyayAuaW5wdXQtYmxvY2stYWxpYXMgLmFsaWFzLWRyb3Bkb3duIGRpdjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTgsIDY5LCA4NSwgMC41KTsgfVxuICAgICAgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrLWFsaWFzIC5hbGlhcy1kcm9wZG93biBkaXY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDU4LCA2MiwgNjYsIDAuNSk7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAuaW5wdXQtYmxvY2stYWxpYXMgLmFsaWFzLWRyb3Bkb3duIGRpdjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjQwLCAyNDAsIDI0MCwgMC41KTsgfVxuXG4uaGVhZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBmb250LXNpemU6IDEuM3JlbTtcbiAgcGFkZGluZzogMCAzcmVtO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAzcmVtOyB9XG4gIC50aGVtZS1kYXJrIC5oZWFkIHtcbiAgICBjb2xvcjogIzRkYjFmZjsgfVxuICAudGhlbWUtZ3JheSAuaGVhZCB7XG4gICAgY29sb3I6ICM0MmE1ZjU7IH1cbiAgLnRoZW1lLXdoaXRlIC5oZWFkIHtcbiAgICBjb2xvcjogIzJjOTVmMTsgfVxuICAuaGVhZCAuYnJlYWRjcnVtYnMgPiBzcGFuOm5vdCg6bGFzdC1jaGlsZCksIC5oZWFkIC5icmVhZGNydW1icyBhOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuICAgIG91dGxpbmUtc3R5bGU6IG5vbmU7IH1cbiAgICAuaGVhZCAuYnJlYWRjcnVtYnMgPiBzcGFuOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIsIC5oZWFkIC5icmVhZGNydW1icyBhOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwLjVyZW07XG4gICAgICByaWdodDogLTEuNXJlbTtcbiAgICAgIHdpZHRoOiAwLjlyZW07XG4gICAgICBoZWlnaHQ6IDAuOXJlbTtcbiAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9hcnJvdy1yaWdodC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgICBtYXNrLXNpemU6IGNvdmVyOyB9XG4gICAgICAudGhlbWUtZGFyayAuaGVhZCAuYnJlYWRjcnVtYnMgPiBzcGFuOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIsIC50aGVtZS1kYXJrIC5oZWFkIC5icmVhZGNydW1icyBhOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG4gICAgICAudGhlbWUtZ3JheSAuaGVhZCAuYnJlYWRjcnVtYnMgPiBzcGFuOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIsIC50aGVtZS1ncmF5IC5oZWFkIC5icmVhZGNydW1icyBhOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLmhlYWQgLmJyZWFkY3J1bWJzID4gc3Bhbjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyLCAudGhlbWUtd2hpdGUgLmhlYWQgLmJyZWFkY3J1bWJzIGE6bm90KDpsYXN0LWNoaWxkKTphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cbiAgLmhlYWQgLmJhY2stYnRuIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgY29sb3I6ICM0ZGIxZmY7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuM3JlbTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGhlaWdodDogYXV0bzsgfVxuICAgIC5oZWFkIC5iYWNrLWJ0biAuaWNvbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuN3JlbTtcbiAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9iYWNrLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICAgIHdpZHRoOiAwLjlyZW07XG4gICAgICBoZWlnaHQ6IDAuOXJlbTsgfVxuICAgICAgLnRoZW1lLWRhcmsgLmhlYWQgLmJhY2stYnRuIC5pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuICAgICAgLnRoZW1lLWdyYXkgLmhlYWQgLmJhY2stYnRuIC5pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC5oZWFkIC5iYWNrLWJ0biAuaWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnNjcm9sbGVkLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTsgfVxuXG4uc2Nyb2xsZWQtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfVxuXG4uc2Nyb2xsZWQtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU2NTc2O1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6IDAuMjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTsgfVxuXG4uc2Nyb2xsZWQtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU2NTc2OyB9XG5cbnRhYmxlIHtcbiAgZm9udC1zaXplOiAxLjNyZW07XG4gIHdpZHRoOiAxMDAlOyB9XG4gIHRhYmxlIHRoZWFkIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyB9XG4gICAgLnRoZW1lLWRhcmsgdGFibGUgdGhlYWQge1xuICAgICAgY29sb3I6ICM1NTY1NzY7IH1cbiAgICAudGhlbWUtZ3JheSB0YWJsZSB0aGVhZCB7XG4gICAgICBjb2xvcjogIzU2NWM2MjsgfVxuICAgIC50aGVtZS13aGl0ZSB0YWJsZSB0aGVhZCB7XG4gICAgICBjb2xvcjogI2EwYTVhYjsgfVxuICAgIHRhYmxlIHRoZWFkIHRyIHtcbiAgICAgIGhlaWdodDogNHJlbTsgfVxuICAgICAgdGFibGUgdGhlYWQgdHIgdGgge1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOyB9XG4gICAgICAgIHRhYmxlIHRoZWFkIHRyIHRoOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDNyZW07IH1cbiAgICAgICAgdGFibGUgdGhlYWQgdHIgdGg6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogM3JlbTsgfVxuICB0YWJsZSB0Ym9keSB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDsgfVxuICAgIC50aGVtZS1kYXJrIHRhYmxlIHRib2R5IHtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLWdyYXkgdGFibGUgdGJvZHkge1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtd2hpdGUgdGFibGUgdGJvZHkge1xuICAgICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgICB0YWJsZSB0Ym9keSB0ciB7XG4gICAgICBoZWlnaHQ6IDMuNXJlbTsgfVxuICAgICAgLnRoZW1lLWRhcmsgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTgyMDJhOyB9XG4gICAgICAudGhlbWUtZ3JheSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyNTI5MmQ7IH1cbiAgICAgIC50aGVtZS13aGl0ZSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7IH1cbiAgICAgIHRhYmxlIHRib2R5IHRyIHRkIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuN3JlbTtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBtYXgtd2lkdGg6IDIwcmVtOyB9XG4gICAgICAgIHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDNyZW07IH1cbiAgICAgICAgdGFibGUgdGJvZHkgdHIgdGQ6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogM3JlbTsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1MaWdodC50dGYpO1xuICBmb250LXdlaWdodDogMzAwOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogT3BlblNhbnM7XG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLVJlZ3VsYXIudHRmKTtcbiAgZm9udC13ZWlnaHQ6IDQwMDsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1TZW1pQm9sZC50dGYpO1xuICBmb250LXdlaWdodDogNjAwOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogT3BlblNhbnM7XG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLUJvbGQudHRmKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1FeHRyYUJvbGQudHRmKTtcbiAgZm9udC13ZWlnaHQ6IDgwMDsgfVxuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEwcHg7IH1cblxuYm9keSB7XG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxLjZyZW07XG4gIHdpZHRoOiAxMDB2dztcbiAgaGVpZ2h0OiAxMDB2aDsgfVxuICBib2R5LnRoZW1lLWRhcmsge1xuICAgIGJhY2tncm91bmQ6ICMxMzE5MjEgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWRhcmsucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsgfVxuICBib2R5LnRoZW1lLWdyYXkge1xuICAgIGJhY2tncm91bmQ6ICMxMDE0MTcgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWdyYXkucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsgfVxuICBib2R5LnRoZW1lLXdoaXRlIHtcbiAgICBiYWNrZ3JvdW5kOiAjZWVlZWVlIHVybChcImFzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC13aGl0ZS5wbmdcIikgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOyB9XG4gIGJvZHkgYXBwLXJvb3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlOyB9XG5cbi51cGRhdGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAuaWNvbiB7XG4gIG1hc2s6IHVybChhc3NldHMvaWNvbnMvdXBkYXRlLWFsZXJ0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjsgfVxuIiwiLm5nLXNlbGVjdC5uZy1zZWxlY3Qtb3BlbmVkPi5uZy1zZWxlY3QtY29udGFpbmVye2JhY2tncm91bmQ6I2ZmZjtib3JkZXItY29sb3I6I2IzYjNiMyAjY2NjICNkOWQ5ZDl9Lm5nLXNlbGVjdC5uZy1zZWxlY3Qtb3BlbmVkPi5uZy1zZWxlY3QtY29udGFpbmVyOmhvdmVye2JveC1zaGFkb3c6bm9uZX0ubmctc2VsZWN0Lm5nLXNlbGVjdC1vcGVuZWQ+Lm5nLXNlbGVjdC1jb250YWluZXIgLm5nLWFycm93e3RvcDotMnB4O2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjOTk5O2JvcmRlci13aWR0aDowIDVweCA1cHh9Lm5nLXNlbGVjdC5uZy1zZWxlY3Qtb3BlbmVkPi5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy1hcnJvdzpob3Zlcntib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzMzM30ubmctc2VsZWN0Lm5nLXNlbGVjdC1vcGVuZWQubmctc2VsZWN0LWJvdHRvbT4ubmctc2VsZWN0LWNvbnRhaW5lcntib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0ubmctc2VsZWN0Lm5nLXNlbGVjdC1vcGVuZWQubmctc2VsZWN0LXRvcD4ubmctc2VsZWN0LWNvbnRhaW5lcntib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0ubmctc2VsZWN0Lm5nLXNlbGVjdC1mb2N1c2VkOm5vdCgubmctc2VsZWN0LW9wZW5lZCk+Lm5nLXNlbGVjdC1jb250YWluZXJ7Ym9yZGVyLWNvbG9yOiMwMDdlZmY7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwwLjA3NSksMCAwIDAgM3B4IHJnYmEoMCwxMjYsMjU1LDAuMSl9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtZGlzYWJsZWQ+Lm5nLXNlbGVjdC1jb250YWluZXJ7YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5fS5uZy1zZWxlY3QgLm5nLWhhcy12YWx1ZSAubmctcGxhY2Vob2xkZXJ7ZGlzcGxheTpub25lfS5uZy1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQgI2NjYzttaW4taGVpZ2h0OjM2cHg7YWxpZ24taXRlbXM6Y2VudGVyfS5uZy1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXI6aG92ZXJ7Ym94LXNoYWRvdzowIDFweCAwIHJnYmEoMCwwLDAsMC4wNil9Lm5nLXNlbGVjdCAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVye2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nLWxlZnQ6MTBweH1bZGlyPVwicnRsXCJdIC5uZy1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lcntwYWRkaW5nLXJpZ2h0OjEwcHg7cGFkZGluZy1sZWZ0OjB9Lm5nLXNlbGVjdCAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy1wbGFjZWhvbGRlcntjb2xvcjojOTk5fS5uZy1zZWxlY3Qubmctc2VsZWN0LXNpbmdsZSAubmctc2VsZWN0LWNvbnRhaW5lcntoZWlnaHQ6MzZweH0ubmctc2VsZWN0Lm5nLXNlbGVjdC1zaW5nbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctaW5wdXR7dG9wOjVweDtsZWZ0OjA7cGFkZGluZy1sZWZ0OjEwcHg7cGFkZGluZy1yaWdodDo1MHB4fVtkaXI9XCJydGxcIl0gLm5nLXNlbGVjdC5uZy1zZWxlY3Qtc2luZ2xlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLWlucHV0e3BhZGRpbmctcmlnaHQ6MTBweDtwYWRkaW5nLWxlZnQ6NTBweH0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZS5uZy1zZWxlY3QtZGlzYWJsZWQ+Lm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWV7YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5O2JvcmRlcjoxcHggc29saWQgI2U2ZTZlNn0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZS5uZy1zZWxlY3QtZGlzYWJsZWQ+Lm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUgLm5nLXZhbHVlLWxhYmVse3BhZGRpbmc6MCA1cHh9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lcntwYWRkaW5nLXRvcDo1cHg7cGFkZGluZy1sZWZ0OjdweH1bZGlyPVwicnRsXCJdIC5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXJ7cGFkZGluZy1yaWdodDo3cHg7cGFkZGluZy1sZWZ0OjB9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWV7Zm9udC1zaXplOi45ZW07bWFyZ2luLWJvdHRvbTo1cHg7YmFja2dyb3VuZC1jb2xvcjojZWJmNWZmO2JvcmRlci1yYWRpdXM6MnB4O21hcmdpbi1yaWdodDo1cHh9W2Rpcj1cInJ0bFwiXSAubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy12YWx1ZXttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDo1cHh9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUubmctdmFsdWUtZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5fS5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVlLm5nLXZhbHVlLWRpc2FibGVkIC5uZy12YWx1ZS1sYWJlbHtwYWRkaW5nLWxlZnQ6NXB4fVtkaXI9XCJydGxcIl0gLm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUubmctdmFsdWUtZGlzYWJsZWQgLm5nLXZhbHVlLWxhYmVse3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6NXB4fS5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVlIC5uZy12YWx1ZS1sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjFweCA1cHh9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUgLm5nLXZhbHVlLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzoxcHggNXB4fS5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVlIC5uZy12YWx1ZS1pY29uOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2QxZThmZn0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy12YWx1ZSAubmctdmFsdWUtaWNvbi5sZWZ0e2JvcmRlci1yaWdodDoxcHggc29saWQgI2I4ZGJmZn1bZGlyPVwicnRsXCJdIC5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVlIC5uZy12YWx1ZS1pY29uLmxlZnR7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNiOGRiZmY7Ym9yZGVyLXJpZ2h0Om5vbmV9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUgLm5nLXZhbHVlLWljb24ucmlnaHR7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNiOGRiZmZ9W2Rpcj1cInJ0bFwiXSAubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy12YWx1ZSAubmctdmFsdWUtaWNvbi5yaWdodHtib3JkZXItbGVmdDowO2JvcmRlci1yaWdodDoxcHggc29saWQgI2I4ZGJmZn0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy1pbnB1dHtwYWRkaW5nOjAgMCAzcHggM3B4fVtkaXI9XCJydGxcIl0gLm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctaW5wdXR7cGFkZGluZzowIDNweCAzcHggMH0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy1wbGFjZWhvbGRlcnt0b3A6NXB4O3BhZGRpbmctYm90dG9tOjVweDtwYWRkaW5nLWxlZnQ6M3B4fVtkaXI9XCJydGxcIl0gLm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctcGxhY2Vob2xkZXJ7cGFkZGluZy1yaWdodDozcHg7cGFkZGluZy1sZWZ0OjB9Lm5nLXNlbGVjdCAubmctY2xlYXItd3JhcHBlcntjb2xvcjojOTk5fS5uZy1zZWxlY3QgLm5nLWNsZWFyLXdyYXBwZXI6aG92ZXIgLm5nLWNsZWFye2NvbG9yOiNEMDAyMUJ9Lm5nLXNlbGVjdCAubmctc3Bpbm5lci16b25le3BhZGRpbmc6NXB4IDVweCAwIDB9W2Rpcj1cInJ0bFwiXSAubmctc2VsZWN0IC5uZy1zcGlubmVyLXpvbmV7cGFkZGluZzo1cHggMCAwIDVweH0ubmctc2VsZWN0IC5uZy1hcnJvdy13cmFwcGVye3dpZHRoOjI1cHg7cGFkZGluZy1yaWdodDo1cHh9W2Rpcj1cInJ0bFwiXSAubmctc2VsZWN0IC5uZy1hcnJvdy13cmFwcGVye3BhZGRpbmctbGVmdDo1cHg7cGFkZGluZy1yaWdodDowfS5uZy1zZWxlY3QgLm5nLWFycm93LXdyYXBwZXI6aG92ZXIgLm5nLWFycm93e2JvcmRlci10b3AtY29sb3I6IzY2Nn0ubmctc2VsZWN0IC5uZy1hcnJvdy13cmFwcGVyIC5uZy1hcnJvd3tib3JkZXItY29sb3I6Izk5OSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjVweCA1cHggMi41cHh9Lm5nLWRyb3Bkb3duLXBhbmVse2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym94LXNoYWRvdzowIDFweCAwIHJnYmEoMCwwLDAsMC4wNik7bGVmdDowfS5uZy1kcm9wZG93bi1wYW5lbC5uZy1zZWxlY3QtYm90dG9te3RvcDoxMDAlO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjRweDtib3JkZXItdG9wLWNvbG9yOiNlNmU2ZTY7bWFyZ2luLXRvcDotMXB4fS5uZy1kcm9wZG93bi1wYW5lbC5uZy1zZWxlY3QtYm90dG9tIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4fS5uZy1kcm9wZG93bi1wYW5lbC5uZy1zZWxlY3QtdG9we2JvdHRvbToxMDAlO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjRweDtib3JkZXItYm90dG9tLWNvbG9yOiNlNmU2ZTY7bWFyZ2luLWJvdHRvbTotMXB4fS5uZy1kcm9wZG93bi1wYW5lbC5uZy1zZWxlY3QtdG9wIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uOmZpcnN0LWNoaWxke2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjRweH0ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLWhlYWRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCAjY2NjO3BhZGRpbmc6NXB4IDdweH0ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLWZvb3Rlcntib3JkZXItdG9wOjFweCBzb2xpZCAjY2NjO3BhZGRpbmc6NXB4IDdweH0ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRncm91cHt1c2VyLXNlbGVjdDpub25lO3BhZGRpbmc6OHB4IDEwcHg7Zm9udC13ZWlnaHQ6NTAwO2NvbG9yOnJnYmEoMCwwLDAsMC41NCk7Y3Vyc29yOnBvaW50ZXJ9Lm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0Z3JvdXAubmctb3B0aW9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGdyb3VwLm5nLW9wdGlvbi1tYXJrZWR7YmFja2dyb3VuZC1jb2xvcjojZjVmYWZmfS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGdyb3VwLm5nLW9wdGlvbi1zZWxlY3RlZCwubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRncm91cC5uZy1vcHRpb24tc2VsZWN0ZWQubmctb3B0aW9uLW1hcmtlZHtiYWNrZ3JvdW5kLWNvbG9yOiNlYmY1ZmY7Zm9udC13ZWlnaHQ6NjAwfS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6cmdiYSgwLDAsMCwwLjg3KTtwYWRkaW5nOjhweCAxMHB4fS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tc2VsZWN0ZWQsLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uLm5nLW9wdGlvbi1zZWxlY3RlZC5uZy1vcHRpb24tbWFya2Vke2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZWJmNWZmfS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tc2VsZWN0ZWQgLm5nLW9wdGlvbi1sYWJlbCwubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ubmctb3B0aW9uLXNlbGVjdGVkLm5nLW9wdGlvbi1tYXJrZWQgLm5nLW9wdGlvbi1sYWJlbHtmb250LXdlaWdodDo2MDB9Lm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uLm5nLW9wdGlvbi1tYXJrZWR7YmFja2dyb3VuZC1jb2xvcjojZjVmYWZmO2NvbG9yOiMzMzN9Lm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uLm5nLW9wdGlvbi1kaXNhYmxlZHtjb2xvcjojY2NjfS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tY2hpbGR7cGFkZGluZy1sZWZ0OjIycHh9W2Rpcj1cInJ0bFwiXSAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ubmctb3B0aW9uLWNoaWxke3BhZGRpbmctcmlnaHQ6MjJweDtwYWRkaW5nLWxlZnQ6MH0ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24gLm5nLXRhZy1sYWJlbHtmb250LXNpemU6ODAlO2ZvbnQtd2VpZ2h0OjQwMDtwYWRkaW5nLXJpZ2h0OjVweH1bZGlyPVwicnRsXCJdIC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbiAubmctdGFnLWxhYmVse3BhZGRpbmctbGVmdDo1cHg7cGFkZGluZy1yaWdodDowfVtkaXI9XCJydGxcIl0gLm5nLWRyb3Bkb3duLXBhbmVse2RpcmVjdGlvbjpydGw7dGV4dC1hbGlnbjpyaWdodH1cbiIsIi8vKiAqKioqKioqIHJlc2V0ICYgbm9ybWFsaXplICoqKioqKiogICovL1xyXG5cclxuLy8gYm94LXNpemluZyB0aGUgc2FtZSBmb3IgYWxsIGVsZW1lbnRzXHJcbmh0bWwge1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG4qLCAqOmJlZm9yZSwgKjphZnRlciB7XHJcbiAgYm94LXNpemluZzogaW5oZXJpdDtcclxuICAtd2Via2l0LWJveC1zaXppbmc6IGluaGVyaXQ7XHJcbiAgLW1vei1ib3gtc2l6aW5nOiBpbmhlcml0O1xyXG4gIG1hcmdpbjogMDtcclxuICBwYWRkaW5nOiAwO1xyXG4gIEBpbmNsdWRlIHVuU2VsZWN0O1xyXG59XHJcblxyXG5odG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXHJcbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcclxuYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxyXG5kZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXHJcbnNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXHJcbmIsIHUsIGksIGNlbnRlcixcclxuZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcclxuZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXHJcbnRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxyXG5hcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcclxuZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxyXG5tZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcclxudGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcclxuICAgIGJvcmRlcjogMDtcclxuICAgIGZvbnQtc2l6ZTogMTAwJTtcclxuICAgIGZvbnQ6IGluaGVyaXQ7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XHJcbn1cclxuYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSxcclxuZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWVudSwgbmF2LCBzZWN0aW9uIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG5ib2R5IHtcclxuICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxufVxyXG5vbCwgdWwge1xyXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcclxufVxyXG5ibG9ja3F1b3RlLCBxIHtcclxuICAgIHF1b3Rlczogbm9uZTtcclxufVxyXG5ibG9ja3F1b3RlOmJlZm9yZSwgYmxvY2txdW90ZTphZnRlcixcclxucTpiZWZvcmUsIHE6YWZ0ZXIge1xyXG4gICAgY29udGVudDogbm9uZTtcclxufVxyXG5cclxuLy90YWJsZVxyXG50YWJsZSB7XHJcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gICAgYm9yZGVyLXNwYWNpbmc6IDA7XHJcbn1cclxudGQsXHJcbnRoIHtcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcblxyXG4vL2Zvcm1zIGVsZW1lbnRcclxuaW5wdXQge1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgICY6LXdlYmtpdC1hdXRvZmlsbCB7XHJcbiAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMTAwMHB4IHdoaXRlIGluc2V0O1xyXG4gICAgfVxyXG59XHJcblxyXG5idXR0b24sXHJcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcclxuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxyXG5pbnB1dFt0eXBlPVwic3VibWl0XCJdIHtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgb3V0bGluZTogbm9uZTtcclxufVxyXG5idXR0b25bZGlzYWJsZWRdLFxyXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XHJcbiAgY3Vyc29yOiBkZWZhdWx0O1xyXG59XHJcbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcclxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xyXG4gIGJvcmRlcjogMDtcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcbmlucHV0IHtcclxuICBsaW5lLWhlaWdodDogbm9ybWFsO1xyXG59XHJcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xyXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xyXG59XHJcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXHJcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcclxufVxyXG5cclxuXHJcbi8vbGlua1xyXG5hIHtcclxuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcblx0JjphY3RpdmUsXHJcblx0Jjpob3ZlcixcclxuXHQmOmZvY3VzIHtcclxuXHRcdG91dGxpbmU6IDA7XHJcblx0fVxyXG59XHJcblxyXG5pIHsgZm9udC1zdHlsZTogaXRhbGljOyB9XHJcbmIsIHN0cm9uZyB7IGZvbnQtd2VpZ2h0OiA3MDA7ICAgfVxyXG5cclxuLy8gaW1hZ2VzXHJcbmltZyB7XHJcblx0d2lkdGg6IGF1dG87XHJcblx0bWF4LXdpZHRoOiAxMDAlO1xyXG5cdGhlaWdodDogYXV0bztcclxuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG5cdGJvcmRlcjogMDtcclxufVxyXG5cclxuLmhpZGRlbiB7XHJcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG59XHJcbiIsIi5hcHAtY29udGVudCB7XHJcblxyXG4gIC5wcmVsb2FkZXIge1xyXG5cclxuICAgIC5sb2FkaW5nLWJhciB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYnV0dG9uIHtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xyXG4gIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBwYWRkaW5nOiAwIDFyZW07XHJcbiAgaGVpZ2h0OiA0LjJyZW07XHJcblxyXG4gICY6ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGRpc2FibGVkQnV0dG9uQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChhbHRlcm5hdGl2ZVRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoZGlzYWJsZWRCdXR0b25Ib3ZlckNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICY6Zm9jdXMge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGRpc2FibGVkQnV0dG9uRm9jdXNDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYuYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZUJ1dHRvbkJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYWx0ZXJuYXRpdmVUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVCdXR0b25Ib3ZlckNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICY6Zm9jdXMge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVCdXR0b25Gb2N1c0NvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5ncmVlbi1idXR0b246bm90KDpkaXNhYmxlZCkge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoZ3JlZW5CdXR0b25CYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICBjb2xvcjogdGhlbWVkKGFsdGVybmF0aXZlVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChncmVlbkJ1dHRvbkhvdmVyQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjpmb2N1cyB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoZ3JlZW5CdXR0b25Gb2N1c0NvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi50dXJxdW9pc2UtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHR1cnF1b2lzZUJ1dHRvbkJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYWx0ZXJuYXRpdmVUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHR1cnF1b2lzZUJ1dHRvbkhvdmVyQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjpmb2N1cyB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodHVycXVvaXNlQnV0dG9uRm9jdXNDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYudHJhbnNwYXJlbnQtYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXI6IDAuMnJlbSBzb2xpZCB0aGVtZWQodHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLmljb24ge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XHJcbiAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9jb21wbGV0ZS10ZXN0d2FsbGV0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgd2lkdGg6IDEuN3JlbTtcclxuICAgICAgaGVpZ2h0OiAxLjdyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLmlucHV0LWJsb2NrIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcbiAgbWFyZ2luLWJvdHRvbTogMC40cmVtO1xyXG5cclxuICAud3JhcC1sYWJlbCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgIG1pbi1oZWlnaHQ6IDIuNHJlbTtcclxuICB9XHJcblxyXG4gIGxhYmVsIHtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuNHJlbTtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnB1dFt0eXBlPSd0ZXh0J10sIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sIHNlbGVjdCB7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBmb250LXNpemU6IDEuNHJlbTtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICBwYWRkaW5nOiAwIDFyZW07XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogNC4ycmVtO1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoaW5wdXRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi50ZXh0YXJlYSB7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcblxyXG4gICAgdGV4dGFyZWEge1xyXG4gICAgICBmb250LWZhbWlseTogT3BlblNhbnMsIHNhbnMtc2VyaWY7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgZm9udC1zaXplOiAxLjRyZW07XHJcbiAgICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICAgIHBhZGRpbmc6IDFyZW07XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBtaW4td2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgbWluLWhlaWdodDogNy41cmVtO1xyXG4gICAgICBtYXgtaGVpZ2h0OiA3LjVyZW07XHJcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgICByZXNpemU6IG5vbmU7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoaW5wdXRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5lcnJvci1ibG9jayB7XHJcbiAgICBmb250LXNpemU6IDFyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS40cmVtO1xyXG4gICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XHJcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChyZWRUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmVycm9yLXRleHQge1xyXG4gIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgY29sb3I6IHRoZW1lZChyZWRUZXh0Q29sb3IpO1xyXG4gIH1cclxufVxyXG5cclxuaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbyB7XHJcblxyXG4gICYgKyBsYWJlbCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDIuNHJlbTtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgdW5TZWxlY3Q7XHJcbiAgfVxyXG5cclxuICAmOm5vdChjaGVja2VkKSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG5cclxuICAgICYgKyBsYWJlbCB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIH1cclxuXHJcbiAgICAmICsgbGFiZWw6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogJyc7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAwLjdyZW07XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgIHdpZHRoOiAxLjRyZW07XHJcbiAgICAgIGhlaWdodDogMS40cmVtO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyOiAwLjFyZW0gc29saWQgdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJiArIGxhYmVsOmFmdGVyIHtcclxuICAgICAgY29udGVudDogJyc7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAxcmVtO1xyXG4gICAgICBsZWZ0OiAwLjNyZW07XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgd2lkdGg6IDAuOHJlbTtcclxuICAgICAgaGVpZ2h0OiAwLjhyZW07XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICY6Y2hlY2tlZCB7XHJcblxyXG4gICAgJiArIGxhYmVsOmFmdGVyIHtcclxuICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3gge1xyXG5cclxuICAmICsgbGFiZWwge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgcGFkZGluZy1sZWZ0OiAzLjZyZW07XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIHVuU2VsZWN0O1xyXG4gIH1cclxuXHJcbiAgJjpub3QoY2hlY2tlZCkge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICBsZWZ0OiAxLjZyZW07XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcblxyXG4gICAgJiArIGxhYmVsIHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgfVxyXG5cclxuICAgICYgKyBsYWJlbDpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiAnJztcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgbGVmdDogMS42cmVtO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICB3aWR0aDogMS40cmVtO1xyXG4gICAgICBoZWlnaHQ6IDEuNHJlbTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlcjogMC4xcmVtIHNvbGlkIHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjpjaGVja2VkIHtcclxuXHJcbiAgICAmICsgbGFiZWw6YmVmb3JlIHtcclxuICAgICAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2NvbXBsZXRlLXRlc3R3YWxsZXQuc3ZnKTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnN3aXRjaCB7XHJcblxyXG4gIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHN3aXRjaEJhY2tncm91bmRDb2xvcik7XHJcbiAgfVxyXG5cclxuICAuY2lyY2xlIHtcclxuXHJcbiAgICAmLm9uIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYub2ZmIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi50YWJsZS10b29sdGlwIHtcclxuICBwYWRkaW5nOiAxcmVtIDJyZW07XHJcblxyXG4gIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgYmFja2dyb3VuZDogdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgYm94LXNoYWRvdzogdGhlbWVkKHRvb2x0aXBTaGFkb3cpO1xyXG4gICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICB9XHJcblxyXG4gIC50b29sdGlwLWlubmVyIHtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuOHJlbTtcclxuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC10b3Age1xyXG4gICAgbWFyZ2luLXRvcDogLTFyZW07XHJcblxyXG4gICAgJjphZnRlciB7XHJcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgYm90dG9tOiAtMXJlbTtcclxuICAgICAgbGVmdDogY2FsYyg1MCUgLSAwLjVyZW0pO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcclxuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtdG9wLWxlZnQge1xyXG4gICAgbWFyZ2luLXRvcDogLTFyZW07XHJcblxyXG4gICAgJjphZnRlciB7XHJcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgYm90dG9tOiAtMXJlbTtcclxuICAgICAgbGVmdDogMC43cmVtO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcclxuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXRvcC1yaWdodCB7XHJcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTtcclxuXHJcbiAgICAmOmFmdGVyIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IC0xcmVtO1xyXG4gICAgICByaWdodDogMC43cmVtO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcclxuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLWJvdHRvbSB7XHJcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IC0xcmVtO1xyXG4gICAgICBsZWZ0OiBjYWxjKDUwJSAtIDAuNXJlbSk7XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1ib3R0b20tbGVmdCB7XHJcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IC0xcmVtO1xyXG4gICAgICBsZWZ0OiAwLjdyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0IHtcclxuICAgIG1hcmdpbi10b3A6IDFyZW07XHJcblxyXG4gICAgJjpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogLTFyZW07XHJcbiAgICAgIHJpZ2h0OiAwLjdyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRyYW5zcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtbGVmdCB7XHJcbiAgICBtYXJnaW4tbGVmdDogLTFyZW07XHJcblxyXG4gICAgJjphZnRlciB7XHJcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiBjYWxjKDUwJSAtIDAuNXJlbSk7XHJcbiAgICAgIHJpZ2h0OiAtMXJlbTtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXJpZ2h0IHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IGNhbGMoNTAlIC0gMC41cmVtKTtcclxuICAgICAgbGVmdDogLTFyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi50YWJsZS10b29sdGlwLWRpbWVuc2lvbnMge1xyXG5cclxuICAudG9vbHRpcC1pbm5lciB7XHJcbiAgICBvdmVyZmxvdzogYXV0bztcclxuICAgIG1heC13aWR0aDogMjByZW07XHJcbiAgICBtYXgtaGVpZ2h0OiAxMHJlbTtcclxuICB9XHJcbn1cclxuXHJcbi5iYWxhbmNlLXRvb2x0aXAge1xyXG4gIHBhZGRpbmc6IDEuM3JlbTtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBiYWNrZ3JvdW5kOiB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcik7XHJcbiAgICBib3gtc2hhZG93OiB0aGVtZWQodG9vbHRpcFNoYWRvdyk7XHJcbiAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLnRvb2x0aXAtaW5uZXIge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuXHJcbiAgICAuYXZhaWxhYmxlIHtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMS43cmVtO1xyXG5cclxuICAgICAgYiB7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5sb2NrZWQge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwLjdyZW07XHJcblxyXG4gICAgICBiIHtcclxuICAgICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmxpbmsge1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtdG9wIHtcclxuICAgIG1hcmdpbi10b3A6IC0xcmVtO1xyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLWJvdHRvbSB7XHJcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLWxlZnQge1xyXG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtO1xyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXJpZ2h0IHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmFjY291bnQtdG9vbHRpcCB7XHJcblxyXG4gIC50b29sdGlwLWlubmVyIHtcclxuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XHJcbiAgICBtYXgtd2lkdGg6IDE4cmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmNvbW1lbnQtdG9vbHRpcCB7XHJcblxyXG4gIC50b29sdGlwLWlubmVyIHtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgd29yZC1icmVhazogYnJlYWstd29yZDtcclxuICAgIG1heC13aWR0aDogNTByZW07XHJcbiAgICBtYXgtaGVpZ2h0OiAyNXJlbTtcclxuICB9XHJcbn1cclxuXHJcbi51cGRhdGUtdG9vbHRpcCB7XHJcbiAgcGFkZGluZzogMS41cmVtO1xyXG5cclxuICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgIGJhY2tncm91bmQ6IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKTtcclxuICAgIGJveC1zaGFkb3c6IHRoZW1lZCh0b29sdGlwU2hhZG93KTtcclxuICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgfVxyXG5cclxuICAmLmltcG9ydGFudCB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1lZCh0b29sdGlwSW1wb3J0YW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChhY2NvdW50TWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgJi5uZy10b29sdGlwLWxlZnQtYm90dG9tIHtcclxuXHJcbiAgICAgICY6YWZ0ZXIge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdGhlbWVkKHRvb2x0aXBJbXBvcnRhbnRCYWNrZ3JvdW5kQ29sb3IpIHRoZW1lZCh0b29sdGlwSW1wb3J0YW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLm5nLXRvb2x0aXAtcmlnaHQtYm90dG9tIHtcclxuXHJcbiAgICAgICY6YmVmb3JlIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRoZW1lZCh0b29sdGlwSW1wb3J0YW50QmFja2dyb3VuZENvbG9yKSB0aGVtZWQodG9vbHRpcEltcG9ydGFudEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmNyaXRpY2FsIHtcclxuICAgIHBhZGRpbmc6IDIuNXJlbTtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZDogdGhlbWVkKHRvb2x0aXBDcml0aWNhbEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYWNjb3VudE1haW5UZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC50b29sdGlwLWlubmVyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAmLm5nLXRvb2x0aXAtbGVmdC1ib3R0b20ge1xyXG5cclxuICAgICAgJjphZnRlciB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcENyaXRpY2FsQmFja2dyb3VuZENvbG9yKSB0aGVtZWQodG9vbHRpcENyaXRpY2FsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLm5nLXRvb2x0aXAtcmlnaHQtYm90dG9tIHtcclxuXHJcbiAgICAgICY6YmVmb3JlIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRoZW1lZCh0b29sdGlwQ3JpdGljYWxCYWNrZ3JvdW5kQ29sb3IpIHRoZW1lZCh0b29sdGlwQ3JpdGljYWxCYWNrZ3JvdW5kQ29sb3IpIHRyYW5zcGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnRvb2x0aXAtaW5uZXIge1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS44cmVtO1xyXG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xyXG5cclxuICAgIC5zdGFuZGFyZC11cGRhdGUge1xyXG4gICAgICBmb250LXNpemU6IDEuNXJlbTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDIuN3JlbTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuaW1wb3J0YW50LXVwZGF0ZSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gICAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZCh0b29sdGlwSW1wb3J0YW50VGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5jcml0aWNhbC11cGRhdGUge1xyXG4gICAgICBmb250LXNpemU6IDEuNXJlbTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDIuN3JlbTtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgfVxyXG5cclxuICAgIC53cm9uZy10aW1lIHtcclxuICAgICAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjdyZW07XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKHRvb2x0aXBJbXBvcnRhbnRUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBtYXJnaW46IDEuNXJlbSAwO1xyXG4gICAgICB3aWR0aDogNXJlbTtcclxuICAgICAgaGVpZ2h0OiA1cmVtO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHRvb2x0aXBDcml0aWNhbFRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1sZWZ0LWJvdHRvbSB7XHJcbiAgICBtYXJnaW4tbGVmdDogLTEuNXJlbTtcclxuXHJcbiAgICAmOmFmdGVyIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IDAuNnJlbTtcclxuICAgICAgcmlnaHQ6IC0xcmVtO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcclxuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbSB7XHJcbiAgICBtYXJnaW4tbGVmdDogMS41cmVtO1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IDAuNnJlbTtcclxuICAgICAgbGVmdDogLTFyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRyYW5zcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ubmd4LWNvbnRleHRtZW51IHtcclxuXHJcbiAgLmRyb3Bkb3duLW1lbnUge1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgcGFkZGluZzogMDtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGNoYXJ0T3B0aW9uc0JhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGJveC1zaGFkb3c6IHRoZW1lZCh0b29sdGlwU2hhZG93KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxpIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIH1cclxuXHJcbiAgYSB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBhZGRpbmc6IDAuNWVtIDFlbTtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjaGFydE9wdGlvbnNIb3ZlckNvbG9yKTtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ubmctc2VsZWN0IHtcclxuXHJcbiAgJi5jdXN0b20tc2VsZWN0IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgIC5uZy1zZWxlY3QtY29udGFpbmVyIHtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gICAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgICBwYWRkaW5nOiAwIDFyZW07XHJcbiAgICAgIGhlaWdodDogNC4ycmVtO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGlucHV0QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAubmctdmFsdWUtY29udGFpbmVyIHtcclxuICAgICAgICBwYWRkaW5nOiAwO1xyXG5cclxuICAgICAgICAubmctaW5wdXQge1xyXG4gICAgICAgICAgdG9wOiBhdXRvO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5uZy1kcm9wZG93bi1wYW5lbCB7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChpbnB1dEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyB7XHJcblxyXG4gICAgICAgIC5uZy1vcHRpb24ge1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XHJcbiAgICAgICAgICBwYWRkaW5nOiAxcmVtO1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoaW5wdXRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICYubmctb3B0aW9uLW1hcmtlZCB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoc2VsZWN0SG92ZXJDb2xvcik7XHJcbiAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICYubmctb3B0aW9uLXNlbGVjdGVkIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChzZWxlY3RTZWxlY3RlZENvbG9yKTtcclxuICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcclxuICAgICAgICAgIHdpZHRoOiAxcmVtO1xyXG4gICAgICAgICAgaGVpZ2h0OiAxcmVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xyXG4gICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU2NTc2O1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcclxuICAgICAgICAgIGJvcmRlcjogMC4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtbW9kYWwtY29udGFpbmVyIHtcclxuXHJcbiAgLm1vZGFsIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZDogdGhlbWVkKG1vZGFsQmFja2dyb3VuZCk7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLmNvbnRlbnQge1xyXG5cclxuICAgICAgLmljb24uZXJyb3Ige1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChyZWRUZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmljb24uc3VjY2VzcyB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGdyZWVuVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5pY29uLmluZm8ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuYWN0aW9uLWJ1dHRvbiB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZChhbHRlcm5hdGl2ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuY2xvc2UtYnV0dG9uIHtcclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoY2xvc2VCdXR0b25Db2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtdHJhbnNhY3Rpb24tZGV0YWlscyB7XHJcblxyXG4gIC50YWJsZSB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJvcmRlci10b3A6IDAuMnJlbSBzb2xpZCB0aGVtZWQodHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLnJvdyB7XHJcblxyXG4gICAgICAuY2VsbCB7XHJcblxyXG4gICAgICAgICYubGFiZWwge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYudmFsdWUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5rZXktdmFsdWUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXByb2dyZXNzLWNvbnRhaW5lciB7XHJcblxyXG4gIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAucHJvZ3Jlc3MtYmFyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5wcm9ncmVzcy1iYXItZnVsbCB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtb3Blbi13YWxsZXQtbW9kYWwge1xyXG5cclxuICAubW9kYWwge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtZWQobW9kYWxCYWNrZ3JvdW5kKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiJHRoZW1lczogKFxyXG4gIGRhcms6IChcclxuICAgIGJvZHlCYWNrZ3JvdW5kQ29sb3I6ICMxMzE5MjEsXHJcbiAgICBzaWRlYmFyQmFja2dyb3VuZENvbG9yOiByZ2JhKDIzLCAzMSwgMzksIDEpLFxyXG4gICAgc2lkZWJhckJvcmRlckNvbG9yOiAjMWYyODMzLFxyXG4gICAgb25saW5lQ29sb3I6ICM1Y2RhOWQsXHJcbiAgICBvZmZsaW5lQ29sb3I6ICNmZjUyNTIsXHJcbiAgICBjb250ZW50QmFja2dyb3VuZENvbG9yOiByZ2JhKDQzLCA1NCwgNjgsIDAuNSksXHJcbiAgICBtYWluVGV4dENvbG9yOiAjZTBlMGUwLFxyXG4gICAgYWx0ZXJuYXRpdmVUZXh0Q29sb3I6ICMxMTE5MjEsXHJcbiAgICBvcHRpb25hbFRleHRDb2xvcjogIzU1NjU3NixcclxuICAgIGJsdWVUZXh0Q29sb3I6ICM0ZGIxZmYsXHJcbiAgICBncmVlblRleHRDb2xvcjogIzVjZGE5ZCxcclxuICAgIG9yYW5nZVRleHRDb2xvcjogI2ZmNmYwMCxcclxuICAgIHJlZFRleHRDb2xvcjogI2ZmNTI1MixcclxuICAgIGJsdWVCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICM0ZGIxZmYsXHJcbiAgICBibHVlQnV0dG9uSG92ZXJDb2xvcjogIzgyZDdmZixcclxuICAgIGJsdWVCdXR0b25Gb2N1c0NvbG9yOiAjNTliNWZkLFxyXG4gICAgZGlzYWJsZWRCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICM5Y2FkYjcsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkhvdmVyQ29sb3I6ICNiN2QxZTAsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkZvY3VzQ29sb3I6ICNhN2I5YzIsXHJcbiAgICBncmVlbkJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzVjZGE5ZCxcclxuICAgIGdyZWVuQnV0dG9uSG92ZXJDb2xvcjogIzhkZmNjNixcclxuICAgIGdyZWVuQnV0dG9uRm9jdXNDb2xvcjogIzYyZTBiMixcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzRkZDBlMSxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkhvdmVyQ29sb3I6ICM4N2Y0ZjUsXHJcbiAgICB0dXJxdW9pc2VCdXR0b25Gb2N1c0NvbG9yOiAjNDJkNWU4LFxyXG4gICAgdHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcjogIzJiMzY0NCxcclxuICAgIGlucHV0QmFja2dyb3VuZENvbG9yOiAjMTcxZTI3LFxyXG4gICAgc2VsZWN0SG92ZXJDb2xvcjogcmdiYSg1OCwgNjksIDg1LCAwLjUpLFxyXG4gICAgc2VsZWN0U2VsZWN0ZWRDb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpLFxyXG4gICAgc3dpdGNoQmFja2dyb3VuZENvbG9yOiAjMDAwMDAwLFxyXG4gICAgYWNjb3VudEJhY2tncm91bmRDb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpLFxyXG4gICAgYWNjb3VudEhvdmVyQmFja2dyb3VuZENvbG9yOiByZ2JhKDU4LCA2OSwgODUsIDAuNSksXHJcbiAgICBhY2NvdW50TWFpblRleHRDb2xvcjogI2UwZTBlMCxcclxuICAgIGFjY291bnRPcHRpb25hbFRleHRDb2xvcjogIzU1NjU3NixcclxuICAgIGFjY291bnRJbmRpY2F0b3JUZXh0Q29sb3I6ICMxMTE5MjEsXHJcbiAgICBhY2NvdW50U3dpdGNoQmFja2dyb3VuZENvbG9yOiAjMDAwMDAwLFxyXG4gICAgYWNjb3VudEluZGljYXRvckJhY2tncm91bmRDb2xvcjogIzRkYjFmZixcclxuICAgIHRhYkluYWN0aXZlQmFja2dyb3VuZENvbG9yOiByZ2JhKDIzLCAzMSwgMzksIDAuNSksXHJcbiAgICB0YWJIb3ZlckJhY2tncm91bmRDb2xvcjogcmdiYSg1OCwgNjksIDg1LCAwLjUpLFxyXG4gICAgdGFibGVCYWNrZ3JvdW5kQ29sb3I6ICMxODIwMmEsXHJcbiAgICBtZXNzYWdlTXlCYWNrZ3JvdW5kQ29sb3I6ICMyYTM1NDQsXHJcbiAgICBtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3I6ICMxODIwMmEsXHJcbiAgICBwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcjogIzM0M2Y0YSxcclxuICAgIHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcjogIzVjZGE5ZCxcclxuICAgIGNoYXJ0T3B0aW9uc0JhY2tncm91bmRDb2xvcjogIzJiMzY0NCxcclxuICAgIGNoYXJ0T3B0aW9uc0hvdmVyQ29sb3I6ICM1NTY1NzYsXHJcbiAgICB0b29sdGlwQmFja2dyb3VuZENvbG9yOiAjNDI1MDVmLFxyXG4gICAgdG9vbHRpcEltcG9ydGFudFRleHRDb2xvcjogI2ZmNmYwMCxcclxuICAgIHRvb2x0aXBJbXBvcnRhbnRCYWNrZ3JvdW5kQ29sb3I6ICM1ZjJiMTEsXHJcbiAgICB0b29sdGlwQ3JpdGljYWxUZXh0Q29sb3I6ICNmZjUyNTIsXHJcbiAgICB0b29sdGlwQ3JpdGljYWxCYWNrZ3JvdW5kQ29sb3I6ICM1ZjFkMWQsXHJcbiAgICB0b29sdGlwU2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSksXHJcbiAgICBtb2RhbEJhY2tncm91bmQ6IHVybCh+c3JjL2Fzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC1kYXJrLnBuZyksXHJcbiAgICBjbG9zZUJ1dHRvbkNvbG9yOiAjNTU2NTc2XHJcbiAgKSxcclxuICBncmF5OiAoXHJcbiAgICBib2R5QmFja2dyb3VuZENvbG9yOiAjMTAxNDE3LFxyXG4gICAgc2lkZWJhckJhY2tncm91bmRDb2xvcjogcmdiYSgyOCwgMzAsIDMzLCAxKSxcclxuICAgIHNpZGViYXJCb3JkZXJDb2xvcjogIzJlMzMzNyxcclxuICAgIG9ubGluZUNvbG9yOiAjNDdjZjhkLFxyXG4gICAgb2ZmbGluZUNvbG9yOiAjZmY1MjUyLFxyXG4gICAgY29udGVudEJhY2tncm91bmRDb2xvcjogcmdiYSgzNywgNDAsIDQzLCAwLjUpLFxyXG4gICAgbWFpblRleHRDb2xvcjogI2UwZTBlMCxcclxuICAgIGFsdGVybmF0aXZlVGV4dENvbG9yOiAjMWExYTFhLFxyXG4gICAgb3B0aW9uYWxUZXh0Q29sb3I6ICM1NjVjNjIsXHJcbiAgICBibHVlVGV4dENvbG9yOiAjNDJhNWY1LFxyXG4gICAgZ3JlZW5UZXh0Q29sb3I6ICM0N2NmOGQsXHJcbiAgICBvcmFuZ2VUZXh0Q29sb3I6ICNmZjZmMDAsXHJcbiAgICByZWRUZXh0Q29sb3I6ICNmZjUyNTIsXHJcbiAgICBibHVlQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjNDJhNWY1LFxyXG4gICAgYmx1ZUJ1dHRvbkhvdmVyQ29sb3I6ICM4NmQ2ZmYsXHJcbiAgICBibHVlQnV0dG9uRm9jdXNDb2xvcjogIzVmYjZmYyxcclxuICAgIGRpc2FibGVkQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjNzk4NDhmLFxyXG4gICAgZGlzYWJsZWRCdXR0b25Ib3ZlckNvbG9yOiAjYTFhZWJiLFxyXG4gICAgZGlzYWJsZWRCdXR0b25Gb2N1c0NvbG9yOiAjOGE5NTlmLFxyXG4gICAgZ3JlZW5CdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICM0N2NmOGQsXHJcbiAgICBncmVlbkJ1dHRvbkhvdmVyQ29sb3I6ICM3YmY2YzYsXHJcbiAgICBncmVlbkJ1dHRvbkZvY3VzQ29sb3I6ICM1Y2RjOWUsXHJcbiAgICB0dXJxdW9pc2VCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICMzZWM1ZDcsXHJcbiAgICB0dXJxdW9pc2VCdXR0b25Ib3ZlckNvbG9yOiAjNzJlZGZlLFxyXG4gICAgdHVycXVvaXNlQnV0dG9uRm9jdXNDb2xvcjogIzUwZDBlMSxcclxuICAgIHRyYW5zcGFyZW50QnV0dG9uQm9yZGVyQ29sb3I6ICMyZjM0MzgsXHJcbiAgICBpbnB1dEJhY2tncm91bmRDb2xvcjogIzI5MmQzMSxcclxuICAgIHNlbGVjdEhvdmVyQ29sb3I6IHJnYmEoNTgsIDYyLCA2NiwgMC41KSxcclxuICAgIHNlbGVjdFNlbGVjdGVkQ29sb3I6IHJnYmEoMzcsIDQwLCA0MywgMC41KSxcclxuICAgIHN3aXRjaEJhY2tncm91bmRDb2xvcjogIzAwMDAwMCxcclxuICAgIGFjY291bnRCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMzcsIDQwLCA0MywgMC41KSxcclxuICAgIGFjY291bnRIb3ZlckJhY2tncm91bmRDb2xvcjogcmdiYSg1OCwgNjIsIDY2LCAwLjUpLFxyXG4gICAgYWNjb3VudE1haW5UZXh0Q29sb3I6ICNlMGUwZTAsXHJcbiAgICBhY2NvdW50T3B0aW9uYWxUZXh0Q29sb3I6ICM1NjVjNjIsXHJcbiAgICBhY2NvdW50SW5kaWNhdG9yVGV4dENvbG9yOiAjMWExYTFhLFxyXG4gICAgYWNjb3VudFN3aXRjaEJhY2tncm91bmRDb2xvcjogIzAwMDAwMCxcclxuICAgIGFjY291bnRJbmRpY2F0b3JCYWNrZ3JvdW5kQ29sb3I6ICM0MmE1ZjUsXHJcbiAgICB0YWJJbmFjdGl2ZUJhY2tncm91bmRDb2xvcjogcmdiYSgyOCwgMzAsIDMzLCAwLjUpLFxyXG4gICAgdGFiSG92ZXJCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoNTgsIDYyLCA2NiwgMC41KSxcclxuICAgIHRhYmxlQmFja2dyb3VuZENvbG9yOiAjMjUyOTJkLFxyXG4gICAgbWVzc2FnZU15QmFja2dyb3VuZENvbG9yOiAjMzAzNjNjLFxyXG4gICAgbWVzc2FnZUJ1ZGR5QmFja2dyb3VuZENvbG9yOiAjMjUyOTJkLFxyXG4gICAgcHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3I6ICMzNjNhM2UsXHJcbiAgICBwcm9ncmVzc0JhckZ1bGxCYWNrZ3JvdW5kQ29sb3I6ICM0N2NmOGQsXHJcbiAgICBjaGFydE9wdGlvbnNCYWNrZ3JvdW5kQ29sb3I6ICMyOTJkMzEsXHJcbiAgICBjaGFydE9wdGlvbnNIb3ZlckNvbG9yOiAjNTE1OTYwLFxyXG4gICAgdG9vbHRpcEJhY2tncm91bmRDb2xvcjogIzNlNDY0YyxcclxuICAgIHRvb2x0aXBJbXBvcnRhbnRUZXh0Q29sb3I6ICNmZjZmMDAsXHJcbiAgICB0b29sdGlwSW1wb3J0YW50QmFja2dyb3VuZENvbG9yOiAjNTUyNDBkLFxyXG4gICAgdG9vbHRpcENyaXRpY2FsVGV4dENvbG9yOiAjZmY1MjUyLFxyXG4gICAgdG9vbHRpcENyaXRpY2FsQmFja2dyb3VuZENvbG9yOiAjNGMxOTE5LFxyXG4gICAgdG9vbHRpcFNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpLFxyXG4gICAgbW9kYWxCYWNrZ3JvdW5kOiB1cmwofnNyYy9hc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtZ3JheS5wbmcpLFxyXG4gICAgY2xvc2VCdXR0b25Db2xvcjogIzUxNTk2MFxyXG4gICksXHJcbiAgd2hpdGU6IChcclxuICAgIGJvZHlCYWNrZ3JvdW5kQ29sb3I6ICNlZWVlZWUsXHJcbiAgICBzaWRlYmFyQmFja2dyb3VuZENvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpLFxyXG4gICAgc2lkZWJhckJvcmRlckNvbG9yOiAjZWJlYmViLFxyXG4gICAgb25saW5lQ29sb3I6ICM0NmMxNzIsXHJcbiAgICBvZmZsaW5lQ29sb3I6ICNmZjUyNTIsXHJcbiAgICBjb250ZW50QmFja2dyb3VuZENvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSksXHJcbiAgICBtYWluVGV4dENvbG9yOiAjNDM0NTRiLFxyXG4gICAgYWx0ZXJuYXRpdmVUZXh0Q29sb3I6ICNmZWZlZmUsXHJcbiAgICBvcHRpb25hbFRleHRDb2xvcjogI2EwYTVhYixcclxuICAgIGJsdWVUZXh0Q29sb3I6ICMyYzk1ZjEsXHJcbiAgICBncmVlblRleHRDb2xvcjogIzQ2YzE3MixcclxuICAgIG9yYW5nZVRleHRDb2xvcjogI2ZmNmYwMCxcclxuICAgIHJlZFRleHRDb2xvcjogI2ZmNTI1MixcclxuICAgIGJsdWVCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICMyYzk1ZjEsXHJcbiAgICBibHVlQnV0dG9uSG92ZXJDb2xvcjogIzVjYjNmZixcclxuICAgIGJsdWVCdXR0b25Gb2N1c0NvbG9yOiAjMzc5ZmZhLFxyXG4gICAgZGlzYWJsZWRCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICM5MGE0YWUsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkhvdmVyQ29sb3I6ICNhZWJlYzYsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkZvY3VzQ29sb3I6ICNhN2I5YzIsXHJcbiAgICBncmVlbkJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzQ2YzE3MixcclxuICAgIGdyZWVuQnV0dG9uSG92ZXJDb2xvcjogIzVhZDU4NixcclxuICAgIGdyZWVuQnV0dG9uRm9jdXNDb2xvcjogIzUzYzc3YyxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzI2YjZjNyxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkhvdmVyQ29sb3I6ICM1MmNiZDksXHJcbiAgICB0dXJxdW9pc2VCdXR0b25Gb2N1c0NvbG9yOiAjMzFiZWNmLFxyXG4gICAgdHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcjogI2ViZWJlYixcclxuICAgIGlucHV0QmFja2dyb3VuZENvbG9yOiAjZTZlNmU2LFxyXG4gICAgc2VsZWN0SG92ZXJDb2xvcjogcmdiYSgyNDAsIDI0MCwgMjQwLCAwLjUpLFxyXG4gICAgc2VsZWN0U2VsZWN0ZWRDb2xvcjogcmdiYSgyMjQsIDIyNCwgMjI0LCAwLjUpLFxyXG4gICAgc3dpdGNoQmFja2dyb3VuZENvbG9yOiAjZTBlMGUwLFxyXG4gICAgYWNjb3VudEJhY2tncm91bmRDb2xvcjogcmdiYSgzMCwgMTM2LCAyMjksIDEpLFxyXG4gICAgYWNjb3VudEhvdmVyQmFja2dyb3VuZENvbG9yOiByZ2JhKDI0MCwgMjQwLCAyNDAsIDAuNSksXHJcbiAgICBhY2NvdW50TWFpblRleHRDb2xvcjogI2ZmZmZmZixcclxuICAgIGFjY291bnRPcHRpb25hbFRleHRDb2xvcjogIzkxYmFmMSxcclxuICAgIGFjY291bnRJbmRpY2F0b3JUZXh0Q29sb3I6ICM0MzQ1NGIsXHJcbiAgICBhY2NvdW50U3dpdGNoQmFja2dyb3VuZENvbG9yOiAjZmZmZmZmLFxyXG4gICAgYWNjb3VudEluZGljYXRvckJhY2tncm91bmRDb2xvcjogI2ZmZmZmZixcclxuICAgIHRhYkluYWN0aXZlQmFja2dyb3VuZENvbG9yOiByZ2JhKDIyNCwgMjI0LCAyMjQsIDAuNSksXHJcbiAgICB0YWJIb3ZlckJhY2tncm91bmRDb2xvcjogI2ZmZmZmZixcclxuICAgIHRhYmxlQmFja2dyb3VuZENvbG9yOiAjZmZmZmZmLFxyXG4gICAgbWVzc2FnZU15QmFja2dyb3VuZENvbG9yOiAjZmZmLFxyXG4gICAgbWVzc2FnZUJ1ZGR5QmFja2dyb3VuZENvbG9yOiAjZWRlZGVkLFxyXG4gICAgcHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3I6ICNkY2RjZGMsXHJcbiAgICBwcm9ncmVzc0JhckZ1bGxCYWNrZ3JvdW5kQ29sb3I6ICM0NmMxNzIsXHJcbiAgICBjaGFydE9wdGlvbnNCYWNrZ3JvdW5kQ29sb3I6ICNlMGUwZTAsXHJcbiAgICBjaGFydE9wdGlvbnNIb3ZlckNvbG9yOiAjZmZmZmZmLFxyXG4gICAgdG9vbHRpcEJhY2tncm91bmRDb2xvcjogI2ZmZmZmZixcclxuICAgIHRvb2x0aXBJbXBvcnRhbnRUZXh0Q29sb3I6ICNmZmZmZmYsXHJcbiAgICB0b29sdGlwSW1wb3J0YW50QmFja2dyb3VuZENvbG9yOiAjZWY2YzAwLFxyXG4gICAgdG9vbHRpcENyaXRpY2FsVGV4dENvbG9yOiAjZmZmZmZmLFxyXG4gICAgdG9vbHRpcENyaXRpY2FsQmFja2dyb3VuZENvbG9yOiAjZTUzOTM1LFxyXG4gICAgdG9vbHRpcFNoYWRvdzogMCAwIDFyZW0gcmdiYSgxMjAsIDEyMCwgMTIwLCAwLjUpLFxyXG4gICAgbW9kYWxCYWNrZ3JvdW5kOiB1cmwofnNyYy9hc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtd2hpdGUucG5nKSxcclxuICAgIGNsb3NlQnV0dG9uQ29sb3I6ICM0MzQ1NGJcclxuICApXHJcbik7XHJcblxyXG5cclxuXHJcblxyXG5cclxuIiwiYXBwLW1haW4sIGFwcC1jcmVhdGUtd2FsbGV0LCBhcHAtb3Blbi13YWxsZXQsIGFwcC1yZXN0b3JlLXdhbGxldCwgYXBwLXNlZWQtcGhyYXNlLCBhcHAtd2FsbGV0LWRldGFpbHMsIGFwcC1hc3NpZ24tYWxpYXMsIGFwcC1lZGl0LWFsaWFzLCBhcHAtdHJhbnNmZXItYWxpYXMsIGFwcC1zZXR0aW5ncywgYXBwLWxvZ2luIHtcclxuICBmbGV4OiAxIDEgYXV0bztcclxuICBwYWRkaW5nOiAzcmVtO1xyXG4gIG1pbi13aWR0aDogODVyZW07XHJcblxyXG4gIC5jb250ZW50IHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHBhZGRpbmc6IDNyZW07XHJcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoY29udGVudEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLmhlYWQge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgbGVmdDogMDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1tYWluIHtcclxuXHJcbiAgLmNvbnRlbnQge1xyXG5cclxuICAgIC5hZGQtd2FsbGV0IHtcclxuXHJcbiAgICAgIC5hZGQtd2FsbGV0LWhlbHAge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuaWNvbiB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1zZWVkLXBocmFzZSB7XHJcblxyXG4gIC5zZWVkLXBocmFzZS1jb250ZW50IHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGlucHV0QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXdhbGxldC1kZXRhaWxzIHtcclxuXHJcbiAgLnNlZWQtcGhyYXNlIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGlucHV0QmFja2dyb3VuZENvbG9yKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1zZXR0aW5ncyB7XHJcblxyXG4gIC5jb250ZW50IHtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHJcbiAgICAudGhlbWUtc2VsZWN0aW9uIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnNjYWxlLXNlbGVjdGlvbiB7XHJcblxyXG4gICAgICAuYnV0dG9uLWJsb2NrIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodGFiSW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmxhYmVsIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjdGl2ZSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAubGFiZWwge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLWxvZ2luIHtcclxuICBtaW4td2lkdGg6IGluaGVyaXQ7XHJcbn1cclxuIiwiYXBwLXNpZGViYXIge1xyXG5cclxuICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChzaWRlYmFyQmFja2dyb3VuZENvbG9yKTtcclxuICB9XHJcblxyXG4gIC5zaWRlYmFyLWFjY291bnRzIHtcclxuXHJcbiAgICAuc2lkZWJhci1hY2NvdW50cy1oZWFkZXIge1xyXG5cclxuICAgICAgaDMge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBidXR0b24ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnNpZGViYXItYWNjb3VudHMtbGlzdCB7XHJcblxyXG4gICAgICAuc2lkZWJhci1hY2NvdW50IHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc2lkZWJhci1hY2NvdW50LXJvdyB7XHJcblxyXG4gICAgICAgICAgLnRleHQge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuaWNvbiB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuaW5kaWNhdG9yIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlQnV0dG9uQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKGFsdGVybmF0aXZlVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuXHJcbiAgICAgICAgICAgIC5wcm9ncmVzcy1iYXIge1xyXG5cclxuICAgICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAuZmlsbCB7XHJcblxyXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmLmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjdGl2ZSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChhY2NvdW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgY29sb3I6IHRoZW1lZChhY2NvdW50TWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLnNpZGViYXItYWNjb3VudC1yb3cge1xyXG5cclxuICAgICAgICAgICAgLnRleHQge1xyXG5cclxuICAgICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYWNjb3VudE9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5pbmRpY2F0b3Ige1xyXG5cclxuICAgICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChhY2NvdW50SW5kaWNhdG9yQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYWNjb3VudEluZGljYXRvclRleHRDb2xvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAuc3dpdGNoIHtcclxuXHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYWNjb3VudFN3aXRjaEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJi5hY2NvdW50LXN5bmNocm9uaXphdGlvbiB7XHJcblxyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChhY2NvdW50T3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpob3Zlcjpub3QoLmFjdGl2ZSkge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYWNjb3VudEhvdmVyQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmOmFmdGVyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50IDAlLCB0aGVtZWQoc2lkZWJhckJhY2tncm91bmRDb2xvcikgMTAwJSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zaWRlYmFyLXNldHRpbmdzIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogMC4ycmVtIHNvbGlkIHRoZW1lZChzaWRlYmFyQm9yZGVyQ29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC53cmFwLWJ1dHRvbiB7XHJcblxyXG4gICAgICBidXR0b24ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuaWNvbiB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuYWN0aXZlIHtcclxuXHJcbiAgICAgICAgYnV0dG9uIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGFjY291bnRCYWNrZ3JvdW5kQ29sb3IpIWltcG9ydGFudDtcclxuICAgICAgICAgICAgY29sb3I6IHRoZW1lZChhY2NvdW50TWFpblRleHRDb2xvcikhaW1wb3J0YW50O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChhY2NvdW50SW5kaWNhdG9yQmFja2dyb3VuZENvbG9yKSFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAuc3RhdHVzLWNvbnRhaW5lciB7XHJcblxyXG4gICAgICAub2ZmbGluZTpiZWZvcmUge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChvZmZsaW5lQ29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLm9ubGluZTpiZWZvcmUge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChvbmxpbmVDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciB7XHJcblxyXG4gICAgICAgIC5zeW5jaW5nIHtcclxuXHJcbiAgICAgICAgICAucHJvZ3Jlc3MtYmFyIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5maWxsIHtcclxuXHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5sb2FkaW5nIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnVwZGF0ZS1jb250YWluZXIge1xyXG5cclxuICAgICAgLnN0YW5kYXJkIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmltcG9ydGFudCB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChvcmFuZ2VUZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmNyaXRpY2FsIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBjb2xvcjogdGhlbWVkKHJlZFRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAudGltZSB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChvcmFuZ2VUZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICAmLnN0YW5kYXJkIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5pbXBvcnRhbnQge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQob3JhbmdlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuY3JpdGljYWwge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocmVkVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYudGltZSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChvcmFuZ2VUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJhcHAtd2FsbGV0IHtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLmhlYWRlciB7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmFsaWFzIHtcclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWRkcmVzcyB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLmljb24ge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudGFicyB7XHJcblxyXG4gICAgLnRhYnMtaGVhZGVyIHtcclxuXHJcbiAgICAgIC50YWIge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZCh0YWJJbmFjdGl2ZUJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuaWNvbiB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5pbmRpY2F0b3Ige1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYWNjb3VudEluZGljYXRvckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYWNjb3VudEluZGljYXRvclRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjdGl2ZSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjb250ZW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6aG92ZXI6bm90KC5hY3RpdmUpOm5vdCguZGlzYWJsZWQpIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHRhYkhvdmVyQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAudGFicy1jb250ZW50IHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjb250ZW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXNlbmQge1xyXG5cclxuICAuZm9ybS1zZW5kIHtcclxuXHJcbiAgICAuc2VuZC1zZWxlY3Qge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuYWRkaXRpb25hbC1kZXRhaWxzIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlcjogMC4ycmVtIHNvbGlkIHRoZW1lZCh0cmFuc3BhcmVudEJ1dHRvbkJvcmRlckNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXJlY2VpdmUge1xyXG5cclxuICAuYnRuLWNvcHktYWRkcmVzcyB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1oaXN0b3J5IHtcclxuXHJcbiAgdGFibGUge1xyXG5cclxuICAgIHRib2R5IHtcclxuXHJcbiAgICAgIHRyIHtcclxuXHJcbiAgICAgICAgJi5sb2NrZWQtdHJhbnNhY3Rpb24ge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6bnRoLWNoaWxkKDRuKzEpIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHRhYmxlQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6bnRoLWNoaWxkKDRuKzIpIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHRhYmxlQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6bnRoLWNoaWxkKDRuKzMpIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOm50aC1jaGlsZCg0bis0KSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnN0YXR1cyB7XHJcblxyXG4gICAgICAgICAgLmNvbmZpcm1hdGlvbiB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAuZmlsbCB7XHJcblxyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAubG9jay10cmFuc2FjdGlvbiB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChvcmFuZ2VUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnN0YXR1cy5zZW5kIHtcclxuXHJcbiAgICAgICAgICAuc3RhdHVzLXRyYW5zYWN0aW9uIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChyZWRUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc3RhdHVzLnJlY2VpdmVkIHtcclxuXHJcbiAgICAgICAgICAuc3RhdHVzLXRyYW5zYWN0aW9uIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChncmVlblRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1jb250cmFjdHMge1xyXG5cclxuICAud3JhcC10YWJsZSB7XHJcblxyXG4gICAgLmNvbnRyYWN0IHtcclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgJi5uZXcsICYuYWxlcnQge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocmVkVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYucHVyY2hhc2UsICYuc2VsbCB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1wdXJjaGFzZSB7XHJcblxyXG4gIC5mb3JtLXB1cmNoYXNlIHtcclxuXHJcbiAgICAucHVyY2hhc2Utc2VsZWN0IHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnB1cmNoYXNlLXN0YXRlcyB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmFkZGl0aW9uYWwtZGV0YWlscyB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXI6IDAuMnJlbSBzb2xpZCB0aGVtZWQodHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuXHJcbiAgICAucHJvZ3Jlc3MtYmFyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5wcm9ncmVzcy1iYXItZnVsbCB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtbWVzc2FnZXMge1xyXG5cclxuICB0YWJsZSB7XHJcblxyXG4gICAgdGJvZHkge1xyXG5cclxuICAgICAgdHIge1xyXG5cclxuICAgICAgICB0ZDpmaXJzdC1jaGlsZCB7XHJcblxyXG4gICAgICAgICAgc3BhbiB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtdHJ1bmNhdGU7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHJlZFRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC10eXBpbmctbWVzc2FnZSB7XHJcblxyXG4gIC5oZWFkIHtcclxuXHJcbiAgICAuaW50ZXJsb2N1dG9yIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5tZXNzYWdlcy1jb250ZW50IHtcclxuXHJcbiAgICAubWVzc2FnZXMtbGlzdCB7XHJcblxyXG4gICAgICBkaXYge1xyXG5cclxuICAgICAgICAmLmRhdGUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYubXkge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQobWVzc2FnZU15QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmOmJlZm9yZSB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSBwc2V1ZG87XHJcbiAgICAgICAgICAgIHRvcDogMDtcclxuICAgICAgICAgICAgbGVmdDogLTEuMXJlbTtcclxuICAgICAgICAgICAgYm9yZGVyOiAxLjJyZW0gc29saWQgdHJhbnNwYXJlbnQ7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtZWQobWVzc2FnZU15QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5idWRkeSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICY6YWZ0ZXIge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgcHNldWRvO1xyXG4gICAgICAgICAgICByaWdodDogLTEuMXJlbTtcclxuICAgICAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgICAgICBib3JkZXI6IDEuMnJlbSBzb2xpZCB0cmFuc3BhcmVudDtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6IHRoZW1lZChtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtc3Rha2luZyB7XHJcblxyXG4gIC5jaGFydC1oZWFkZXIge1xyXG5cclxuICAgIC5nZW5lcmFsIHtcclxuXHJcbiAgICAgIC5sYWJlbCB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAub3B0aW9ucyB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuc2VsZWN0ZWQge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG4gICAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS42cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmNoYXJ0LW9wdGlvbnMge1xyXG5cclxuICAgIC50aXRsZSB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5vcHRpb25zIHtcclxuXHJcbiAgICAgIGJ1dHRvbiB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjaGFydE9wdGlvbnNCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5hY3RpdmUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoY2hhcnRPcHRpb25zSG92ZXJDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uaW5wdXQtYmxvY2stYWxpYXMge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgLmFsaWFzLWRyb3Bkb3duIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogNi41cmVtO1xyXG4gICAgbWF4LWhlaWdodDogMTByZW07XHJcbiAgICBvdmVyZmxvdzogYXV0bztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoaW5wdXRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpdiB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gICAgICBwYWRkaW5nOiAxcmVtO1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoc2VsZWN0SG92ZXJDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi5oZWFkIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgcGFkZGluZzogMCAzcmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogM3JlbTtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLmJyZWFkY3J1bWJzIHtcclxuXHJcbiAgICA+IHNwYW4sIGEge1xyXG5cclxuICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMjBweDtcclxuICAgICAgICBvdXRsaW5lLXN0eWxlOiBub25lO1xyXG5cclxuICAgICAgICAmOmFmdGVyIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSBwc2V1ZG87XHJcbiAgICAgICAgICB0b3A6IDAuNXJlbTtcclxuICAgICAgICAgIHJpZ2h0OiAtMS41cmVtO1xyXG4gICAgICAgICAgd2lkdGg6IDAuOXJlbTtcclxuICAgICAgICAgIGhlaWdodDogMC45cmVtO1xyXG4gICAgICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2Fycm93LXJpZ2h0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICAgIG1hc2stc2l6ZTogY292ZXI7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5iYWNrLWJ0biB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgY29sb3I6ICM0ZGIxZmY7XHJcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuM3JlbTtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuN3JlbTtcclxuICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2JhY2suc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB3aWR0aDogMC45cmVtO1xyXG4gICAgICBoZWlnaHQ6IDAuOXJlbTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIuc2Nyb2xsZWQtY29udGVudCB7XHJcblxyXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xyXG4gICAgd2lkdGg6IDFyZW07XHJcbiAgICBoZWlnaHQ6IDFyZW07XHJcbiAgfVxyXG5cclxuICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICB9XHJcblxyXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7XHJcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xyXG4gICAgYm9yZGVyOiAwLjI1cmVtIHNvbGlkIHRyYW5zcGFyZW50O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xyXG4gIH1cclxuXHJcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjtcclxuICB9XHJcbn1cclxuIiwidGFibGUge1xyXG4gIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG5cclxuICB0aGVhZCB7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICB0ciB7XHJcbiAgICAgIGhlaWdodDogNHJlbTtcclxuXHJcbiAgICAgIHRoIHtcclxuICAgICAgICBwYWRkaW5nOiAxcmVtO1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XHJcblxyXG4gICAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0Ym9keSB7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyIHtcclxuICAgICAgaGVpZ2h0OiAzLjVyZW07XHJcblxyXG4gICAgICAmOm50aC1jaGlsZChvZGQpIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodGFibGVCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGQge1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjdyZW07XHJcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgICAgICBtYXgtd2lkdGg6IDIwcmVtO1xyXG5cclxuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICAgIHBhZGRpbmctbGVmdDogM3JlbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBCQVNFXHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL2Jhc2UvbWl4aW5zJztcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvYmFzZS9udWxsJztcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvYmFzZS90aGVtZSc7XHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL2Jhc2UvYmFzZSc7XHJcblxyXG4vLyBMQVlPVVRcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvbGF5b3V0L21haW4nO1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9sYXlvdXQvc2V0dGluZ3MnO1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9sYXlvdXQvc2lkZWJhcic7XHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL2xheW91dC93YWxsZXQnO1xyXG5cclxuLy8gTU9EVUxFU1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9tb2R1bGVzL2hlYWQnO1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9tb2R1bGVzL3Njcm9sbCc7XHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL21vZHVsZXMvdGFibGUnO1xyXG5cclxuQGltcG9ydCBcIn5Abmctc2VsZWN0L25nLXNlbGVjdC90aGVtZXMvZGVmYXVsdC50aGVtZS5jc3NcIjtcclxuXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcclxuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1MaWdodC50dGYpO1xyXG4gIGZvbnQtd2VpZ2h0OiAzMDA7XHJcbn1cclxuXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcclxuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1SZWd1bGFyLnR0Zik7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xyXG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLVNlbWlCb2xkLnR0Zik7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xyXG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLUJvbGQudHRmKTtcclxuICBmb250LXdlaWdodDogNzAwO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICBmb250LWZhbWlseTogT3BlblNhbnM7XHJcbiAgc3JjOiB1cmwofnNyYy9hc3NldHMvZm9udHMvT3BlblNhbnMtRXh0cmFCb2xkLnR0Zik7XHJcbiAgZm9udC13ZWlnaHQ6IDgwMDtcclxufVxyXG5cclxuXHJcbmh0bWwge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcclxuICBmb250LXNpemU6IDEwcHg7XHJcbn1cclxuXHJcbmJvZHkge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcclxuICBmb250LXNpemU6IDEuNnJlbTtcclxuICB3aWR0aDogMTAwdnc7XHJcbiAgaGVpZ2h0OiAxMDB2aDtcclxuXHJcbiAgJi50aGVtZS1kYXJrIHtcclxuICAgIGJhY2tncm91bmQ6ICMxMzE5MjEgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWRhcmsucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG4gIH1cclxuXHJcbiAgJi50aGVtZS1ncmF5IHtcclxuICAgIGJhY2tncm91bmQ6ICMxMDE0MTcgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWdyYXkucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG4gIH1cclxuXHJcbiAgJi50aGVtZS13aGl0ZSB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZWVlZWVlIHVybChcImFzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC13aGl0ZS5wbmdcIikgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcbiAgfVxyXG5cclxuICBhcHAtcm9vdCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgfVxyXG59XHJcblxyXG4udXBkYXRlLXRvb2x0aXAge1xyXG5cclxuICAudG9vbHRpcC1pbm5lciB7XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBtYXNrOiB1cmwoYXNzZXRzL2ljb25zL3VwZGF0ZS1hbGVydC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */", '', '']] +module.exports = [[module.i, "/*\r\n* Implementation of themes\r\n*/\n.ng-select.ng-select-opened>.ng-select-container{background:#fff;border-color:#b3b3b3 #ccc #d9d9d9}\n.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}\n.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-2px;border-color:transparent transparent #999;border-width:0 5px 5px}\n.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent #333}\n.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}\n.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-right-radius:0;border-top-left-radius:0}\n.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:#007eff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 0 3px rgba(0,126,255,0.1)}\n.ng-select.ng-select-disabled>.ng-select-container{background-color:#f9f9f9}\n.ng-select .ng-has-value .ng-placeholder{display:none}\n.ng-select .ng-select-container{background-color:#fff;border-radius:4px;border:1px solid #ccc;min-height:36px;align-items:center}\n.ng-select .ng-select-container:hover{box-shadow:0 1px 0 rgba(0,0,0,0.06)}\n.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:10px}\n[dir=\"rtl\"] .ng-select .ng-select-container .ng-value-container{padding-right:10px;padding-left:0}\n.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#999}\n.ng-select.ng-select-single .ng-select-container{height:36px}\n.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:5px;left:0;padding-left:10px;padding-right:50px}\n[dir=\"rtl\"] .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{padding-right:10px;padding-left:50px}\n.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{background-color:#f9f9f9;border:1px solid #e6e6e6}\n.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 5px}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:5px;padding-left:7px}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-right:7px;padding-left:0}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{font-size:.9em;margin-bottom:5px;background-color:#ebf5ff;border-radius:2px;margin-right:5px}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{margin-right:0;margin-left:5px}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#f9f9f9}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:5px}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:0;padding-right:5px}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{display:inline-block;padding:1px 5px}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:1px 5px}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#d1e8ff}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid #b8dbff}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-left:1px solid #b8dbff;border-right:none}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid #b8dbff}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:0;border-right:1px solid #b8dbff}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 3px 3px}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 3px 3px 0}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:5px;padding-bottom:5px;padding-left:3px}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-right:3px;padding-left:0}\n.ng-select .ng-clear-wrapper{color:#999}\n.ng-select .ng-clear-wrapper:hover .ng-clear{color:#D0021B}\n.ng-select .ng-spinner-zone{padding:5px 5px 0 0}\n[dir=\"rtl\"] .ng-select .ng-spinner-zone{padding:5px 0 0 5px}\n.ng-select .ng-arrow-wrapper{width:25px;padding-right:5px}\n[dir=\"rtl\"] .ng-select .ng-arrow-wrapper{padding-left:5px;padding-right:0}\n.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:#666}\n.ng-select .ng-arrow-wrapper .ng-arrow{border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 2.5px}\n.ng-dropdown-panel{background-color:#fff;border:1px solid #ccc;box-shadow:0 1px 0 rgba(0,0,0,0.06);left:0}\n.ng-dropdown-panel.ng-select-bottom{top:100%;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top-color:#e6e6e6;margin-top:-1px}\n.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-right-radius:4px;border-bottom-left-radius:4px}\n.ng-dropdown-panel.ng-select-top{bottom:100%;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-color:#e6e6e6;margin-bottom:-1px}\n.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px;border-top-left-radius:4px}\n.ng-dropdown-panel .ng-dropdown-header{border-bottom:1px solid #ccc;padding:5px 7px}\n.ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid #ccc;padding:5px 7px}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:8px 10px;font-weight:500;color:rgba(0,0,0,0.54);cursor:pointer}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#f5faff}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{background-color:#ebf5ff;font-weight:600}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{background-color:#fff;color:rgba(0,0,0,0.87);padding:8px 10px}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:#333;background-color:#ebf5ff}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:600}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:#f5faff;color:#333}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#ccc}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:22px}\n[dir=\"rtl\"] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-right:22px;padding-left:0}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:5px}\n[dir=\"rtl\"] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-left:5px;padding-right:0}\n[dir=\"rtl\"] .ng-dropdown-panel{direction:rtl;text-align:right}\nhtml {\n box-sizing: border-box;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box; }\n*, *:before, *:after {\n box-sizing: inherit;\n -webkit-box-sizing: inherit;\n -moz-box-sizing: inherit;\n margin: 0;\n padding: 0;\n -webkit-touch-collout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup,\nmenu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n border: 0;\n font-size: 100%;\n font: inherit;\n vertical-align: baseline; }\narticle, aside, details, figcaption, figure,\nfooter, header, hgroup, menu, nav, section {\n display: block; }\nbody {\n line-height: 1;\n font-style: normal; }\nol, ul {\n list-style: none; }\nblockquote, q {\n quotes: none; }\nblockquote:before, blockquote:after,\nq:before, q:after {\n content: none; }\ntable {\n border-collapse: collapse;\n border-spacing: 0; }\ntd,\nth {\n padding: 0; }\ninput {\n outline: none; }\ninput:-webkit-autofill {\n -webkit-box-shadow: 0 0 0 1000px white inset; }\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n outline: none; }\nbutton[disabled],\nhtml input[disabled] {\n cursor: default; }\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0; }\ninput {\n line-height: normal; }\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box; }\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none; }\na {\n text-decoration: none; }\na:active, a:hover, a:focus {\n outline: 0; }\ni {\n font-style: italic; }\nb, strong {\n font-weight: 700; }\nimg {\n width: auto;\n max-width: 100%;\n height: auto;\n vertical-align: top;\n border: 0; }\n.hidden {\n display: none !important; }\n.theme-dark .app-content .preloader .loading-bar {\n background-color: #5cda9d; }\n.theme-gray .app-content .preloader .loading-bar {\n background-color: #47cf8d; }\n.theme-white .app-content .preloader .loading-bar {\n background-color: #46c172; }\nbutton {\n border: none;\n font-family: OpenSans, sans-serif;\n font-size: 1.5rem;\n font-weight: 600;\n outline: none;\n padding: 0 1rem;\n height: 4.2rem; }\n.theme-dark button:disabled:not(.transparent-button), .theme-dark button.blue-button_reset {\n background-color: #9cadb7;\n color: #111921; }\n.theme-gray button:disabled:not(.transparent-button), .theme-gray button.blue-button_reset {\n background-color: #79848f;\n color: #1a1a1a; }\n.theme-white button:disabled:not(.transparent-button), .theme-white button.blue-button_reset {\n background-color: #90a4ae;\n color: #fefefe; }\n.theme-dark button:disabled:not(.transparent-button):hover, .theme-dark button.blue-button_reset:hover {\n background-color: #b7d1e0; }\n.theme-gray button:disabled:not(.transparent-button):hover, .theme-gray button.blue-button_reset:hover {\n background-color: #a1aebb; }\n.theme-white button:disabled:not(.transparent-button):hover, .theme-white button.blue-button_reset:hover {\n background-color: #aebec6; }\n.theme-dark button:disabled:not(.transparent-button):focus, .theme-dark button.blue-button_reset:focus {\n background-color: #a7b9c2; }\n.theme-gray button:disabled:not(.transparent-button):focus, .theme-gray button.blue-button_reset:focus {\n background-color: #8a959f; }\n.theme-white button:disabled:not(.transparent-button):focus, .theme-white button.blue-button_reset:focus {\n background-color: #a7b9c2; }\n.theme-dark button.blue-button:not(:disabled) {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray button.blue-button:not(:disabled) {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white button.blue-button:not(:disabled) {\n background-color: #2c95f1;\n color: #fefefe; }\n.theme-dark button.blue-button:not(:disabled):hover {\n background-color: #82d7ff; }\n.theme-gray button.blue-button:not(:disabled):hover {\n background-color: #86d6ff; }\n.theme-white button.blue-button:not(:disabled):hover {\n background-color: #5cb3ff; }\n.theme-dark button.blue-button:not(:disabled):focus {\n background-color: #59b5fd; }\n.theme-gray button.blue-button:not(:disabled):focus {\n background-color: #5fb6fc; }\n.theme-white button.blue-button:not(:disabled):focus {\n background-color: #379ffa; }\n.theme-dark button.green-button:not(:disabled) {\n background-color: #5cda9d;\n color: #111921; }\n.theme-gray button.green-button:not(:disabled) {\n background-color: #47cf8d;\n color: #1a1a1a; }\n.theme-white button.green-button:not(:disabled) {\n background-color: #46c172;\n color: #fefefe; }\n.theme-dark button.green-button:not(:disabled):hover {\n background-color: #8dfcc6; }\n.theme-gray button.green-button:not(:disabled):hover {\n background-color: #7bf6c6; }\n.theme-white button.green-button:not(:disabled):hover {\n background-color: #5ad586; }\n.theme-dark button.green-button:not(:disabled):focus {\n background-color: #62e0b2; }\n.theme-gray button.green-button:not(:disabled):focus {\n background-color: #5cdc9e; }\n.theme-white button.green-button:not(:disabled):focus {\n background-color: #53c77c; }\n.theme-dark button.turquoise-button:not(:disabled) {\n background-color: #4dd0e1;\n color: #111921; }\n.theme-gray button.turquoise-button:not(:disabled) {\n background-color: #3ec5d7;\n color: #1a1a1a; }\n.theme-white button.turquoise-button:not(:disabled) {\n background-color: #26b6c7;\n color: #fefefe; }\n.theme-dark button.turquoise-button:not(:disabled):hover {\n background-color: #87f4f5; }\n.theme-gray button.turquoise-button:not(:disabled):hover {\n background-color: #72edfe; }\n.theme-white button.turquoise-button:not(:disabled):hover {\n background-color: #52cbd9; }\n.theme-dark button.turquoise-button:not(:disabled):focus {\n background-color: #42d5e8; }\n.theme-gray button.turquoise-button:not(:disabled):focus {\n background-color: #50d0e1; }\n.theme-white button.turquoise-button:not(:disabled):focus {\n background-color: #31becf; }\nbutton.transparent-button {\n display: flex;\n align-items: center;\n justify-content: center; }\n.theme-dark button.transparent-button {\n background-color: transparent;\n border: 0.2rem solid #2b3644;\n color: #e0e0e0; }\n.theme-gray button.transparent-button {\n background-color: transparent;\n border: 0.2rem solid #2f3438;\n color: #e0e0e0; }\n.theme-white button.transparent-button {\n background-color: transparent;\n border: 0.2rem solid #ebebeb;\n color: #43454b; }\nbutton.transparent-button .icon {\n margin-right: 1rem;\n -webkit-mask: url('complete-testwallet.svg') no-repeat center;\n mask: url('complete-testwallet.svg') no-repeat center;\n width: 1.7rem;\n height: 1.7rem; }\n.theme-dark button.transparent-button .icon {\n background-color: #e0e0e0; }\n.theme-gray button.transparent-button .icon {\n background-color: #e0e0e0; }\n.theme-white button.transparent-button .icon {\n background-color: #43454b; }\n.input-block {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n margin-bottom: 0.4rem; }\n.input-block .wrap-label {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n min-height: 2.4rem; }\n.input-block label {\n font-size: 1.3rem;\n line-height: 2.4rem; }\n.theme-dark .input-block label {\n color: #556576; }\n.theme-gray .input-block label {\n color: #565c62; }\n.theme-white .input-block label {\n color: #a0a5ab; }\n.input-block input[type='text'], .input-block input[type='password'], .input-block select {\n border: none;\n font-size: 1.4rem;\n outline: none;\n padding: 0 1rem;\n width: 100%;\n height: 4.2rem; }\n.theme-dark .input-block input[type='text'], .theme-dark .input-block input[type='password'], .theme-dark .input-block select {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray .input-block input[type='text'], .theme-gray .input-block input[type='password'], .theme-gray .input-block select {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white .input-block input[type='text'], .theme-white .input-block input[type='password'], .theme-white .input-block select {\n background-color: #e6e6e6;\n color: #43454b; }\n.input-block.textarea {\n height: auto; }\n.input-block.textarea textarea {\n font-family: OpenSans, sans-serif;\n border: none;\n font-size: 1.4rem;\n outline: none;\n padding: 1rem;\n width: 100%;\n min-width: 100%;\n height: 100%;\n min-height: 7.5rem;\n max-height: 7.5rem;\n overflow: auto;\n resize: none; }\n.theme-dark .input-block.textarea textarea {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray .input-block.textarea textarea {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white .input-block.textarea textarea {\n background-color: #e6e6e6;\n color: #43454b; }\n.input-block .error-block {\n font-size: 1rem;\n line-height: 1.4rem;\n align-self: flex-end;\n text-align: right; }\n.theme-dark .input-block .error-block {\n color: #ff5252; }\n.theme-gray .input-block .error-block {\n color: #ff5252; }\n.theme-white .input-block .error-block {\n color: #ff5252; }\n.theme-dark .error-text {\n color: #ff5252; }\n.theme-gray .error-text {\n color: #ff5252; }\n.theme-white .error-text {\n color: #ff5252; }\ninput[type='radio'].style-radio + label {\n display: flex;\n align-items: center;\n cursor: pointer;\n font-weight: 400;\n padding-left: 2.4rem;\n -webkit-touch-collout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n.theme-dark input[type='radio'].style-radio + label {\n color: #556576; }\n.theme-gray input[type='radio'].style-radio + label {\n color: #565c62; }\n.theme-white input[type='radio'].style-radio + label {\n color: #a0a5ab; }\ninput[type='radio'].style-radio:not(checked) {\n position: absolute;\n opacity: 0; }\ninput[type='radio'].style-radio:not(checked) + label {\n position: relative; }\ninput[type='radio'].style-radio:not(checked) + label:before {\n content: '';\n position: absolute;\n top: 0.7rem;\n left: 0;\n background: transparent;\n border-radius: 50%;\n width: 1.4rem;\n height: 1.4rem; }\n.theme-dark input[type='radio'].style-radio:not(checked) + label:before {\n border: 0.1rem solid #4db1ff; }\n.theme-gray input[type='radio'].style-radio:not(checked) + label:before {\n border: 0.1rem solid #42a5f5; }\n.theme-white input[type='radio'].style-radio:not(checked) + label:before {\n border: 0.1rem solid #2c95f1; }\ninput[type='radio'].style-radio:not(checked) + label:after {\n content: '';\n position: absolute;\n top: 1rem;\n left: 0.3rem;\n border-radius: 50%;\n opacity: 0;\n width: 0.8rem;\n height: 0.8rem; }\n.theme-dark input[type='radio'].style-radio:not(checked) + label:after {\n background-color: #4db1ff; }\n.theme-gray input[type='radio'].style-radio:not(checked) + label:after {\n background-color: #42a5f5; }\n.theme-white input[type='radio'].style-radio:not(checked) + label:after {\n background-color: #2c95f1; }\ninput[type='radio'].style-radio:checked + label:after {\n opacity: 1; }\ninput[type='checkbox'].style-checkbox + label {\n display: flex;\n align-items: center;\n cursor: pointer;\n font-weight: 400;\n padding-left: 3.6rem;\n -webkit-touch-collout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n.theme-dark input[type='checkbox'].style-checkbox + label {\n color: #556576; }\n.theme-gray input[type='checkbox'].style-checkbox + label {\n color: #565c62; }\n.theme-white input[type='checkbox'].style-checkbox + label {\n color: #a0a5ab; }\ninput[type='checkbox'].style-checkbox:not(checked) {\n position: absolute;\n top: 50%;\n left: 1.6rem;\n transform: translateY(-50%);\n visibility: hidden; }\ninput[type='checkbox'].style-checkbox:not(checked) + label {\n position: relative; }\ninput[type='checkbox'].style-checkbox:not(checked) + label:before {\n content: '';\n position: absolute;\n top: 50%;\n left: 1.6rem;\n transform: translateY(-50%);\n background: transparent;\n width: 1.4rem;\n height: 1.4rem; }\n.theme-dark input[type='checkbox'].style-checkbox:not(checked) + label:before {\n border: 0.1rem solid #4db1ff; }\n.theme-gray input[type='checkbox'].style-checkbox:not(checked) + label:before {\n border: 0.1rem solid #42a5f5; }\n.theme-white input[type='checkbox'].style-checkbox:not(checked) + label:before {\n border: 0.1rem solid #2c95f1; }\ninput[type='checkbox'].style-checkbox:checked + label:before {\n background: url('complete-testwallet.svg'); }\n.theme-dark input[type='checkbox'].style-checkbox:checked + label:before {\n background-color: #4db1ff; }\n.theme-gray input[type='checkbox'].style-checkbox:checked + label:before {\n background-color: #42a5f5; }\n.theme-white input[type='checkbox'].style-checkbox:checked + label:before {\n background-color: #2c95f1; }\n.theme-dark .switch {\n background-color: #000000; }\n.theme-gray .switch {\n background-color: #000000; }\n.theme-white .switch {\n background-color: #e0e0e0; }\n.theme-dark .switch .circle.on {\n background-color: #4db1ff; }\n.theme-gray .switch .circle.on {\n background-color: #42a5f5; }\n.theme-white .switch .circle.on {\n background-color: #2c95f1; }\n.theme-dark .switch .circle.off {\n background-color: #556576; }\n.theme-gray .switch .circle.off {\n background-color: #565c62; }\n.theme-white .switch .circle.off {\n background-color: #a0a5ab; }\n.table-tooltip {\n padding: 1rem 2rem; }\n.theme-dark .table-tooltip {\n background: #42505f;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-gray .table-tooltip {\n background: #3e464c;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-white .table-tooltip {\n background: #ffffff;\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5);\n color: #43454b; }\n.table-tooltip .tooltip-inner {\n font-size: 1.3rem;\n line-height: 1.8rem;\n white-space: pre-wrap; }\n.table-tooltip.ng-tooltip-top {\n margin-top: -1rem; }\n.table-tooltip.ng-tooltip-top:after {\n content: \"\";\n position: absolute;\n bottom: -1rem;\n left: calc(50% - 0.5rem);\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-top:after {\n border-color: #42505f transparent transparent transparent; }\n.theme-gray .table-tooltip.ng-tooltip-top:after {\n border-color: #3e464c transparent transparent transparent; }\n.theme-white .table-tooltip.ng-tooltip-top:after {\n border-color: #ffffff transparent transparent transparent; }\n.table-tooltip.ng-tooltip-top-left {\n margin-top: -1rem; }\n.table-tooltip.ng-tooltip-top-left:after {\n content: \"\";\n position: absolute;\n bottom: -1rem;\n left: 0.7rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-top-left:after {\n border-color: #42505f transparent transparent #42505f; }\n.theme-gray .table-tooltip.ng-tooltip-top-left:after {\n border-color: #3e464c transparent transparent #3e464c; }\n.theme-white .table-tooltip.ng-tooltip-top-left:after {\n border-color: #ffffff transparent transparent #ffffff; }\n.table-tooltip.ng-tooltip-top-right {\n margin-top: -1rem; }\n.table-tooltip.ng-tooltip-top-right:after {\n content: \"\";\n position: absolute;\n bottom: -1rem;\n right: 0.7rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-top-right:after {\n border-color: #42505f #42505f transparent transparent; }\n.theme-gray .table-tooltip.ng-tooltip-top-right:after {\n border-color: #3e464c #3e464c transparent transparent; }\n.theme-white .table-tooltip.ng-tooltip-top-right:after {\n border-color: #ffffff #ffffff transparent transparent; }\n.table-tooltip.ng-tooltip-bottom {\n margin-top: 1rem; }\n.table-tooltip.ng-tooltip-bottom:before {\n content: \"\";\n position: absolute;\n top: -1rem;\n left: calc(50% - 0.5rem);\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-bottom:before {\n border-color: transparent transparent #42505f transparent; }\n.theme-gray .table-tooltip.ng-tooltip-bottom:before {\n border-color: transparent transparent #3e464c transparent; }\n.theme-white .table-tooltip.ng-tooltip-bottom:before {\n border-color: transparent transparent #ffffff transparent; }\n.table-tooltip.ng-tooltip-bottom-left {\n margin-top: 1rem; }\n.table-tooltip.ng-tooltip-bottom-left:before {\n content: \"\";\n position: absolute;\n top: -1rem;\n left: 0.7rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-bottom-left:before {\n border-color: transparent transparent #42505f #42505f; }\n.theme-gray .table-tooltip.ng-tooltip-bottom-left:before {\n border-color: transparent transparent #3e464c #3e464c; }\n.theme-white .table-tooltip.ng-tooltip-bottom-left:before {\n border-color: transparent transparent #ffffff #ffffff; }\n.table-tooltip.ng-tooltip-bottom-right {\n margin-top: 1rem; }\n.table-tooltip.ng-tooltip-bottom-right:before {\n content: \"\";\n position: absolute;\n top: -1rem;\n right: 0.7rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-bottom-right:before {\n border-color: transparent #42505f #42505f transparent; }\n.theme-gray .table-tooltip.ng-tooltip-bottom-right:before {\n border-color: transparent #3e464c #3e464c transparent; }\n.theme-white .table-tooltip.ng-tooltip-bottom-right:before {\n border-color: transparent #ffffff #ffffff transparent; }\n.table-tooltip.ng-tooltip-left {\n margin-left: -1rem; }\n.table-tooltip.ng-tooltip-left:after {\n content: \"\";\n position: absolute;\n top: calc(50% - 0.5rem);\n right: -1rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-left:after {\n border-color: transparent transparent transparent #42505f; }\n.theme-gray .table-tooltip.ng-tooltip-left:after {\n border-color: transparent transparent transparent #3e464c; }\n.theme-white .table-tooltip.ng-tooltip-left:after {\n border-color: transparent transparent transparent #ffffff; }\n.table-tooltip.ng-tooltip-right {\n margin-left: 1rem; }\n.table-tooltip.ng-tooltip-right:before {\n content: \"\";\n position: absolute;\n top: calc(50% - 0.5rem);\n left: -1rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-right:before {\n border-color: transparent #42505f transparent transparent; }\n.theme-gray .table-tooltip.ng-tooltip-right:before {\n border-color: transparent #3e464c transparent transparent; }\n.theme-white .table-tooltip.ng-tooltip-right:before {\n border-color: transparent #ffffff transparent transparent; }\n.table-tooltip-dimensions .tooltip-inner {\n overflow: auto;\n max-width: 20rem;\n max-height: 10rem; }\n.balance-tooltip {\n padding: 1.3rem; }\n.theme-dark .balance-tooltip {\n background: #42505f;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-gray .balance-tooltip {\n background: #3e464c;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-white .balance-tooltip {\n background: #ffffff;\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5);\n color: #43454b; }\n.balance-tooltip .tooltip-inner {\n display: flex;\n flex-direction: column;\n font-size: 1.3rem; }\n.balance-tooltip .tooltip-inner .available {\n margin-bottom: 1.7rem; }\n.balance-tooltip .tooltip-inner .available b {\n font-weight: 600; }\n.balance-tooltip .tooltip-inner .locked {\n margin-bottom: 0.7rem; }\n.balance-tooltip .tooltip-inner .locked b {\n font-weight: 600; }\n.balance-tooltip .tooltip-inner .link {\n cursor: pointer; }\n.theme-dark .balance-tooltip .tooltip-inner .link {\n color: #4db1ff; }\n.theme-gray .balance-tooltip .tooltip-inner .link {\n color: #42a5f5; }\n.theme-white .balance-tooltip .tooltip-inner .link {\n color: #2c95f1; }\n.balance-tooltip.ng-tooltip-top {\n margin-top: -1rem; }\n.balance-tooltip.ng-tooltip-bottom {\n margin-top: 1rem; }\n.balance-tooltip.ng-tooltip-left {\n margin-left: -1rem; }\n.balance-tooltip.ng-tooltip-right {\n margin-left: 1rem; }\n.account-tooltip .tooltip-inner {\n word-break: break-word;\n max-width: 18rem; }\n.comment-tooltip .tooltip-inner {\n overflow: auto;\n word-break: break-word;\n max-width: 50rem;\n max-height: 25rem; }\n.update-tooltip {\n padding: 1.5rem; }\n.theme-dark .update-tooltip {\n background: #42505f;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-gray .update-tooltip {\n background: #3e464c;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-white .update-tooltip {\n background: #ffffff;\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5);\n color: #43454b; }\n.theme-dark .update-tooltip.important {\n background: #5f2b11;\n color: #e0e0e0; }\n.theme-gray .update-tooltip.important {\n background: #55240d;\n color: #e0e0e0; }\n.theme-white .update-tooltip.important {\n background: #ef6c00;\n color: #ffffff; }\n.theme-dark .update-tooltip.important.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #5f2b11 #5f2b11; }\n.theme-gray .update-tooltip.important.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #55240d #55240d; }\n.theme-white .update-tooltip.important.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #ef6c00 #ef6c00; }\n.theme-dark .update-tooltip.important.ng-tooltip-right-bottom:before {\n border-color: transparent #5f2b11 #5f2b11 transparent; }\n.theme-gray .update-tooltip.important.ng-tooltip-right-bottom:before {\n border-color: transparent #55240d #55240d transparent; }\n.theme-white .update-tooltip.important.ng-tooltip-right-bottom:before {\n border-color: transparent #ef6c00 #ef6c00 transparent; }\n.update-tooltip.critical {\n padding: 2.5rem; }\n.theme-dark .update-tooltip.critical {\n background: #5f1d1d;\n color: #e0e0e0; }\n.theme-gray .update-tooltip.critical {\n background: #4c1919;\n color: #e0e0e0; }\n.theme-white .update-tooltip.critical {\n background: #e53935;\n color: #ffffff; }\n.update-tooltip.critical .tooltip-inner {\n display: flex;\n flex-direction: column;\n align-items: center; }\n.theme-dark .update-tooltip.critical.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #5f1d1d #5f1d1d; }\n.theme-gray .update-tooltip.critical.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #4c1919 #4c1919; }\n.theme-white .update-tooltip.critical.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #e53935 #e53935; }\n.theme-dark .update-tooltip.critical.ng-tooltip-right-bottom:before {\n border-color: transparent #5f1d1d #5f1d1d transparent; }\n.theme-gray .update-tooltip.critical.ng-tooltip-right-bottom:before {\n border-color: transparent #4c1919 #4c1919 transparent; }\n.theme-white .update-tooltip.critical.ng-tooltip-right-bottom:before {\n border-color: transparent #e53935 #e53935 transparent; }\n.update-tooltip .tooltip-inner {\n font-size: 1.3rem;\n line-height: 1.8rem;\n white-space: pre-wrap; }\n.update-tooltip .tooltip-inner .standard-update {\n font-size: 1.5rem;\n line-height: 2.7rem; }\n.theme-dark .update-tooltip .tooltip-inner .standard-update {\n color: #4db1ff; }\n.theme-gray .update-tooltip .tooltip-inner .standard-update {\n color: #42a5f5; }\n.theme-white .update-tooltip .tooltip-inner .standard-update {\n color: #2c95f1; }\n.update-tooltip .tooltip-inner .important-update {\n font-size: 1.5rem;\n line-height: 2.7rem; }\n.theme-dark .update-tooltip .tooltip-inner .important-update {\n color: #ff6f00; }\n.theme-gray .update-tooltip .tooltip-inner .important-update {\n color: #ff6f00; }\n.theme-white .update-tooltip .tooltip-inner .important-update {\n color: #ffffff; }\n.update-tooltip .tooltip-inner .critical-update {\n font-size: 1.5rem;\n line-height: 2.7rem;\n text-align: center; }\n.update-tooltip .tooltip-inner .wrong-time {\n font-size: 1.5rem;\n line-height: 2.7rem; }\n.theme-dark .update-tooltip .tooltip-inner .wrong-time {\n color: #ff6f00; }\n.theme-gray .update-tooltip .tooltip-inner .wrong-time {\n color: #ff6f00; }\n.theme-white .update-tooltip .tooltip-inner .wrong-time {\n color: #ffffff; }\n.update-tooltip .tooltip-inner .icon {\n margin: 1.5rem 0;\n width: 5rem;\n height: 5rem; }\n.theme-dark .update-tooltip .tooltip-inner .icon {\n background-color: #ff5252; }\n.theme-gray .update-tooltip .tooltip-inner .icon {\n background-color: #ff5252; }\n.theme-white .update-tooltip .tooltip-inner .icon {\n background-color: #ffffff; }\n.update-tooltip.ng-tooltip-left-bottom {\n margin-left: -1.5rem; }\n.update-tooltip.ng-tooltip-left-bottom:after {\n content: \"\";\n position: absolute;\n bottom: 0.6rem;\n right: -1rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .update-tooltip.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #42505f #42505f; }\n.theme-gray .update-tooltip.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #3e464c #3e464c; }\n.theme-white .update-tooltip.ng-tooltip-left-bottom:after {\n border-color: transparent transparent #ffffff #ffffff; }\n.update-tooltip.ng-tooltip-right-bottom {\n margin-left: 1.5rem; }\n.update-tooltip.ng-tooltip-right-bottom:before {\n content: \"\";\n position: absolute;\n bottom: 0.6rem;\n left: -1rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .update-tooltip.ng-tooltip-right-bottom:before {\n border-color: transparent #42505f #42505f transparent; }\n.theme-gray .update-tooltip.ng-tooltip-right-bottom:before {\n border-color: transparent #3e464c #3e464c transparent; }\n.theme-white .update-tooltip.ng-tooltip-right-bottom:before {\n border-color: transparent #ffffff #ffffff transparent; }\n.ngx-contextmenu .dropdown-menu {\n border: none;\n padding: 0; }\n.theme-dark .ngx-contextmenu .dropdown-menu {\n background-color: #2b3644;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5); }\n.theme-gray .ngx-contextmenu .dropdown-menu {\n background-color: #292d31;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5); }\n.theme-white .ngx-contextmenu .dropdown-menu {\n background-color: #e0e0e0;\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5); }\n.ngx-contextmenu li {\n display: block;\n font-family: OpenSans, sans-serif;\n font-size: 1.3rem;\n text-transform: uppercase;\n text-align: center; }\n.ngx-contextmenu a {\n display: block;\n padding: 0.5em 1em; }\n.theme-dark .ngx-contextmenu a {\n color: #e0e0e0; }\n.theme-gray .ngx-contextmenu a {\n color: #e0e0e0; }\n.theme-white .ngx-contextmenu a {\n color: #43454b; }\n.theme-dark .ngx-contextmenu a:hover {\n background-color: #556576;\n color: #e0e0e0; }\n.theme-gray .ngx-contextmenu a:hover {\n background-color: #515960;\n color: #e0e0e0; }\n.theme-white .ngx-contextmenu a:hover {\n background-color: #ffffff;\n color: #43454b; }\n.ng-select.custom-select {\n width: 100%; }\n.ng-select.custom-select .ng-select-container {\n border: none;\n border-radius: 0;\n cursor: pointer;\n font-size: 1.4rem;\n outline: none;\n padding: 0 1rem;\n height: 4.2rem; }\n.theme-dark .ng-select.custom-select .ng-select-container {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray .ng-select.custom-select .ng-select-container {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white .ng-select.custom-select .ng-select-container {\n background-color: #e6e6e6;\n color: #43454b; }\n.ng-select.custom-select .ng-select-container .ng-value-container {\n padding: 0; }\n.ng-select.custom-select .ng-select-container .ng-value-container .ng-input {\n top: auto; }\n.ng-select.custom-select .ng-dropdown-panel {\n border: none; }\n.theme-dark .ng-select.custom-select .ng-dropdown-panel {\n background-color: #171e27; }\n.theme-gray .ng-select.custom-select .ng-dropdown-panel {\n background-color: #292d31; }\n.theme-white .ng-select.custom-select .ng-dropdown-panel {\n background-color: #e6e6e6; }\n.ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option {\n font-size: 1.4rem;\n padding: 1rem; }\n.theme-dark .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option {\n background-color: #e6e6e6;\n color: #43454b; }\n.theme-dark .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked {\n background-color: rgba(58, 69, 85, 0.5);\n color: #e0e0e0; }\n.theme-gray .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked {\n background-color: rgba(58, 62, 66, 0.5);\n color: #e0e0e0; }\n.theme-white .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked {\n background-color: rgba(240, 240, 240, 0.5);\n color: #43454b; }\n.theme-dark .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected {\n background-color: rgba(43, 54, 68, 0.5);\n color: #e0e0e0; }\n.theme-gray .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected {\n background-color: rgba(37, 40, 43, 0.5);\n color: #e0e0e0; }\n.theme-white .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected {\n background-color: rgba(224, 224, 224, 0.5);\n color: #43454b; }\n.ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items::-webkit-scrollbar {\n background-color: transparent;\n cursor: default;\n width: 1rem;\n height: 1rem; }\n.ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items::-webkit-scrollbar-track {\n background: transparent; }\n.ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items::-webkit-scrollbar-thumb {\n background-color: #556576;\n background-clip: padding-box;\n border: 0.25rem solid transparent;\n border-radius: 0.5rem; }\n.ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items::-webkit-scrollbar-thumb:hover {\n background-color: #556576; }\n.theme-dark app-modal-container .modal {\n background: url('background-dark.png');\n color: #e0e0e0; }\n.theme-gray app-modal-container .modal {\n background: url('background-gray.png');\n color: #e0e0e0; }\n.theme-white app-modal-container .modal {\n background: url('background-white.png');\n color: #43454b; }\n.theme-dark app-modal-container .modal .content .icon.error {\n background-color: #ff5252; }\n.theme-gray app-modal-container .modal .content .icon.error {\n background-color: #ff5252; }\n.theme-white app-modal-container .modal .content .icon.error {\n background-color: #ff5252; }\n.theme-dark app-modal-container .modal .content .icon.success {\n background-color: #5cda9d; }\n.theme-gray app-modal-container .modal .content .icon.success {\n background-color: #47cf8d; }\n.theme-white app-modal-container .modal .content .icon.success {\n background-color: #46c172; }\n.theme-dark app-modal-container .modal .content .icon.info {\n background-color: #4db1ff; }\n.theme-gray app-modal-container .modal .content .icon.info {\n background-color: #42a5f5; }\n.theme-white app-modal-container .modal .content .icon.info {\n background-color: #2c95f1; }\n.theme-dark app-modal-container .modal .action-button {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray app-modal-container .modal .action-button {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white app-modal-container .modal .action-button {\n background-color: #2c95f1;\n color: #fefefe; }\n.theme-dark app-modal-container .modal .close-button .icon {\n background-color: #556576; }\n.theme-gray app-modal-container .modal .close-button .icon {\n background-color: #515960; }\n.theme-white app-modal-container .modal .close-button .icon {\n background-color: #43454b; }\n.theme-dark app-transaction-details .table {\n border-top: 0.2rem solid #2b3644; }\n.theme-gray app-transaction-details .table {\n border-top: 0.2rem solid #2f3438; }\n.theme-white app-transaction-details .table {\n border-top: 0.2rem solid #ebebeb; }\n.theme-dark app-transaction-details .table .row .cell.label {\n color: #556576; }\n.theme-gray app-transaction-details .table .row .cell.label {\n color: #565c62; }\n.theme-white app-transaction-details .table .row .cell.label {\n color: #a0a5ab; }\n.theme-dark app-transaction-details .table .row .cell.value {\n color: #e0e0e0; }\n.theme-gray app-transaction-details .table .row .cell.value {\n color: #e0e0e0; }\n.theme-white app-transaction-details .table .row .cell.value {\n color: #43454b; }\n.theme-dark app-transaction-details .table .row .cell.key-value {\n color: #4db1ff; }\n.theme-gray app-transaction-details .table .row .cell.key-value {\n color: #42a5f5; }\n.theme-white app-transaction-details .table .row .cell.key-value {\n color: #2c95f1; }\n.theme-dark app-progress-container .progress-bar-container {\n color: #e0e0e0; }\n.theme-gray app-progress-container .progress-bar-container {\n color: #e0e0e0; }\n.theme-white app-progress-container .progress-bar-container {\n color: #43454b; }\n.theme-dark app-progress-container .progress-bar-container .progress-bar {\n background-color: #343f4a; }\n.theme-gray app-progress-container .progress-bar-container .progress-bar {\n background-color: #363a3e; }\n.theme-white app-progress-container .progress-bar-container .progress-bar {\n background-color: #dcdcdc; }\n.theme-dark app-progress-container .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #5cda9d; }\n.theme-gray app-progress-container .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #47cf8d; }\n.theme-white app-progress-container .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #46c172; }\n.theme-dark app-open-wallet-modal .modal {\n background: url('background-dark.png');\n color: #e0e0e0; }\n.theme-gray app-open-wallet-modal .modal {\n background: url('background-gray.png');\n color: #e0e0e0; }\n.theme-white app-open-wallet-modal .modal {\n background: url('background-white.png');\n color: #43454b; }\napp-main, app-create-wallet, app-open-wallet, app-restore-wallet, app-seed-phrase, app-wallet-details, app-assign-alias, app-edit-alias, app-transfer-alias, app-settings, app-login {\n flex: 1 1 auto;\n padding: 3rem;\n min-width: 85rem; }\napp-main .content, app-create-wallet .content, app-open-wallet .content, app-restore-wallet .content, app-seed-phrase .content, app-wallet-details .content, app-assign-alias .content, app-edit-alias .content, app-transfer-alias .content, app-settings .content, app-login .content {\n position: relative;\n padding: 3rem;\n min-height: 100%; }\n.theme-dark app-main .content, .theme-dark app-create-wallet .content, .theme-dark app-open-wallet .content, .theme-dark app-restore-wallet .content, .theme-dark app-seed-phrase .content, .theme-dark app-wallet-details .content, .theme-dark app-assign-alias .content, .theme-dark app-edit-alias .content, .theme-dark app-transfer-alias .content, .theme-dark app-settings .content, .theme-dark app-login .content {\n background-color: rgba(43, 54, 68, 0.5);\n color: #e0e0e0; }\n.theme-gray app-main .content, .theme-gray app-create-wallet .content, .theme-gray app-open-wallet .content, .theme-gray app-restore-wallet .content, .theme-gray app-seed-phrase .content, .theme-gray app-wallet-details .content, .theme-gray app-assign-alias .content, .theme-gray app-edit-alias .content, .theme-gray app-transfer-alias .content, .theme-gray app-settings .content, .theme-gray app-login .content {\n background-color: rgba(37, 40, 43, 0.5);\n color: #e0e0e0; }\n.theme-white app-main .content, .theme-white app-create-wallet .content, .theme-white app-open-wallet .content, .theme-white app-restore-wallet .content, .theme-white app-seed-phrase .content, .theme-white app-wallet-details .content, .theme-white app-assign-alias .content, .theme-white app-edit-alias .content, .theme-white app-transfer-alias .content, .theme-white app-settings .content, .theme-white app-login .content {\n background-color: rgba(255, 255, 255, 0.5);\n color: #43454b; }\napp-main .content .head, app-create-wallet .content .head, app-open-wallet .content .head, app-restore-wallet .content .head, app-seed-phrase .content .head, app-wallet-details .content .head, app-assign-alias .content .head, app-edit-alias .content .head, app-transfer-alias .content .head, app-settings .content .head, app-login .content .head {\n position: absolute;\n top: 0;\n left: 0; }\n.theme-dark app-main .content .add-wallet .add-wallet-help {\n color: #4db1ff; }\n.theme-gray app-main .content .add-wallet .add-wallet-help {\n color: #42a5f5; }\n.theme-white app-main .content .add-wallet .add-wallet-help {\n color: #2c95f1; }\n.theme-dark app-main .content .add-wallet .add-wallet-help .icon {\n background-color: #4db1ff; }\n.theme-gray app-main .content .add-wallet .add-wallet-help .icon {\n background-color: #42a5f5; }\n.theme-white app-main .content .add-wallet .add-wallet-help .icon {\n background-color: #2c95f1; }\n.theme-dark app-seed-phrase .seed-phrase-content {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray app-seed-phrase .seed-phrase-content {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white app-seed-phrase .seed-phrase-content {\n background-color: #e6e6e6;\n color: #43454b; }\n.theme-dark app-wallet-details .seed-phrase {\n background-color: #171e27; }\n.theme-gray app-wallet-details .seed-phrase {\n background-color: #292d31; }\n.theme-white app-wallet-details .seed-phrase {\n background-color: #e6e6e6; }\napp-settings .content {\n height: 100%;\n overflow-y: auto;\n display: flex;\n justify-content: space-between;\n flex-direction: column; }\n.theme-dark app-settings .content .theme-selection {\n color: #556576; }\n.theme-gray app-settings .content .theme-selection {\n color: #565c62; }\n.theme-white app-settings .content .theme-selection {\n color: #a0a5ab; }\n.theme-dark app-settings .content .scale-selection .button-block {\n background-color: rgba(23, 31, 39, 0.5); }\n.theme-gray app-settings .content .scale-selection .button-block {\n background-color: rgba(28, 30, 33, 0.5); }\n.theme-white app-settings .content .scale-selection .button-block {\n background-color: rgba(224, 224, 224, 0.5); }\n.theme-dark app-settings .content .scale-selection .button-block .label {\n color: #556576; }\n.theme-gray app-settings .content .scale-selection .button-block .label {\n color: #565c62; }\n.theme-white app-settings .content .scale-selection .button-block .label {\n color: #a0a5ab; }\n.theme-dark app-settings .content .scale-selection .button-block.active {\n background-color: #4db1ff; }\n.theme-gray app-settings .content .scale-selection .button-block.active {\n background-color: #42a5f5; }\n.theme-white app-settings .content .scale-selection .button-block.active {\n background-color: #2c95f1; }\n.theme-dark app-settings .content .scale-selection .button-block.active .label {\n color: #4db1ff; }\n.theme-gray app-settings .content .scale-selection .button-block.active .label {\n color: #42a5f5; }\n.theme-white app-settings .content .scale-selection .button-block.active .label {\n color: #2c95f1; }\napp-login {\n min-width: inherit; }\n.theme-dark app-sidebar {\n background-color: #171f27; }\n.theme-gray app-sidebar {\n background-color: #1c1e21; }\n.theme-white app-sidebar {\n background-color: white; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-header button {\n color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-header button {\n color: #42a5f5; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-header button {\n color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\n background-color: transparent;\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\n background-color: transparent;\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\n background-color: transparent;\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\n color: #a0a5ab; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\n background-color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\n background-color: #42a5f5; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\n background-color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\n background-color: #2c95f1;\n color: #fefefe; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\n background-color: #343f4a; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\n background-color: #363a3e; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\n background-color: #dcdcdc; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\n background-color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\n background-color: #42a5f5; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\n background-color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\n color: #a0a5ab; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\n background-color: rgba(43, 54, 68, 0.5);\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\n background-color: rgba(37, 40, 43, 0.5);\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\n background-color: #1e88e5;\n color: #ffffff; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\n color: #91baf1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\n background-color: #ffffff;\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\n background-color: #000000;\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\n background-color: #000000;\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\n background-color: #ffffff;\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\n color: #91baf1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\n background-color: rgba(58, 69, 85, 0.5); }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\n background-color: rgba(58, 62, 66, 0.5); }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\n background-color: rgba(240, 240, 240, 0.5); }\n.theme-dark app-sidebar .sidebar-accounts:after {\n background: linear-gradient(to bottom, transparent 0%, #171f27 100%); }\n.theme-gray app-sidebar .sidebar-accounts:after {\n background: linear-gradient(to bottom, transparent 0%, #1c1e21 100%); }\n.theme-white app-sidebar .sidebar-accounts:after {\n background: linear-gradient(to bottom, transparent 0%, white 100%); }\n.theme-dark app-sidebar .sidebar-settings {\n border-bottom: 0.2rem solid #1f2833; }\n.theme-gray app-sidebar .sidebar-settings {\n border-bottom: 0.2rem solid #2e3337; }\n.theme-white app-sidebar .sidebar-settings {\n border-bottom: 0.2rem solid #ebebeb; }\n.theme-dark app-sidebar .sidebar-settings .wrap-button button {\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-settings .wrap-button button {\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-settings .wrap-button button {\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-settings .wrap-button button .icon {\n background-color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-settings .wrap-button button .icon {\n background-color: #42a5f5; }\n.theme-white app-sidebar .sidebar-settings .wrap-button button .icon {\n background-color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-settings .wrap-button.active button {\n background-color: rgba(43, 54, 68, 0.5) !important;\n color: #e0e0e0 !important; }\n.theme-gray app-sidebar .sidebar-settings .wrap-button.active button {\n background-color: rgba(37, 40, 43, 0.5) !important;\n color: #e0e0e0 !important; }\n.theme-white app-sidebar .sidebar-settings .wrap-button.active button {\n background-color: #1e88e5 !important;\n color: #ffffff !important; }\n.theme-dark app-sidebar .sidebar-settings .wrap-button.active button .icon {\n background-color: #4db1ff !important; }\n.theme-gray app-sidebar .sidebar-settings .wrap-button.active button .icon {\n background-color: #42a5f5 !important; }\n.theme-white app-sidebar .sidebar-settings .wrap-button.active button .icon {\n background-color: #ffffff !important; }\n.theme-dark app-sidebar .sidebar-synchronization-status {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-synchronization-status {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-synchronization-status {\n color: #a0a5ab; }\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .offline:before {\n background-color: #ff5252; }\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .offline:before {\n background-color: #ff5252; }\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .offline:before {\n background-color: #ff5252; }\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .online:before {\n background-color: #5cda9d; }\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .online:before {\n background-color: #47cf8d; }\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .online:before {\n background-color: #46c172; }\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar {\n background-color: #343f4a; }\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar {\n background-color: #363a3e; }\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar {\n background-color: #dcdcdc; }\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar .fill {\n background-color: #5cda9d; }\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar .fill {\n background-color: #47cf8d; }\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar .fill {\n background-color: #46c172; }\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .loading {\n background-color: #5cda9d; }\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .loading {\n background-color: #47cf8d; }\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .loading {\n background-color: #46c172; }\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .standard {\n color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .standard {\n color: #42a5f5; }\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .standard {\n color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .important {\n color: #ff6f00; }\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .important {\n color: #ff6f00; }\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .important {\n color: #ff6f00; }\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .critical {\n color: #ff5252; }\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .critical {\n color: #ff5252; }\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .critical {\n color: #ff5252; }\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .time {\n color: #ff6f00; }\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .time {\n color: #ff6f00; }\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .time {\n color: #ff6f00; }\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .icon.standard {\n background-color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .icon.standard {\n background-color: #42a5f5; }\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .icon.standard {\n background-color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .icon.important {\n background-color: #ff6f00; }\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .icon.important {\n background-color: #ff6f00; }\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .icon.important {\n background-color: #ff6f00; }\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .icon.critical {\n background-color: #ff5252; }\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .icon.critical {\n background-color: #ff5252; }\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .icon.critical {\n background-color: #ff5252; }\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .icon.time {\n background-color: #ff6f00; }\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .icon.time {\n background-color: #ff6f00; }\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .icon.time {\n background-color: #ff6f00; }\n.theme-dark app-wallet {\n color: #e0e0e0; }\n.theme-gray app-wallet {\n color: #e0e0e0; }\n.theme-white app-wallet {\n color: #43454b; }\n.theme-dark app-wallet .header button {\n color: #e0e0e0; }\n.theme-gray app-wallet .header button {\n color: #e0e0e0; }\n.theme-white app-wallet .header button {\n color: #43454b; }\n.theme-dark app-wallet .header button .icon {\n background-color: #4db1ff; }\n.theme-gray app-wallet .header button .icon {\n background-color: #42a5f5; }\n.theme-white app-wallet .header button .icon {\n background-color: #2c95f1; }\n.theme-dark app-wallet .header .alias .icon {\n background-color: #4db1ff; }\n.theme-gray app-wallet .header .alias .icon {\n background-color: #42a5f5; }\n.theme-white app-wallet .header .alias .icon {\n background-color: #2c95f1; }\n.theme-dark app-wallet .address {\n color: #4db1ff; }\n.theme-gray app-wallet .address {\n color: #42a5f5; }\n.theme-white app-wallet .address {\n color: #2c95f1; }\n.theme-dark app-wallet .address .icon {\n background-color: #4db1ff; }\n.theme-gray app-wallet .address .icon {\n background-color: #42a5f5; }\n.theme-white app-wallet .address .icon {\n background-color: #2c95f1; }\n.theme-dark app-wallet .tabs .tabs-header .tab {\n background-color: rgba(23, 31, 39, 0.5); }\n.theme-gray app-wallet .tabs .tabs-header .tab {\n background-color: rgba(28, 30, 33, 0.5); }\n.theme-white app-wallet .tabs .tabs-header .tab {\n background-color: rgba(224, 224, 224, 0.5); }\n.theme-dark app-wallet .tabs .tabs-header .tab .icon {\n background-color: #4db1ff; }\n.theme-gray app-wallet .tabs .tabs-header .tab .icon {\n background-color: #42a5f5; }\n.theme-white app-wallet .tabs .tabs-header .tab .icon {\n background-color: #2c95f1; }\n.theme-dark app-wallet .tabs .tabs-header .tab .indicator {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray app-wallet .tabs .tabs-header .tab .indicator {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white app-wallet .tabs .tabs-header .tab .indicator {\n background-color: #ffffff;\n color: #43454b; }\n.theme-dark app-wallet .tabs .tabs-header .tab.active {\n background-color: rgba(43, 54, 68, 0.5); }\n.theme-gray app-wallet .tabs .tabs-header .tab.active {\n background-color: rgba(37, 40, 43, 0.5); }\n.theme-white app-wallet .tabs .tabs-header .tab.active {\n background-color: rgba(255, 255, 255, 0.5); }\n.theme-dark app-wallet .tabs .tabs-header .tab:hover:not(.active):not(.disabled) {\n background-color: rgba(58, 69, 85, 0.5); }\n.theme-gray app-wallet .tabs .tabs-header .tab:hover:not(.active):not(.disabled) {\n background-color: rgba(58, 62, 66, 0.5); }\n.theme-white app-wallet .tabs .tabs-header .tab:hover:not(.active):not(.disabled) {\n background-color: #ffffff; }\n.theme-dark app-wallet .tabs .tabs-content {\n background-color: rgba(43, 54, 68, 0.5); }\n.theme-gray app-wallet .tabs .tabs-content {\n background-color: rgba(37, 40, 43, 0.5); }\n.theme-white app-wallet .tabs .tabs-content {\n background-color: rgba(255, 255, 255, 0.5); }\n.theme-dark app-send .form-send .send-select {\n color: #e0e0e0; }\n.theme-gray app-send .form-send .send-select {\n color: #e0e0e0; }\n.theme-white app-send .form-send .send-select {\n color: #43454b; }\n.theme-dark app-send .form-send .send-select .icon {\n background-color: #4db1ff; }\n.theme-gray app-send .form-send .send-select .icon {\n background-color: #42a5f5; }\n.theme-white app-send .form-send .send-select .icon {\n background-color: #2c95f1; }\n.theme-dark app-send .form-send .additional-details {\n border: 0.2rem solid #2b3644; }\n.theme-gray app-send .form-send .additional-details {\n border: 0.2rem solid #2f3438; }\n.theme-white app-send .form-send .additional-details {\n border: 0.2rem solid #ebebeb; }\n.theme-dark app-receive .btn-copy-address {\n background-color: #4db1ff; }\n.theme-gray app-receive .btn-copy-address {\n background-color: #42a5f5; }\n.theme-white app-receive .btn-copy-address {\n background-color: #2c95f1; }\n.theme-dark app-history table tbody tr.locked-transaction {\n color: #556576; }\n.theme-gray app-history table tbody tr.locked-transaction {\n color: #565c62; }\n.theme-white app-history table tbody tr.locked-transaction {\n color: #a0a5ab; }\n.theme-dark app-history table tbody tr:nth-child(4n+1) {\n background-color: #18202a; }\n.theme-gray app-history table tbody tr:nth-child(4n+1) {\n background-color: #25292d; }\n.theme-white app-history table tbody tr:nth-child(4n+1) {\n background-color: #ffffff; }\n.theme-dark app-history table tbody tr:nth-child(4n+2) {\n background-color: #18202a; }\n.theme-gray app-history table tbody tr:nth-child(4n+2) {\n background-color: #25292d; }\n.theme-white app-history table tbody tr:nth-child(4n+2) {\n background-color: #ffffff; }\n.theme-dark app-history table tbody tr:nth-child(4n+3) {\n background-color: transparent; }\n.theme-gray app-history table tbody tr:nth-child(4n+3) {\n background-color: transparent; }\n.theme-white app-history table tbody tr:nth-child(4n+3) {\n background-color: transparent; }\n.theme-dark app-history table tbody tr:nth-child(4n+4) {\n background-color: transparent; }\n.theme-gray app-history table tbody tr:nth-child(4n+4) {\n background-color: transparent; }\n.theme-white app-history table tbody tr:nth-child(4n+4) {\n background-color: transparent; }\n.theme-dark app-history table tbody tr .status .confirmation {\n background-color: #343f4a; }\n.theme-gray app-history table tbody tr .status .confirmation {\n background-color: #363a3e; }\n.theme-white app-history table tbody tr .status .confirmation {\n background-color: #dcdcdc; }\n.theme-dark app-history table tbody tr .status .confirmation .fill {\n background-color: #5cda9d; }\n.theme-gray app-history table tbody tr .status .confirmation .fill {\n background-color: #47cf8d; }\n.theme-white app-history table tbody tr .status .confirmation .fill {\n background-color: #46c172; }\n.theme-dark app-history table tbody tr .lock-transaction {\n background-color: #ff6f00; }\n.theme-gray app-history table tbody tr .lock-transaction {\n background-color: #ff6f00; }\n.theme-white app-history table tbody tr .lock-transaction {\n background-color: #ff6f00; }\n.theme-dark app-history table tbody tr .status.send .status-transaction {\n background-color: #ff5252; }\n.theme-gray app-history table tbody tr .status.send .status-transaction {\n background-color: #ff5252; }\n.theme-white app-history table tbody tr .status.send .status-transaction {\n background-color: #ff5252; }\n.theme-dark app-history table tbody tr .status.received .status-transaction {\n background-color: #5cda9d; }\n.theme-gray app-history table tbody tr .status.received .status-transaction {\n background-color: #47cf8d; }\n.theme-white app-history table tbody tr .status.received .status-transaction {\n background-color: #46c172; }\n.theme-dark app-contracts .wrap-table .contract .icon.new, .theme-dark app-contracts .wrap-table .contract .icon.alert {\n background-color: #ff5252; }\n.theme-gray app-contracts .wrap-table .contract .icon.new, .theme-gray app-contracts .wrap-table .contract .icon.alert {\n background-color: #ff5252; }\n.theme-white app-contracts .wrap-table .contract .icon.new, .theme-white app-contracts .wrap-table .contract .icon.alert {\n background-color: #ff5252; }\n.theme-dark app-contracts .wrap-table .contract .icon.purchase, .theme-dark app-contracts .wrap-table .contract .icon.sell {\n background-color: #4db1ff; }\n.theme-gray app-contracts .wrap-table .contract .icon.purchase, .theme-gray app-contracts .wrap-table .contract .icon.sell {\n background-color: #42a5f5; }\n.theme-white app-contracts .wrap-table .contract .icon.purchase, .theme-white app-contracts .wrap-table .contract .icon.sell {\n background-color: #2c95f1; }\n.theme-dark app-purchase .form-purchase .purchase-select {\n color: #e0e0e0; }\n.theme-gray app-purchase .form-purchase .purchase-select {\n color: #e0e0e0; }\n.theme-white app-purchase .form-purchase .purchase-select {\n color: #43454b; }\n.theme-dark app-purchase .form-purchase .purchase-select .icon {\n background-color: #4db1ff; }\n.theme-gray app-purchase .form-purchase .purchase-select .icon {\n background-color: #42a5f5; }\n.theme-white app-purchase .form-purchase .purchase-select .icon {\n background-color: #2c95f1; }\n.theme-dark app-purchase .form-purchase .purchase-states {\n color: #4db1ff; }\n.theme-gray app-purchase .form-purchase .purchase-states {\n color: #42a5f5; }\n.theme-white app-purchase .form-purchase .purchase-states {\n color: #2c95f1; }\n.theme-dark app-purchase .form-purchase .additional-details {\n border: 0.2rem solid #2b3644; }\n.theme-gray app-purchase .form-purchase .additional-details {\n border: 0.2rem solid #2f3438; }\n.theme-white app-purchase .form-purchase .additional-details {\n border: 0.2rem solid #ebebeb; }\n.theme-dark app-purchase .progress-bar-container .progress-bar {\n background-color: #343f4a; }\n.theme-gray app-purchase .progress-bar-container .progress-bar {\n background-color: #363a3e; }\n.theme-white app-purchase .progress-bar-container .progress-bar {\n background-color: #dcdcdc; }\n.theme-dark app-purchase .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #5cda9d; }\n.theme-gray app-purchase .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #47cf8d; }\n.theme-white app-purchase .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #46c172; }\napp-messages table tbody tr td:first-child span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap; }\n.theme-dark app-messages table tbody tr td:first-child .icon {\n background-color: #ff5252; }\n.theme-gray app-messages table tbody tr td:first-child .icon {\n background-color: #ff5252; }\n.theme-white app-messages table tbody tr td:first-child .icon {\n background-color: #ff5252; }\n.theme-dark app-typing-message .head .interlocutor {\n color: #4db1ff; }\n.theme-gray app-typing-message .head .interlocutor {\n color: #42a5f5; }\n.theme-white app-typing-message .head .interlocutor {\n color: #2c95f1; }\n.theme-dark app-typing-message .messages-content .messages-list div.date {\n color: #556576; }\n.theme-gray app-typing-message .messages-content .messages-list div.date {\n color: #565c62; }\n.theme-white app-typing-message .messages-content .messages-list div.date {\n color: #a0a5ab; }\n.theme-dark app-typing-message .messages-content .messages-list div.my {\n background-color: #2a3544; }\n.theme-gray app-typing-message .messages-content .messages-list div.my {\n background-color: #30363c; }\n.theme-white app-typing-message .messages-content .messages-list div.my {\n background-color: #fff; }\napp-typing-message .messages-content .messages-list div.my:before {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: -1.1rem;\n border: 1.2rem solid transparent; }\n.theme-dark app-typing-message .messages-content .messages-list div.my:before {\n border-top-color: #2a3544; }\n.theme-gray app-typing-message .messages-content .messages-list div.my:before {\n border-top-color: #30363c; }\n.theme-white app-typing-message .messages-content .messages-list div.my:before {\n border-top-color: #fff; }\n.theme-dark app-typing-message .messages-content .messages-list div.buddy {\n background-color: #18202a; }\n.theme-gray app-typing-message .messages-content .messages-list div.buddy {\n background-color: #25292d; }\n.theme-white app-typing-message .messages-content .messages-list div.buddy {\n background-color: #ededed; }\napp-typing-message .messages-content .messages-list div.buddy:after {\n content: \"\";\n display: block;\n position: absolute;\n right: -1.1rem;\n top: 0;\n border: 1.2rem solid transparent; }\n.theme-dark app-typing-message .messages-content .messages-list div.buddy:after {\n border-top-color: #18202a; }\n.theme-gray app-typing-message .messages-content .messages-list div.buddy:after {\n border-top-color: #25292d; }\n.theme-white app-typing-message .messages-content .messages-list div.buddy:after {\n border-top-color: #ededed; }\n.theme-dark app-staking .chart-header .general .label {\n color: #556576; }\n.theme-gray app-staking .chart-header .general .label {\n color: #565c62; }\n.theme-white app-staking .chart-header .general .label {\n color: #a0a5ab; }\n.theme-dark app-staking .chart-header .general .options {\n color: #e0e0e0; }\n.theme-gray app-staking .chart-header .general .options {\n color: #e0e0e0; }\n.theme-white app-staking .chart-header .general .options {\n color: #43454b; }\napp-staking .chart-header .selected {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n flex-grow: 1;\n font-size: 1.6rem; }\n.theme-dark app-staking .chart-options .title {\n color: #556576; }\n.theme-gray app-staking .chart-options .title {\n color: #565c62; }\n.theme-white app-staking .chart-options .title {\n color: #a0a5ab; }\n.theme-dark app-staking .chart-options .options button {\n color: #e0e0e0;\n background-color: #2b3644; }\n.theme-gray app-staking .chart-options .options button {\n color: #e0e0e0;\n background-color: #292d31; }\n.theme-white app-staking .chart-options .options button {\n color: #43454b;\n background-color: #e0e0e0; }\n.theme-dark app-staking .chart-options .options button.active {\n background-color: #556576; }\n.theme-gray app-staking .chart-options .options button.active {\n background-color: #515960; }\n.theme-white app-staking .chart-options .options button.active {\n background-color: #ffffff; }\n.input-block-alias {\n position: relative; }\n.input-block-alias .alias-dropdown {\n position: absolute;\n top: 6.5rem;\n max-height: 10rem;\n overflow: auto;\n width: 100%; }\n.theme-dark .input-block-alias .alias-dropdown {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray .input-block-alias .alias-dropdown {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white .input-block-alias .alias-dropdown {\n background-color: #e6e6e6;\n color: #43454b; }\n.input-block-alias .alias-dropdown div {\n font-size: 1.4rem;\n padding: 1rem; }\n.theme-dark .input-block-alias .alias-dropdown div:hover {\n background-color: rgba(58, 69, 85, 0.5); }\n.theme-gray .input-block-alias .alias-dropdown div:hover {\n background-color: rgba(58, 62, 66, 0.5); }\n.theme-white .input-block-alias .alias-dropdown div:hover {\n background-color: rgba(240, 240, 240, 0.5); }\n.head {\n display: flex;\n align-items: flex-end;\n justify-content: space-between;\n font-size: 1.3rem;\n padding: 0 3rem;\n width: 100%;\n height: 3rem; }\n.theme-dark .head {\n color: #4db1ff; }\n.theme-gray .head {\n color: #42a5f5; }\n.theme-white .head {\n color: #2c95f1; }\n.head .breadcrumbs > span:not(:last-child), .head .breadcrumbs a:not(:last-child) {\n position: relative;\n cursor: pointer;\n margin-right: 20px;\n outline-style: none; }\n.head .breadcrumbs > span:not(:last-child):after, .head .breadcrumbs a:not(:last-child):after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0.5rem;\n right: -1.5rem;\n width: 0.9rem;\n height: 0.9rem;\n -webkit-mask: url('arrow-right.svg') no-repeat center;\n mask: url('arrow-right.svg') no-repeat center;\n -webkit-mask-size: cover;\n mask-size: cover; }\n.theme-dark .head .breadcrumbs > span:not(:last-child):after, .theme-dark .head .breadcrumbs a:not(:last-child):after {\n background-color: #4db1ff; }\n.theme-gray .head .breadcrumbs > span:not(:last-child):after, .theme-gray .head .breadcrumbs a:not(:last-child):after {\n background-color: #42a5f5; }\n.theme-white .head .breadcrumbs > span:not(:last-child):after, .theme-white .head .breadcrumbs a:not(:last-child):after {\n background-color: #2c95f1; }\n.head .back-btn {\n display: flex;\n align-items: center;\n background-color: transparent;\n color: #4db1ff;\n font-size: inherit;\n font-weight: 400;\n line-height: 1.3rem;\n padding: 0;\n height: auto; }\n.head .back-btn .icon {\n margin-right: 0.7rem;\n -webkit-mask: url('back.svg') no-repeat center;\n mask: url('back.svg') no-repeat center;\n width: 0.9rem;\n height: 0.9rem; }\n.theme-dark .head .back-btn .icon {\n background-color: #4db1ff; }\n.theme-gray .head .back-btn .icon {\n background-color: #42a5f5; }\n.theme-white .head .back-btn .icon {\n background-color: #2c95f1; }\n.scrolled-content::-webkit-scrollbar {\n background-color: transparent;\n cursor: default;\n width: 1rem;\n height: 1rem; }\n.scrolled-content::-webkit-scrollbar-track {\n background: transparent; }\n.scrolled-content::-webkit-scrollbar-thumb {\n background-color: #556576;\n background-clip: padding-box;\n border: 0.25rem solid transparent;\n border-radius: 0.5rem; }\n.scrolled-content::-webkit-scrollbar-thumb:hover {\n background-color: #556576; }\ntable {\n font-size: 1.3rem;\n width: 100%; }\ntable thead {\n text-align: left; }\n.theme-dark table thead {\n color: #556576; }\n.theme-gray table thead {\n color: #565c62; }\n.theme-white table thead {\n color: #a0a5ab; }\ntable thead tr {\n height: 4rem; }\ntable thead tr th {\n padding: 1rem;\n vertical-align: bottom; }\ntable thead tr th:first-child {\n padding-left: 3rem; }\ntable thead tr th:last-child {\n padding-right: 3rem; }\ntable tbody {\n text-align: left; }\n.theme-dark table tbody {\n color: #e0e0e0; }\n.theme-gray table tbody {\n color: #e0e0e0; }\n.theme-white table tbody {\n color: #43454b; }\ntable tbody tr {\n height: 3.5rem; }\n.theme-dark table tbody tr:nth-child(odd) {\n background-color: #18202a; }\n.theme-gray table tbody tr:nth-child(odd) {\n background-color: #25292d; }\n.theme-white table tbody tr:nth-child(odd) {\n background-color: #ffffff; }\ntable tbody tr td {\n line-height: 1.7rem;\n padding: 0 1rem;\n vertical-align: middle;\n white-space: nowrap;\n max-width: 20rem; }\ntable tbody tr td:first-child {\n padding-left: 3rem; }\ntable tbody tr td:last-child {\n padding-right: 3rem; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-Light.ttf');\n font-weight: 300; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-Regular.ttf');\n font-weight: 400; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-SemiBold.ttf');\n font-weight: 600; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-Bold.ttf');\n font-weight: 700; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-ExtraBold.ttf');\n font-weight: 800; }\nhtml {\n font-family: OpenSans, sans-serif;\n font-size: 10px; }\nbody {\n font-family: OpenSans, sans-serif;\n font-size: 1.6rem;\n width: 100vw;\n height: 100vh; }\nbody.theme-dark {\n background: #131921 url('background-dark.png') no-repeat center;\n background-size: cover; }\nbody.theme-gray {\n background: #101417 url('background-gray.png') no-repeat center;\n background-size: cover; }\nbody.theme-white {\n background: #eeeeee url('background-white.png') no-repeat center;\n background-size: cover; }\nbody app-root {\n display: flex;\n width: 100%;\n height: 100%; }\n.update-tooltip .tooltip-inner .icon {\n -webkit-mask: url('update-alert.svg') no-repeat center;\n mask: url('update-alert.svg') no-repeat center; }\n\r\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9FOlxcWmFub1xcY2hlY2tcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxiYXNlXFxfbWl4aW5zLnNjc3MiLCJzcmMvc3R5bGVzLnNjc3MiLCJub2RlX21vZHVsZXMvQG5nLXNlbGVjdC9uZy1zZWxlY3QvdGhlbWVzL2RlZmF1bHQudGhlbWUuY3NzIiwic3JjL0U6XFxaYW5vXFxjaGVja1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXGJhc2VcXF9udWxsLnNjc3MiLCJzcmMvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcYmFzZVxcX2Jhc2Uuc2NzcyIsInNyYy9FOlxcWmFub1xcY2hlY2tcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxiYXNlXFxfdGhlbWUuc2NzcyIsInNyYy9FOlxcWmFub1xcY2hlY2tcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxsYXlvdXRcXF9tYWluLnNjc3MiLCJzcmMvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcbGF5b3V0XFxfc2lkZWJhci5zY3NzIiwic3JjL0U6XFxaYW5vXFxjaGVja1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXGxheW91dFxcX3dhbGxldC5zY3NzIiwic3JjL0U6XFxaYW5vXFxjaGVja1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXG1vZHVsZXNcXF9oZWFkLnNjc3MiLCJzcmMvRTpcXFphbm9cXGNoZWNrXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcbW9kdWxlc1xcX3Njcm9sbC5zY3NzIiwic3JjL0U6XFxaYW5vXFxjaGVja1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXG1vZHVsZXNcXF90YWJsZS5zY3NzIiwic3JjL0U6XFxaYW5vXFxjaGVja1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxzdHlsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4RUE7O0NDNUVDO0FDRkQsaURBQWlELGVBQWUsQ0FBQyxpQ0FBaUM7QUFBQyx1REFBdUQsZUFBZTtBQUFDLDJEQUEyRCxRQUFRLENBQUMseUNBQXlDLENBQUMsc0JBQXNCO0FBQUMsaUVBQWlFLHlDQUF5QztBQUFDLGtFQUFrRSw0QkFBNEIsQ0FBQywyQkFBMkI7QUFBQywrREFBK0QseUJBQXlCLENBQUMsd0JBQXdCO0FBQUMseUVBQXlFLG9CQUFvQixDQUFDLDBFQUEwRTtBQUFDLG1EQUFtRCx3QkFBd0I7QUFBQyx5Q0FBeUMsWUFBWTtBQUFDLGdDQUFnQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsa0JBQWtCO0FBQUMsc0NBQXNDLG1DQUFtQztBQUFDLG9EQUFvRCxrQkFBa0IsQ0FBQyxpQkFBaUI7QUFBQyxnRUFBZ0Usa0JBQWtCLENBQUMsY0FBYztBQUFDLG9FQUFvRSxVQUFVO0FBQUMsaURBQWlELFdBQVc7QUFBQywrRUFBK0UsT0FBTyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0I7QUFBQywyRkFBMkYsa0JBQWtCLENBQUMsaUJBQWlCO0FBQUMsb0dBQW9HLHdCQUF3QixDQUFDLHdCQUF3QjtBQUFDLG9IQUFvSCxhQUFhO0FBQUMsdUVBQXVFLGVBQWUsQ0FBQyxnQkFBZ0I7QUFB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a0NoQyxjQ3hDMkIsRUFBQTtBTDBFN0I7SUluQ0UseUJDdUJnQztJRHRCaEMsY0NnQjJCLEVBQUE7QUxrQjdCO0lJbkNFLHlCQytFZ0M7SUQ5RWhDLGNDd0UyQixFQUFBO0FMdEM3QjtJSTVCSSx5QkN2Q3lCLEVBQUE7QUxtRTdCO0lJNUJJLHlCQ2lCeUIsRUFBQTtBTFc3QjtJSTVCSSx5QkN5RXlCLEVBQUE7QUw3QzdCO0lJckJJLHlCQzdDeUIsRUFBQTtBTGtFN0I7SUlyQkkseUJDV3lCLEVBQUE7QUxVN0I7SUlyQkkseUJDbUV5QixFQUFBO0FMOUM3QjtJSWJFLHlCQ2pEaUM7SURrRGpDLGNDOUQyQixFQUFBO0FMMEU3QjtJSWJFLHlCQ09pQztJRE5qQyxjQ04yQixFQUFBO0FMa0I3QjtJSWJFLHlCQytEaUM7SUQ5RGpDLGNDa0QyQixFQUFBO0FMdEM3QjtJSU5JLHlCQ3ZEMEIsRUFBQTtBTDZEOUI7SUlOSSx5QkNDMEIsRUFBQTtBTEs5QjtJSU5JLHlCQ3lEMEIsRUFBQTtBTG5EOUI7SUlDSSx5QkM3RDBCLEVBQUE7QUw0RDlCO0lJQ0kseUJDTDBCLEVBQUE7QUxJOUI7SUlDSSx5QkNtRDBCLEVBQUE7QUxwRDlCO0lJU0UseUJDcEVxQztJRHFFckMsY0NwRjJCLEVBQUE7QUwwRTdCO0lJU0UseUJDWnFDO0lEYXJDLGNDNUIyQixFQUFBO0FMa0I3QjtJSVNFLHlCQzRDcUM7SUQzQ3JDLGNDNEIyQixFQUFBO0FMdEM3QjtJSWdCSSx5QkMxRThCLEVBQUE7QUwwRGxDO0lJZ0JJLHlCQ2xCOEIsRUFBQTtBTEVsQztJSWdCSSx5QkNzQzhCLEVBQUE7QUx0RGxDO0lJdUJJLHlCQ2hGOEIsRUFBQTtBTHlEbEM7SUl1QkkseUJDeEI4QixFQUFBO0FMQ2xDO0lJdUJJLHlCQ2dDOEIsRUFBQTtBRDdIdEM7SUFtR0ksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUIsRUFBQTtBSi9CdkI7TUlrQ0UsNkJBQTZCO01BQzdCLDRCQzNGbUM7TUQ0Rm5DLGNDL0dvQixFQUFBO0FMMkV0QjtNSWtDRSw2QkFBNkI7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dEIzQixjQ3B3QmtCLEVBQUE7QUwyRXRCO0lJd3JCSSx5QkNwcUIyQjtJRHFxQjNCLGNDNXNCa0IsRUFBQTtBTG1CdEI7SUl3ckJJLHlCQzVtQjJCO0lENm1CM0IsY0NwcEJrQixFQUFBO0FEMHBCMUI7RUFHSSxXQUFXLEVBQUE7QUFIZjtJQU1NLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsZUFBZTtJQUNmLGNBQWMsRUFBQTtBSjNzQmhCO01JOHNCSSx5QkNyd0J5QjtNRHN3QnpCLGNDMXhCa0IsRUFBQTtBTDJFdEI7TUk4c0JJLHlCQzdzQnlCO01EOHNCekIsY0NsdUJrQixFQUFBO0FMbUJ0QjtNSThzQkkseUJDcnBCeUI7TURzcEJ6QixjQzFxQmtCLEVBQUE7QUQwcEIxQjtNQW9CUSxVQUFVLEVBQUE7QUFwQmxCO1FBdUJVLFNBQVMsRUFBQTtBQXZCbkI7SUE2Qk0sWUFBWSxFQUFBO0FKNXRCZDtNSSt0QkkseUJDdHhCeUIsRUFBQTtBTHVEN0I7TUkrdEJJLHlCQzl0QnlCLEVBQUE7QUxEN0I7TUkrdEJJLHlCQ3RxQnlCLEVBQUE7QURzb0JqQztNQXNDVSxpQkFBaUI7TUFDakIsYUFBYSxFQUFBO0FKdHVCbkI7UUl5dUJRLHlCQ2h5QnFCO1FEaXlCckIsY0NyekJjLEVBQUE7QUwyRXRCO1FJeXVCUSx5QkN4dUJxQjtRRHl1QnJCLGNDN3ZCYyxFQUFBO0FMbUJ0QjtRSXl1QlEseUJDaHJCcUI7UURpckJyQixjQ3JzQmMsRUFBQTtBTHJDdEI7UUlndkJVLHVDQ3R5QjZCO1FEdXlCN0IsY0M1ekJZLEVBQUE7QUwyRXRCO1FJZ3ZCVSx1Q0M5dUI2QjtRRCt1QjdCLGNDcHdCWSxFQUFBO0FMbUJ0QjtRSWd2QlUsMENDdHJCZ0M7UUR1ckJoQyxjQzVzQlksRUFBQTtBTHJDdEI7UUl3dkJVLHVDQzd5QmdDO1FEOHlCaEMsY0NwMEJZLEVBQUE7QUwyRXRCO1FJd3ZCVSx1Q0NydkJnQztRRHN2QmhDLGNDNXdCWSxFQUFBO0FMbUJ0QjtRSXd2QlUsMENDN3JCbUM7UUQ4ckJuQyxjQ3B0QlksRUFBQTtBRDBwQjFCO01BZ0VVLDZCQUE2QjtNQUM3QixlQUFlO01BQ2YsV0FBVztNQUNYLFlBQVksRUFBQTtBQW5FdEI7TUF1RVUsdUJBQXVCLEVBQUE7QUF2RWpDO01BMkVVLHlCQUF5QjtNQUN6Qiw0QkFBNEI7TUFDNUIsaUNBQWlDO01BQ2pDLHFCQUFxQixFQUFBO0FBOUUvQjtNQWtGVSx5QkFBeUIsRUFBQTtBSmp4Qi9CO0VJNnhCRSxzQ0MxekIwRDtFRDJ6QjFELGNDejJCb0IsRUFBQTtBTDJFdEI7RUk2eEJFLHNDQ2x3QjBEO0VEbXdCMUQsY0NqekJvQixFQUFBO0FMbUJ0QjtFSTZ4QkUsdUNDMXNCMkQ7RUQyc0IzRCxjQ3p2Qm9CLEVBQUE7QUxyQ3RCO0VJc3lCTSx5QkMzMkJlLEVBQUE7QUxxRXJCO0VJc3lCTSx5QkNuekJlLEVBQUE7QUxhckI7RUlzeUJNLHlCQzN2QmUsRUFBQTtBTDNDckI7RUk2eUJNLHlCQ3AzQmlCLEVBQUE7QUx1RXZCO0VJNnlCTSx5QkM1ekJpQixFQUFBO0FMZXZCO0VJNnlCTSx5QkNwd0JpQixFQUFBO0FMekN2QjtFSW96Qk0seUJDNTNCZ0IsRUFBQTtBTHdFdEI7RUlvekJNLHlCQ3AwQmdCLEVBQUE7QUxnQnRCO0VJb3pCTSx5QkM1d0JnQixFQUFBO0FMeEN0QjtFSTR6QkkseUJDcDRCa0I7RURxNEJsQixjQ3Y0QnlCLEVBQUE7QUwwRTdCO0VJNHpCSSx5QkM1MEJrQjtFRDYwQmxCLGNDLzBCeUIsRUFBQTtBTGtCN0I7RUk0ekJJLHlCQ3B4QmtCO0VEcXhCbEIsY0N2eEJ5QixFQUFBO0FMdEM3QjtFSXMwQk0seUJDbDJCbUIsRUFBQTtBTDRCekI7RUlzMEJNLHlCQzF5Qm1CLEVBQUE7QUw1QnpCO0VJczBCTSx5QkNsdkJtQixFQUFBO0FMcEZ6QjtFSWsxQkUsZ0NDMTRCbUMsRUFBQTtBTHdEckM7RUlrMUJFLGdDQ2wxQm1DLEVBQUE7QUxBckM7RUlrMUJFLGdDQzF4Qm1DLEVBQUE7QUx4RHJDO0VJNDFCUSxjQ3I2QmtCLEVBQUE7QUx5RTFCO0VJNDFCUSxjQzcyQmtCLEVBQUE7QUxpQjFCO0VJNDFCUSxjQ3J6QmtCLEVBQUE7QUx2QzFCO0VJbTJCUSxjQzk2QmMsRUFBQTtBTDJFdEI7RUltMkJRLGNDdDNCYyxFQUFBO0FMbUJ0QjtFSW0yQlEsY0M5ekJjLEVBQUE7QUxyQ3RCO0VJMDJCUSxjQ2w3QmMsRUFBQTtBTHdFdEI7RUkwMkJRLGNDMTNCYyxFQUFBO0FMZ0J0QjtFSTAyQlEsY0NsMEJjLEVBQUE7QUx4Q3RCO0VJdTNCRSxjQ2w4Qm9CLEVBQUE7QUwyRXRCO0VJdTNCRSxjQzE0Qm9CLEVBQUE7QUxtQnRCO0VJdTNCRSxjQ2wxQm9CLEVBQUE7QUxyQ3RCO0VJNjNCSSx5QkNwNkIrQixFQUFBO0FMdUNuQztFSTYzQkkseUJDNTJCK0IsRUFBQTtBTGpCbkM7RUk2M0JJLHlCQ3B6QitCLEVBQUE7QUx6RW5DO0VJbTRCTSx5QkN6NkJpQyxFQUFBO0FMc0N2QztFSW00Qk0seUJDajNCaUMsRUFBQTtBTGxCdkM7RUltNEJNLHlCQ3p6QmlDLEVBQUE7QUwxRXZDO0VJKzRCRSxzQ0M1NkIwRDtFRDY2QjFELGNDMzlCb0IsRUFBQTtBTDJFdEI7RUkrNEJFLHNDQ3AzQjBEO0VEcTNCMUQsY0NuNkJvQixFQUFBO0FMbUJ0QjtFSSs0QkUsdUNDNXpCMkQ7RUQ2ekIzRCxjQzMyQm9CLEVBQUE7QUN4SDFCO0VBQ0UsY0FBYztFQUNkLGFBQWE7RUFDYixnQkFBZ0IsRUFBQTtBQUhsQjtJQU1JLGtCQUFrQjtJQUNsQixhQUFhO0lBQ2IsZ0JBQWdCLEVBQUE7QU4yRWhCO01NeEVFLHVDREoyQztNQ0szQyxjREpvQixFQUFBO0FMMkV0QjtNTXhFRSx1Q0RvRDJDO01DbkQzQyxjRG9Eb0IsRUFBQTtBTG1CdEI7TU14RUUsMENENEc4QztNQzNHOUMsY0Q0R29CLEVBQUE7QUN4SDFCO01BZ0JNLGtCQUFrQjtNQUNsQixNQUFNO01BQ04sT0FBTyxFQUFBO0FOaUVUO0VNbkRNLGNEckJnQixFQUFBO0FMd0V0QjtFTW5ETSxjRG1DZ0IsRUFBQTtBTGdCdEI7RU1uRE0sY0QyRmdCLEVBQUE7QUx4Q3RCO0VNN0NRLHlCRDNCYyxFQUFBO0FMd0V0QjtFTTdDUSx5QkQ2QmMsRUFBQTtBTGdCdEI7RU03Q1EseUJEcUZjLEVBQUE7QUx4Q3RCO0VNaENFLHlCRHZCMkI7RUN3QjNCLGNENUNvQixFQUFBO0FMMkV0QjtFTWhDRSx5QkRpQzJCO0VDaEMzQixjRFlvQixFQUFBO0FMbUJ0QjtFTWhDRSx5QkR5RjJCO0VDeEYzQixjRG9Fb0IsRUFBQTtBTHJDdEI7RU1yQkUseUJEbEMyQixFQUFBO0FMdUQ3QjtFTXJCRSx5QkRzQjJCLEVBQUE7QUxEN0I7RU1yQkUseUJEOEUyQixFQUFBO0FDekVqQztFQUdJLFlBQVk7RUFDWixnQkFBZ0I7RUFDaEIsYUFBYTtFQUNiLDhCQUE4QjtFQUM5QixzQkFBc0IsRUFBQTtBTlN0QjtJTUpJLGNEckVzQixFQUFBO0FMeUUxQjtJTUpJLGNEYnNCLEVBQUE7QUxpQjFCO0lNSkksY0QyQ3NCLEVBQUE7QUx2QzFCO0lNS00sdUNEakQyQyxFQUFBO0FMNENqRDtJTUtNLHVDRE8yQyxFQUFBO0FMWmpEO0lNS00sMENEK0Q4QyxFQUFBO0FMcEVwRDtJTVdRLGNEcEZrQixFQUFBO0FMeUUxQjtJTVdRLGNENUJrQixFQUFBO0FMaUIxQjtJTVdRLGNENEJrQixFQUFBO0FMdkMxQjtJTWtCUSx5QkQxRmMsRUFBQTtBTHdFdEI7SU1rQlEseUJEbENjLEVBQUE7QUxnQnRCO0lNa0JRLHlCRHNCYyxFQUFBO0FMeEN0QjtJTXdCVSxjRGhHWSxFQUFBO0FMd0V0QjtJTXdCVSxjRHhDWSxFQUFBO0FMZ0J0QjtJTXdCVSxjRGdCWSxFQUFBO0FDUDFCO0VBQ0Usa0JBQWtCLEVBQUE7QU5sQ2hCO0VPaEZBLHlCRkEyQyxFQUFBO0FMZ0YzQztFT2hGQSx5QkZ3RDJDLEVBQUE7QUx3QjNDO0VPaEZBLHVCRmdIOEMsRUFBQTtBTGhDOUM7RU90RU0sY0ZMZ0IsRUFBQTtBTDJFdEI7RU90RU0sY0ZtRGdCLEVBQUE7QUxtQnRCO0VPdEVNLGNGMkdnQixFQUFBO0FMckN0QjtFTy9ETSxjRlRnQixFQUFBO0FMd0V0QjtFTy9ETSxjRitDZ0IsRUFBQTtBTGdCdEI7RU8vRE0sY0Z1R2dCLEVBQUE7QUx4Q3RCO0VPckRNLDZCQUE2QjtFQUM3QixjRnZCZ0IsRUFBQTtBTDJFdEI7RU9yRE0sNkJBQTZCO0VBQzdCLGNGaUNnQixFQUFBO0FMbUJ0QjtFT3JETSw2QkFBNkI7RUFDN0IsY0Z5RmdCLEVBQUE7QUxyQ3RCO0VPNUNVLGNGN0JnQixFQUFBO0FMeUUxQjtFTzVDVSxjRjJCZ0IsRUFBQTtBTGlCMUI7RU81Q1UsY0ZtRmdCLEVBQUE7QUx2QzFCO0VPckNVLHlCRm5DWSxFQUFBO0FMd0V0QjtFT3JDVSx5QkZxQlksRUFBQTtBTGdCdEI7RU9yQ1UseUJGNkVZLEVBQUE7QUx4Q3RCO0VPOUJVLHlCRnRDd0I7RUV1Q3hCLGNGN0NtQixFQUFBO0FMMEU3QjtFTzlCVSx5QkZrQndCO0VFakJ4QixjRldtQixFQUFBO0FMa0I3QjtFTzlCVSx5QkYwRXdCO0VFekV4QixjRm1FbUIsRUFBQTtBTHRDN0I7RU9wQlkseUJGbkJ1QixFQUFBO0FMdUNuQztFT3BCWSx5QkZxQ3VCLEVBQUE7QUxqQm5DO0VPcEJZLHlCRjZGdUIsRUFBQTtBTHpFbkM7RU9kYyx5QkYxRFEsRUFBQTtBTHdFdEI7RU9kYyx5QkZGUSxFQUFBO0FMZ0J0QjtFT2RjLHlCRnNEUSxFQUFBO0FMeEN0QjtFT0xVLGNGcEVnQixFQUFBO0FMeUUxQjtFT0xVLGNGWmdCLEVBQUE7QUxpQjFCO0VPTFUsY0Y0Q2dCLEVBQUE7QUx2QzFCO0VPR1EsdUNGdERxQztFRXVEckMsY0ZyRHFCLEVBQUE7QUxpRDdCO0VPR1EsdUNGRXFDO0VFRHJDLGNGR3FCLEVBQUE7QUxQN0I7RU9HUSx5QkYwRHFDO0VFekRyQyxjRjJEcUIsRUFBQTtBTC9EN0I7RU9ZWSxjRjVEcUIsRUFBQTtBTGdEakM7RU9ZWSxjRkpxQixFQUFBO0FMUmpDO0VPWVksY0ZvRHFCLEVBQUE7QUxoRWpDO0VPbUJZLHlCRmhFNEI7RUVpRTVCLGNGbkVzQixFQUFBO0FMK0NsQztFT21CWSx5QkZSNEI7RUVTNUIsY0ZYc0IsRUFBQTtBTFRsQztFT21CWSx5QkZnRDRCO0VFL0M1QixjRjZDc0IsRUFBQTtBTGpFbEM7RU8yQlkseUJGekV5QjtFRTBFekIsY0Z2R1UsRUFBQTtBTDJFdEI7RU8yQlkseUJGakJ5QjtFRWtCekIsY0YvQ1UsRUFBQTtBTG1CdEI7RU8yQlkseUJGdUN5QjtFRXRDekIsY0ZTVSxFQUFBO0FMckN0QjtFT21DWSxjRm5GcUIsRUFBQTtBTGdEakM7RU9tQ1ksY0YzQnFCLEVBQUE7QUxSakM7RU9tQ1ksY0Y2QnFCLEVBQUE7QUxoRWpDO0VPNENRLHVDRjlGMEMsRUFBQTtBTGtEbEQ7RU80Q1EsdUNGdEMwQyxFQUFBO0FMTmxEO0VPNENRLDBDRmtCNkMsRUFBQTtBTDlEckQ7RU9xREksb0VBQTJGLEVBQUE7QVByRC9GO0VPcURJLG9FQUEyRixFQUFBO0FQckQvRjtFT3FESSxrRUFBMkYsRUFBQTtBUHJEL0Y7RU82REUsbUNGNUl5QixFQUFBO0FMK0UzQjtFTzZERSxtQ0ZwRnlCLEVBQUE7QUx1QjNCO0VPNkRFLG1DRjVCeUIsRUFBQTtBTGpDM0I7RU9xRU0sY0ZoSmdCLEVBQUE7QUwyRXRCO0VPcUVNLGNGeEZnQixFQUFBO0FMbUJ0QjtFT3FFTSxjRmhDZ0IsRUFBQTtBTHJDdEI7RU8yRVEseUJGbkpjLEVBQUE7QUx3RXRCO0VPMkVRLHlCRjNGYyxFQUFBO0FMZ0J0QjtFTzJFUSx5QkZuQ2MsRUFBQTtBTHhDdEI7RU9xRlEsa0RBQTBEO0VBQzFELHlCQUE2QyxFQUFBO0FQdEZyRDtFT3FGUSxrREFBMEQ7RUFDMUQseUJBQTZDLEVBQUE7QVB0RnJEO0VPcUZRLG9DQUEwRDtFQUMxRCx5QkFBNkMsRUFBQTtBUHRGckQ7RU80RlUsb0NBQW1FLEVBQUE7QVA1RjdFO0VPNEZVLG9DQUFtRSxFQUFBO0FQNUY3RTtFTzRGVSxvQ0FBbUUsRUFBQTtBUDVGN0U7RU91R0UsY0ZoTHdCLEVBQUE7QUx5RTFCO0VPdUdFLGNGeEh3QixFQUFBO0FMaUIxQjtFT3VHRSxjRmhFd0IsRUFBQTtBTHZDMUI7RU8rR00seUJGNUxlLEVBQUE7QUw2RXJCO0VPK0dNLHlCRnBJZSxFQUFBO0FMcUJyQjtFTytHTSx5QkY1RWUsRUFBQTtBTG5DckI7RU9zSE0seUJGcE1jLEVBQUE7QUw4RXBCO0VPc0hNLHlCRjVJYyxFQUFBO0FMc0JwQjtFT3NITSx5QkZwRmMsRUFBQTtBTGxDcEI7RU9pSVUseUJGeEt5QixFQUFBO0FMdUNuQztFT2lJVSx5QkZoSHlCLEVBQUE7QUxqQm5DO0VPaUlVLHlCRnhEeUIsRUFBQTtBTHpFbkM7RU91SVkseUJGN0syQixFQUFBO0FMc0N2QztFT3VJWSx5QkZySDJCLEVBQUE7QUxsQnZDO0VPdUlZLHlCRjdEMkIsRUFBQTtBTDFFdkM7RU9nSlEseUJGdEwrQixFQUFBO0FMc0N2QztFT2dKUSx5QkY5SCtCLEVBQUE7QUxsQnZDO0VPZ0pRLHlCRnRFK0IsRUFBQTtBTDFFdkM7RU8ySk0sY0ZuT2dCLEVBQUE7QUx3RXRCO0VPMkpNLGNGM0tnQixFQUFBO0FMZ0J0QjtFTzJKTSxjRm5IZ0IsRUFBQTtBTHhDdEI7RU9rS00sY0Z4T2tCLEVBQUE7QUxzRXhCO0VPa0tNLGNGaExrQixFQUFBO0FMY3hCO0VPa0tNLGNGeEhrQixFQUFBO0FMMUN4QjtFT3lLTSxjRjlPZSxFQUFBO0FMcUVyQjtFT3lLTSxjRnRMZSxFQUFBO0FMYXJCO0VPeUtNLGNGOUhlLEVBQUE7QUwzQ3JCO0VPZ0xNLGNGdFBrQixFQUFBO0FMc0V4QjtFT2dMTSxjRjlMa0IsRUFBQTtBTGN4QjtFT2dMTSxjRnRJa0IsRUFBQTtBTDFDeEI7RU95TFEseUJGalFjLEVBQUE7QUx3RXRCO0VPeUxRLHlCRnpNYyxFQUFBO0FMZ0J0QjtFT3lMUSx5QkZqSmMsRUFBQTtBTHhDdEI7RU9nTVEseUJGdFFnQixFQUFBO0FMc0V4QjtFT2dNUSx5QkY5TWdCLEVBQUE7QUxjeEI7RU9nTVEseUJGdEpnQixFQUFBO0FMMUN4QjtFT3VNUSx5QkY1UWEsRUFBQTtBTHFFckI7RU91TVEseUJGcE5hLEVBQUE7QUxhckI7RU91TVEseUJGNUphLEVBQUE7QUwzQ3JCO0VPOE1RLHlCRnBSZ0IsRUFBQTtBTHNFeEI7RU84TVEseUJGNU5nQixFQUFBO0FMY3hCO0VPOE1RLHlCRnBLZ0IsRUFBQTtBTDFDeEI7RVFoRkEsY0hLc0IsRUFBQTtBTDJFdEI7RVFoRkEsY0g2RHNCLEVBQUE7QUxtQnRCO0VRaEZBLGNIcUhzQixFQUFBO0FMckN0QjtFUXhFSSxjSEhrQixFQUFBO0FMMkV0QjtFUXhFSSxjSHFEa0IsRUFBQTtBTG1CdEI7RVF4RUksY0g2R2tCLEVBQUE7QUxyQ3RCO0VRbEVNLHlCSE5nQixFQUFBO0FMd0V0QjtFUWxFTSx5QkhrRGdCLEVBQUE7QUxnQnRCO0VRbEVNLHlCSDBHZ0IsRUFBQTtBTHhDdEI7RVF4RE0seUJIaEJnQixFQUFBO0FMd0V0QjtFUXhETSx5Qkh3Q2dCLEVBQUE7QUxnQnRCO0VReERNLHlCSGdHZ0IsRUFBQTtBTHhDdEI7RVEvQ0UsY0h6Qm9CLEVBQUE7QUx3RXRCO0VRL0NFLGNIK0JvQixFQUFBO0FMZ0J0QjtFUS9DRSxjSHVGb0IsRUFBQTtBTHhDdEI7RVF6Q0kseUJIL0JrQixFQUFBO0FMd0V0QjtFUXpDSSx5Qkh5QmtCLEVBQUE7QUxnQnRCO0VRekNJLHlCSGlGa0IsRUFBQTtBTHhDdEI7RVE3Qk0sdUNIZjJDLEVBQUE7QUw0Q2pEO0VRN0JNLHVDSHlDMkMsRUFBQTtBTFpqRDtFUTdCTSwwQ0hpRzhDLEVBQUE7QUxwRXBEO0VRdkJRLHlCSGpEYyxFQUFBO0FMd0V0QjtFUXZCUSx5QkhPYyxFQUFBO0FMZ0J0QjtFUXZCUSx5QkgrRGMsRUFBQTtBTHhDdEI7RVFoQlEseUJIN0JnQztFRzhCaEMsY0hoQzBCLEVBQUE7QUwrQ2xDO0VRaEJRLHlCSDJCZ0M7RUcxQmhDLGNId0IwQixFQUFBO0FMVGxDO0VRaEJRLHlCSG1GZ0M7RUdsRmhDLGNIZ0YwQixFQUFBO0FMakVsQztFUVJRLHVDSHBFcUMsRUFBQTtBTDRFN0M7RVFSUSx1Q0hacUMsRUFBQTtBTG9CN0M7RVFSUSwwQ0g0Q3dDLEVBQUE7QUxwQ2hEO0VRRFEsdUNIMUNzQyxFQUFBO0FMMkM5QztFUURRLHVDSGNzQyxFQUFBO0FMYjlDO0VRRFEseUJIc0V3QixFQUFBO0FMckVoQztFUVFJLHVDSHBGeUMsRUFBQTtBTDRFN0M7RVFRSSx1Q0g1QnlDLEVBQUE7QUxvQjdDO0VRUUksMENINEI0QyxFQUFBO0FMcENoRDtFUXFCSSxjSGhHa0IsRUFBQTtBTDJFdEI7RVFxQkksY0h4Q2tCLEVBQUE7QUxtQnRCO0VRcUJJLGNIZ0JrQixFQUFBO0FMckN0QjtFUTJCTSx5QkhuR2dCLEVBQUE7QUx3RXRCO0VRMkJNLHlCSDNDZ0IsRUFBQTtBTGdCdEI7RVEyQk0seUJIYWdCLEVBQUE7QUx4Q3RCO0VRbUNJLDRCSDNGaUMsRUFBQTtBTHdEckM7RVFtQ0ksNEJIbkNpQyxFQUFBO0FMQXJDO0VRbUNJLDRCSHFCaUMsRUFBQTtBTHhEckM7RVE4Q0UseUJIdEhvQixFQUFBO0FMd0V0QjtFUThDRSx5Qkg5RG9CLEVBQUE7QUxnQnRCO0VROENFLHlCSE5vQixFQUFBO0FMeEN0QjtFUThEUSxjSHZJa0IsRUFBQTtBTHlFMUI7RVE4RFEsY0gvRWtCLEVBQUE7QUxpQjFCO0VROERRLGNIdkJrQixFQUFBO0FMdkMxQjtFUXFFUSx5QkgvR3FCLEVBQUE7QUwwQzdCO0VRcUVRLHlCSHZEcUIsRUFBQTtBTGQ3QjtFUXFFUSx5QkhDcUIsRUFBQTtBTHRFN0I7RVE0RVEseUJIdEhxQixFQUFBO0FMMEM3QjtFUTRFUSx5Qkg5RHFCLEVBQUE7QUxkN0I7RVE0RVEseUJITnFCLEVBQUE7QUx0RTdCO0VRbUZRLDZCQUE2QixFQUFBO0FSbkZyQztFUW1GUSw2QkFBNkIsRUFBQTtBUm5GckM7RVFtRlEsNkJBQTZCLEVBQUE7QVJuRnJDO0VRMEZRLDZCQUE2QixFQUFBO0FSMUZyQztFUTBGUSw2QkFBNkIsRUFBQTtBUjFGckM7RVEwRlEsNkJBQTZCLEVBQUE7QVIxRnJDO0VRbUdVLHlCSDFJeUIsRUFBQTtBTHVDbkM7RVFtR1UseUJIbEZ5QixFQUFBO0FMakJuQztFUW1HVSx5QkgxQnlCLEVBQUE7QUx6RW5DO0VReUdZLHlCSC9JMkIsRUFBQTtBTHNDdkM7RVF5R1kseUJIdkYyQixFQUFBO0FMbEJ2QztFUXlHWSx5QkgvQjJCLEVBQUE7QUwxRXZDO0VRa0hRLHlCSHhMZ0IsRUFBQTtBTHNFeEI7RVFrSFEseUJIaElnQixFQUFBO0FMY3hCO0VRa0hRLHlCSHhFZ0IsRUFBQTtBTDFDeEI7RVEySFUseUJIaE1XLEVBQUE7QUxxRXJCO0VRMkhVLHlCSHhJVyxFQUFBO0FMYXJCO0VRMkhVLHlCSGhGVyxFQUFBO0FMM0NyQjtFUXFJVSx5Qkg1TWEsRUFBQTtBTHVFdkI7RVFxSVUseUJIcEphLEVBQUE7QUxldkI7RVFxSVUseUJINUZhLEVBQUE7QUx6Q3ZCO0VReUpRLHlCSDlOYSxFQUFBO0FMcUVyQjtFUXlKUSx5Qkh0S2EsRUFBQTtBTGFyQjtFUXlKUSx5Qkg5R2EsRUFBQTtBTDNDckI7RVFnS1EseUJIeE9jLEVBQUE7QUx3RXRCO0VRZ0tRLHlCSGhMYyxFQUFBO0FMZ0J0QjtFUWdLUSx5Qkh4SGMsRUFBQTtBTHhDdEI7RVErS0ksY0gxUGtCLEVBQUE7QUwyRXRCO0VRK0tJLGNIbE1rQixFQUFBO0FMbUJ0QjtFUStLSSxjSDFJa0IsRUFBQTtBTHJDdEI7RVFxTE0seUJIN1BnQixFQUFBO0FMd0V0QjtFUXFMTSx5QkhyTWdCLEVBQUE7QUxnQnRCO0VRcUxNLHlCSDdJZ0IsRUFBQTtBTHhDdEI7RVE2TEksY0hyUWtCLEVBQUE7QUx3RXRCO0VRNkxJLGNIN01rQixFQUFBO0FMZ0J0QjtFUTZMSSxjSHJKa0IsRUFBQTtBTHhDdEI7RVFvTUksNEJINVBpQyxFQUFBO0FMd0RyQztFUW9NSSw0QkhwTWlDLEVBQUE7QUxBckM7RVFvTUksNEJINUlpQyxFQUFBO0FMeERyQztFUThNSSx5QkhyUCtCLEVBQUE7QUx1Q25DO0VROE1JLHlCSDdMK0IsRUFBQTtBTGpCbkM7RVE4TUkseUJIckkrQixFQUFBO0FMekVuQztFUW9OTSx5QkgxUGlDLEVBQUE7QUxzQ3ZDO0VRb05NLHlCSGxNaUMsRUFBQTtBTGxCdkM7RVFvTk0seUJIMUlpQyxFQUFBO0FHaUozQztFUjdTRSxnQkFBZ0I7RUFDaEIsdUJBQXVCO0VBQ3ZCLG1CQUFtQixFQUFBO0FBZ0ZqQjtFUTRPVSx5QkhqVFcsRUFBQTtBTHFFckI7RVE0T1UseUJIelBXLEVBQUE7QUxhckI7RVE0T1UseUJIak1XLEVBQUE7QUwzQ3JCO0VRNFBJLGNIcFVrQixFQUFBO0FMd0V0QjtFUTRQSSxjSDVRa0IsRUFBQTtBTGdCdEI7RVE0UEksY0hwTmtCLEVBQUE7QUx4Q3RCO0VRMFFRLGNIblZrQixFQUFBO0FMeUUxQjtFUTBRUSxjSDNSa0IsRUFBQTtBTGlCMUI7RVEwUVEsY0huT2tCLEVBQUE7QUx2QzFCO0VRaVJRLHlCSDFUeUIsRUFBQTtBTHlDakM7RVFpUlEseUJIbFF5QixFQUFBO0FMZmpDO0VRaVJRLHNCSDFNc0IsRUFBQTtBRzhLbEM7RVIvUEUsV0FEMEQ7RUFFMUQsY0FGNEI7RUFHNUIsa0JBSDRDO0VRa1NsQyxNQUFNO0VBQ04sYUFBYTtFQUNiLGdDQUFnQyxFQUFBO0FSelJ4QztJUTRSVSx5QkhyVXVCLEVBQUE7QUx5Q2pDO0lRNFJVLHlCSDdRdUIsRUFBQTtBTGZqQztJUTRSVSxzQkhyTm9CLEVBQUE7QUx2RTlCO0VRb1NRLHlCSDVVNEIsRUFBQTtBTHdDcEM7RVFvU1EseUJIcFI0QixFQUFBO0FMaEJwQztFUW9TUSx5Qkg1TjRCLEVBQUE7QUc2S3hDO0VSL1BFLFdBRDBEO0VBRTFELGNBRjRCO0VBRzVCLGtCQUg0QztFUXFUbEMsY0FBYztFQUNkLE1BQU07RUFDTixnQ0FBZ0MsRUFBQTtBUjVTeEM7SVErU1UseUJIdlYwQixFQUFBO0FMd0NwQztJUStTVSx5QkgvUjBCLEVBQUE7QUxoQnBDO0lRK1NVLHlCSHZPMEIsRUFBQTtBTHhFcEM7RVFpVU0sY0gxWW9CLEVBQUE7QUx5RTFCO0VRaVVNLGNIbFZvQixFQUFBO0FMaUIxQjtFUWlVTSxjSDFSb0IsRUFBQTtBTHZDMUI7RVF3VU0sY0huWmdCLEVBQUE7QUwyRXRCO0VRd1VNLGNIM1ZnQixFQUFBO0FMbUJ0QjtFUXdVTSxjSG5TZ0IsRUFBQTtBR21SMUI7RUFzQk0sYUFBYTtFQUNiLG1CQUFtQjtFQUNuQix5QkFBeUI7RUFDekIsWUFBWTtFQUNaLGlCQUFpQixFQUFBO0FSbFZuQjtFUTJWSSxjSHBhc0IsRUFBQTtBTHlFMUI7RVEyVkksY0g1V3NCLEVBQUE7QUxpQjFCO0VRMlZJLGNIcFRzQixFQUFBO0FMdkMxQjtFUW9XTSxjSC9hZ0I7RUdnYmhCLHlCSDFZOEIsRUFBQTtBTHFDcEM7RVFvV00sY0h2WGdCO0VHd1hoQix5QkhsVjhCLEVBQUE7QUxuQnBDO0VRb1dNLGNIL1RnQjtFR2dVaEIseUJIMVI4QixFQUFBO0FMM0VwQztFUTJXUSx5QkgvWXVCLEVBQUE7QUxvQy9CO0VRMldRLHlCSHZWdUIsRUFBQTtBTHBCL0I7RVEyV1EseUJIL1J1QixFQUFBO0FHdVNuQztFQUNFLGtCQUFrQixFQUFBO0FBRHBCO0lBSUksa0JBQWtCO0lBQ2xCLFdBQVc7SUFDWCxpQkFBaUI7SUFDakIsY0FBYztJQUNkLFdBQVcsRUFBQTtBUjNYWDtNUThYRSx5QkhyYjJCO01Hc2IzQixjSDFjb0IsRUFBQTtBTDJFdEI7TVE4WEUseUJIN1gyQjtNRzhYM0IsY0hsWm9CLEVBQUE7QUxtQnRCO01ROFhFLHlCSHJVMkI7TUdzVTNCLGNIMVZvQixFQUFBO0FHOFUxQjtNQWdCTSxpQkFBaUI7TUFDakIsYUFBYSxFQUFBO0FScFlmO1FRd1lNLHVDSDliaUMsRUFBQTtBTHNEdkM7UVF3WU0sdUNIdFlpQyxFQUFBO0FMRnZDO1FRd1lNLDBDSDlVb0MsRUFBQTtBSTdJOUM7RUFDRSxhQUFhO0VBQ2IscUJBQXFCO0VBQ3JCLDhCQUE4QjtFQUM5QixpQkFBaUI7RUFDakIsZUFBZTtFQUNmLFdBQVc7RUFDWCxZQUFZLEVBQUE7QVQ0RVY7SVN6RUEsY0pDc0IsRUFBQTtBTHdFdEI7SVN6RUEsY0p5RHNCLEVBQUE7QUxnQnRCO0lTekVBLGNKaUhzQixFQUFBO0FJM0gxQjtJQWtCUSxrQkFBa0I7SUFDbEIsZUFBZTtJQUNmLGtCQUFrQjtJQUNsQixtQkFBbUIsRUFBQTtBQXJCM0I7TVR5RUUsV0FEMEQ7TUFFMUQsY0FGNEI7TUFHNUIsa0JBSDRDO01TOUNwQyxXQUFXO01BQ1gsY0FBYztNQUNkLGFBQWE7TUFDYixjQUFjO01BQ2QscURBQTZEO2NBQTdELDZDQUE2RDtNQUM3RCx3QkFBZ0I7Y0FBaEIsZ0JBQWdCLEVBQUE7QVRvRHRCO1FTakRRLHlCSnZCYyxFQUFBO0FMd0V0QjtRU2pEUSx5QkppQ2MsRUFBQTtBTGdCdEI7UVNqRFEseUJKeUZjLEVBQUE7QUkzSDFCO0lBMENJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsNkJBQTZCO0lBQzdCLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsZ0JBQWdCO0lBQ2hCLG1CQUFtQjtJQUNuQixVQUFVO0lBQ1YsWUFBWSxFQUFBO0FBbERoQjtNQXFETSxvQkFBb0I7TUFDcEIsOENBQXNEO2NBQXRELHNDQUFzRDtNQUN0RCxhQUFhO01BQ2IsY0FBYyxFQUFBO0FUMkJoQjtRU3hCSSx5QkpoRGtCLEVBQUE7QUx3RXRCO1FTeEJJLHlCSlFrQixFQUFBO0FMZ0J0QjtRU3hCSSx5QkpnRWtCLEVBQUE7QUszSDFCO0VBR0ksNkJBQTZCO0VBQzdCLGVBQWU7RUFDZixXQUFXO0VBQ1gsWUFBWSxFQUFBO0FBTmhCO0VBVUksdUJBQXVCLEVBQUE7QUFWM0I7RUFjSSx5QkFBeUI7RUFDekIsNEJBQTRCO0VBQzVCLGlDQUFpQztFQUNqQyxxQkFBcUIsRUFBQTtBQWpCekI7RUFxQkkseUJBQXlCLEVBQUE7QUNyQjdCO0VBQ0UsaUJBQWlCO0VBQ2pCLFdBQVcsRUFBQTtBQUZiO0lBS0ksZ0JBQWdCLEVBQUE7QVg4RWhCO01XM0VFLGNORXdCLEVBQUE7QUx5RTFCO01XM0VFLGNOMER3QixFQUFBO0FMaUIxQjtNVzNFRSxjTmtId0IsRUFBQTtBTTFIOUI7TUFZTSxZQUFZLEVBQUE7QUFabEI7UUFlUSxhQUFhO1FBQ2Isc0JBQXNCLEVBQUE7QUFoQjlCO1VBbUJVLGtCQUFrQixFQUFBO0FBbkI1QjtVQXVCVSxtQkFBbUIsRUFBQTtBQXZCN0I7SUE4QkksZ0JBQWdCLEVBQUE7QVhxRGhCO01XbERFLGNOekJvQixFQUFBO0FMMkV0QjtNV2xERSxjTitCb0IsRUFBQTtBTG1CdEI7TVdsREUsY051Rm9CLEVBQUE7QU14SDFCO01BcUNNLGNBQWMsRUFBQTtBWDhDaEI7UVd6Q00seUJORHVCLEVBQUE7QUwwQzdCO1FXekNNLHlCTnVEdUIsRUFBQTtBTGQ3QjtRV3pDTSx5Qk4rR3VCLEVBQUE7QU16SmpDO1FBK0NRLG1CQUFtQjtRQUNuQixlQUFlO1FBQ2Ysc0JBQXNCO1FBQ3RCLG1CQUFtQjtRQUNuQixnQkFBZ0IsRUFBQTtBQW5EeEI7VUFzRFUsa0JBQWtCLEVBQUE7QUF0RDVCO1VBMERVLG1CQUFtQixFQUFBO0FDdkM3QjtFQUNFLHFCQUFxQjtFQUNyQiw4QkFBOEM7RUFDOUMsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSxxQkFBcUI7RUFDckIsZ0NBQWdEO0VBQ2hELGdCQUFnQixFQUFBO0FBR2xCO0VBQ0UscUJBQXFCO0VBQ3JCLGlDQUFpRDtFQUNqRCxnQkFBZ0IsRUFBQTtBQUdsQjtFQUNFLHFCQUFxQjtFQUNyQiw2QkFBNkM7RUFDN0MsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSxxQkFBcUI7RUFDckIsa0NBQWtEO0VBQ2xELGdCQUFnQixFQUFBO0FBSWxCO0VBQ0UsaUNBQWlDO0VBQ2pDLGVBQWUsRUFBQTtBQUdqQjtFQUNFLGlDQUFpQztFQUNqQyxpQkFBaUI7RUFDakIsWUFBWTtFQUNaLGFBQWEsRUFBQTtBQUpmO0lBT0ksK0RBQTZFO0lBQzdFLHNCQUFzQixFQUFBO0FBUjFCO0lBWUksK0RBQTZFO0lBQzdFLHNCQUFzQixFQUFBO0FBYjFCO0lBaUJJLGdFQUE4RTtJQUM5RSxzQkFBc0IsRUFBQTtBQWxCMUI7SUFzQkksYUFBYTtJQUNiLFdBQVc7SUFDWCxZQUFZLEVBQUE7QUFJaEI7RUFLTSxzREFBeUQ7VUFBekQsOENBQXlELEVBQUEiLCJmaWxlIjoic3JjL3N0eWxlcy5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQG1peGluIHRleHQtdHJ1bmNhdGUge1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxufVxyXG5AbWl4aW4gdGV4dFdyYXAge1xyXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XHJcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcclxuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XHJcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xyXG4gIGxpbmUtYnJlYWs6IHN0cmljdDtcclxuICAtd2Via2l0LWh5cGhlbnM6IGF1dG87XHJcbiAgLW1zLWh5cGhlbnM6IGF1dG87XHJcbiAgaHlwaGVuczogYXV0bztcclxufVxyXG5AbWl4aW4gY292ZXJCb3gge1xyXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHR0b3A6IDA7XHJcblx0bGVmdDogMDtcclxuXHR3aWR0aDogMTAwJTtcclxuXHRoZWlnaHQ6IDEwMCU7XHJcbn1cclxuQG1peGluIGFicyAoJHRvcDogYXV0bywgJHJpZ2h0OiBhdXRvLCAkYm90dG9tOiBhdXRvLCAkbGVmdDogYXV0bykge1xyXG4gIHRvcDogJHRvcDtcclxuICByaWdodDogJHJpZ2h0O1xyXG4gIGJvdHRvbTogJGJvdHRvbTtcclxuICBsZWZ0OiAkbGVmdDtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbn1cclxuQG1peGluIGNvdmVySW1nIHtcclxuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG5cdC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuXHQtby1iYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG5cdGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDUwJTtcclxufVxyXG5AbWl4aW4gdmFsaW5nQm94IHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0dG9wOiAgNTAlO1xyXG5cdGxlZnQ6IDUwJTtcclxuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxufVxyXG5AbWl4aW4gdW5TZWxlY3Qge1xyXG5cdC13ZWJraXQtdG91Y2gtY29sbG91dDogbm9uZTtcclxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcclxuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcclxuICB1c2VyLXNlbGVjdDogbm9uZTtcclxufVxyXG5AbWl4aW4gbWF4MTE5OSB7IC8vIG1ha2V0IDExNzFcclxuICBAbWVkaWEgKG1heC13aWR0aDogMTE5OXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1heDExNzAgeyAvLyBtYWtldHMgOTkyXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDExNzBweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtYXg5OTEgeyAvLyBtYWtldHMgNzYyXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDk5MXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1heDc2MSB7IC8vIG1ha2V0cyA1NzZcclxuICBAbWVkaWEgKG1heC13aWR0aDogNzYxcHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbWF4NTc1IHsgLy8gbWFrZXRzIDQwMFxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA1NzVweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtb2JpbGUge1xyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiAzOTlweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBpY29DZW50ZXIge1xyXG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XHJcbn1cclxuQG1peGluIHBzZXVkbyAoJGRpc3BsYXk6IGJsb2NrLCAkcG9zOiBhYnNvbHV0ZSwgJGNvbnRlbnQ6ICcnKXtcclxuICBjb250ZW50OiAkY29udGVudDtcclxuICBkaXNwbGF5OiAkZGlzcGxheTtcclxuICBwb3NpdGlvbjogJHBvcztcclxufVxyXG5cclxuLypcclxuKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGVtZXNcclxuKi9cclxuQG1peGluIHRoZW1pZnkoJHRoZW1lczogJHRoZW1lcykge1xyXG4gIEBlYWNoICR0aGVtZSwgJG1hcCBpbiAkdGhlbWVzIHtcclxuICAgIC50aGVtZS0jeyR0aGVtZX0gJiB7XHJcbiAgICAgICR0aGVtZS1tYXA6ICgpICFnbG9iYWw7XHJcbiAgICAgIEBlYWNoICRrZXksICRzdWJtYXAgaW4gJG1hcCB7XHJcbiAgICAgICAgJHZhbHVlOiBtYXAtZ2V0KG1hcC1nZXQoJHRoZW1lcywgJHRoZW1lKSwgJyN7JGtleX0nKTtcclxuICAgICAgICAkdGhlbWUtbWFwOiBtYXAtbWVyZ2UoJHRoZW1lLW1hcCwgKCRrZXk6ICR2YWx1ZSkpICFnbG9iYWw7XHJcbiAgICAgIH1cclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICAgICR0aGVtZS1tYXA6IG51bGwgIWdsb2JhbDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBmdW5jdGlvbiB0aGVtZWQoJGtleSkge1xyXG4gIEByZXR1cm4gbWFwLWdldCgkdGhlbWUtbWFwLCAka2V5KTtcclxufVxyXG4iLCIvKlxyXG4qIEltcGxlbWVudGF0aW9uIG9mIHRoZW1lc1xyXG4qL1xuQGltcG9ydCB1cmwofkBuZy1zZWxlY3Qvbmctc2VsZWN0L3RoZW1lcy9kZWZhdWx0LnRoZW1lLmNzcyk7XG5odG1sIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cblxuKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGluaGVyaXQ7XG4gIC1tb3otYm94LXNpemluZzogaW5oZXJpdDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICAtd2Via2l0LXRvdWNoLWNvbGxvdXQ6IG5vbmU7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTsgfVxuXG5odG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG5hLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG5kZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG5zbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuYiwgdSwgaSwgY2VudGVyLFxuZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbmZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxudGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG5hcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbmZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbm1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxudGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgYm9yZGVyOiAwO1xuICBmb250LXNpemU6IDEwMCU7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG5hcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLFxuZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWVudSwgbmF2LCBzZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cblxub2wsIHVsIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG5ibG9ja3F1b3RlLCBxIHtcbiAgcXVvdGVzOiBub25lOyB9XG5cbmJsb2NrcXVvdGU6YmVmb3JlLCBibG9ja3F1b3RlOmFmdGVyLFxucTpiZWZvcmUsIHE6YWZ0ZXIge1xuICBjb250ZW50OiBub25lOyB9XG5cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxudGQsXG50aCB7XG4gIHBhZGRpbmc6IDA7IH1cblxuaW5wdXQge1xuICBvdXRsaW5lOiBub25lOyB9XG4gIGlucHV0Oi13ZWJraXQtYXV0b2ZpbGwge1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMTAwMHB4IHdoaXRlIGluc2V0OyB9XG5cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdXRsaW5lOiBub25lOyB9XG5cbmJ1dHRvbltkaXNhYmxlZF0sXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gIGN1cnNvcjogZGVmYXVsdDsgfVxuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDsgfVxuXG5pbnB1dCB7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7IH1cblxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgfVxuXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgfVxuXG5hIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG4gIGE6YWN0aXZlLCBhOmhvdmVyLCBhOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwOyB9XG5cbmkge1xuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cblxuYiwgc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuXG5pbWcge1xuICB3aWR0aDogYXV0bztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIGJvcmRlcjogMDsgfVxuXG4uaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbi50aGVtZS1kYXJrIC5hcHAtY29udGVudCAucHJlbG9hZGVyIC5sb2FkaW5nLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7IH1cblxuLnRoZW1lLWdyYXkgLmFwcC1jb250ZW50IC5wcmVsb2FkZXIgLmxvYWRpbmctYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDsgfVxuXG4udGhlbWUtd2hpdGUgLmFwcC1jb250ZW50IC5wcmVsb2FkZXIgLmxvYWRpbmctYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG5idXR0b24ge1xuICBib3JkZXI6IG5vbmU7XG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHBhZGRpbmc6IDAgMXJlbTtcbiAgaGVpZ2h0OiA0LjJyZW07IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uOmRpc2FibGVkOm5vdCgudHJhbnNwYXJlbnQtYnV0dG9uKSwgLnRoZW1lLWRhcmsgYnV0dG9uLmJsdWUtYnV0dG9uX3Jlc2V0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWNhZGI3O1xuICAgIGNvbG9yOiAjMTExOTIxOyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbjpkaXNhYmxlZDpub3QoLnRyYW5zcGFyZW50LWJ1dHRvbiksIC50aGVtZS1ncmF5IGJ1dHRvbi5ibHVlLWJ1dHRvbl9yZXNldCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzc5ODQ4ZjtcbiAgICBjb2xvcjogIzFhMWExYTsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uOmRpc2FibGVkOm5vdCgudHJhbnNwYXJlbnQtYnV0dG9uKSwgLnRoZW1lLXdoaXRlIGJ1dHRvbi5ibHVlLWJ1dHRvbl9yZXNldCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzkwYTRhZTtcbiAgICBjb2xvcjogI2ZlZmVmZTsgfVxuICAudGhlbWUtZGFyayBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pOmhvdmVyLCAudGhlbWUtZGFyayBidXR0b24uYmx1ZS1idXR0b25fcmVzZXQ6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNiN2QxZTA7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uOmRpc2FibGVkOm5vdCgudHJhbnNwYXJlbnQtYnV0dG9uKTpob3ZlciwgLnRoZW1lLWdyYXkgYnV0dG9uLmJsdWUtYnV0dG9uX3Jlc2V0OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTFhZWJiOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pOmhvdmVyLCAudGhlbWUtd2hpdGUgYnV0dG9uLmJsdWUtYnV0dG9uX3Jlc2V0OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWViZWM2OyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbjpkaXNhYmxlZDpub3QoLnRyYW5zcGFyZW50LWJ1dHRvbik6Zm9jdXMsIC50aGVtZS1kYXJrIGJ1dHRvbi5ibHVlLWJ1dHRvbl9yZXNldDpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2E3YjljMjsgfVxuICAudGhlbWUtZ3JheSBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pOmZvY3VzLCAudGhlbWUtZ3JheSBidXR0b24uYmx1ZS1idXR0b25fcmVzZXQ6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM4YTk1OWY7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbjpkaXNhYmxlZDpub3QoLnRyYW5zcGFyZW50LWJ1dHRvbik6Zm9jdXMsIC50aGVtZS13aGl0ZSBidXR0b24uYmx1ZS1idXR0b25fcmVzZXQ6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNhN2I5YzI7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uLmJsdWUtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmO1xuICAgIGNvbG9yOiAjMTExOTIxOyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTtcbiAgICBjb2xvcjogIzFhMWExYTsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uLmJsdWUtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxO1xuICAgIGNvbG9yOiAjZmVmZWZlOyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzgyZDdmZjsgfVxuICAudGhlbWUtZ3JheSBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM4NmQ2ZmY7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjNmZjsgfVxuICAudGhlbWUtZGFyayBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1OWI1ZmQ7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLmJsdWUtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWZiNmZjOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzNzlmZmE7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDtcbiAgICBjb2xvcjogIzExMTkyMTsgfVxuICAudGhlbWUtZ3JheSBidXR0b24uZ3JlZW4tYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkO1xuICAgIGNvbG9yOiAjMWExYTFhOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b24uZ3JlZW4tYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyO1xuICAgIGNvbG9yOiAjZmVmZWZlOyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbi5ncmVlbi1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM4ZGZjYzY7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzdiZjZjNjsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzVhZDU4NjsgfVxuICAudGhlbWUtZGFyayBidXR0b24uZ3JlZW4tYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjJlMGIyOyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbi5ncmVlbi1idXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1Y2RjOWU7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbi5ncmVlbi1idXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1M2M3N2M7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0ZGQwZTE7XG4gICAgY29sb3I6ICMxMTE5MjE7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzZWM1ZDc7XG4gICAgY29sb3I6ICMxYTFhMWE7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbi50dXJxdW9pc2UtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZiNmM3O1xuICAgIGNvbG9yOiAjZmVmZWZlOyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbi50dXJxdW9pc2UtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODdmNGY1OyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbi50dXJxdW9pc2UtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzJlZGZlOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b24udHVycXVvaXNlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzUyY2JkOTsgfVxuICAudGhlbWUtZGFyayBidXR0b24udHVycXVvaXNlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQyZDVlODsgfVxuICAudGhlbWUtZ3JheSBidXR0b24udHVycXVvaXNlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzUwZDBlMTsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzMWJlY2Y7IH1cbiAgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XG4gICAgLnRoZW1lLWRhcmsgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlcjogMC4ycmVtIHNvbGlkICMyYjM2NDQ7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS1ncmF5IGJ1dHRvbi50cmFuc3BhcmVudC1idXR0b24ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXI6IDAuMnJlbSBzb2xpZCAjMmYzNDM4O1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtd2hpdGUgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlcjogMC4ycmVtIHNvbGlkICNlYmViZWI7XG4gICAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAgIGJ1dHRvbi50cmFuc3BhcmVudC1idXR0b24gLmljb24ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xuICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2NvbXBsZXRlLXRlc3R3YWxsZXQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xuICAgICAgd2lkdGg6IDEuN3JlbTtcbiAgICAgIGhlaWdodDogMS43cmVtOyB9XG4gICAgICAudGhlbWUtZGFyayBidXR0b24udHJhbnNwYXJlbnQtYnV0dG9uIC5pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLWdyYXkgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiAuaWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7IH1cbiAgICAgIC50aGVtZS13aGl0ZSBidXR0b24udHJhbnNwYXJlbnQtYnV0dG9uIC5pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQzNDU0YjsgfVxuXG4uaW5wdXQtYmxvY2sge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgbWFyZ2luLWJvdHRvbTogMC40cmVtOyB9XG4gIC5pbnB1dC1ibG9jayAud3JhcC1sYWJlbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBtaW4taGVpZ2h0OiAyLjRyZW07IH1cbiAgLmlucHV0LWJsb2NrIGxhYmVsIHtcbiAgICBmb250LXNpemU6IDEuM3JlbTtcbiAgICBsaW5lLWhlaWdodDogMi40cmVtOyB9XG4gICAgLnRoZW1lLWRhcmsgLmlucHV0LWJsb2NrIGxhYmVsIHtcbiAgICAgIGNvbG9yOiAjNTU2NTc2OyB9XG4gICAgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrIGxhYmVsIHtcbiAgICAgIGNvbG9yOiAjNTY1YzYyOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jayBsYWJlbCB7XG4gICAgICBjb2xvcjogI2EwYTVhYjsgfVxuICAuaW5wdXQtYmxvY2sgaW5wdXRbdHlwZT0ndGV4dCddLCAuaW5wdXQtYmxvY2sgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSwgLmlucHV0LWJsb2NrIHNlbGVjdCB7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgcGFkZGluZzogMCAxcmVtO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNC4ycmVtOyB9XG4gICAgLnRoZW1lLWRhcmsgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3RleHQnXSwgLnRoZW1lLWRhcmsgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sIC50aGVtZS1kYXJrIC5pbnB1dC1ibG9jayBzZWxlY3Qge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzE3MWUyNztcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3RleHQnXSwgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sIC50aGVtZS1ncmF5IC5pbnB1dC1ibG9jayBzZWxlY3Qge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jayBpbnB1dFt0eXBlPSd0ZXh0J10sIC50aGVtZS13aGl0ZSAuaW5wdXQtYmxvY2sgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSwgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jayBzZWxlY3Qge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjtcbiAgICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gIC5pbnB1dC1ibG9jay50ZXh0YXJlYSB7XG4gICAgaGVpZ2h0OiBhdXRvOyB9XG4gICAgLmlucHV0LWJsb2NrLnRleHRhcmVhIHRleHRhcmVhIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIG1pbi1oZWlnaHQ6IDcuNXJlbTtcbiAgICAgIG1heC1oZWlnaHQ6IDcuNXJlbTtcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgcmVzaXplOiBub25lOyB9XG4gICAgICAudGhlbWUtZGFyayAuaW5wdXQtYmxvY2sudGV4dGFyZWEgdGV4dGFyZWEge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZTI3O1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrLnRleHRhcmVhIHRleHRhcmVhIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAuaW5wdXQtYmxvY2sudGV4dGFyZWEgdGV4dGFyZWEge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xuICAgICAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAuaW5wdXQtYmxvY2sgLmVycm9yLWJsb2NrIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNHJlbTtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDsgfVxuICAgIC50aGVtZS1kYXJrIC5pbnB1dC1ibG9jayAuZXJyb3ItYmxvY2sge1xuICAgICAgY29sb3I6ICNmZjUyNTI7IH1cbiAgICAudGhlbWUtZ3JheSAuaW5wdXQtYmxvY2sgLmVycm9yLWJsb2NrIHtcbiAgICAgIGNvbG9yOiAjZmY1MjUyOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jayAuZXJyb3ItYmxvY2sge1xuICAgICAgY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWRhcmsgLmVycm9yLXRleHQge1xuICBjb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZ3JheSAuZXJyb3ItdGV4dCB7XG4gIGNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS13aGl0ZSAuZXJyb3ItdGV4dCB7XG4gIGNvbG9yOiAjZmY1MjUyOyB9XG5cbmlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW8gKyBsYWJlbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgcGFkZGluZy1sZWZ0OiAyLjRyZW07XG4gIC13ZWJraXQtdG91Y2gtY29sbG91dDogbm9uZTtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lOyB9XG4gIC50aGVtZS1kYXJrIGlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW8gKyBsYWJlbCB7XG4gICAgY29sb3I6ICM1NTY1NzY7IH1cbiAgLnRoZW1lLWdyYXkgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbyArIGxhYmVsIHtcbiAgICBjb2xvcjogIzU2NWM2MjsgfVxuICAudGhlbWUtd2hpdGUgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbyArIGxhYmVsIHtcbiAgICBjb2xvcjogI2EwYTVhYjsgfVxuXG5pbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgb3BhY2l0eTogMDsgfVxuICBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDAuN3JlbTtcbiAgICBsZWZ0OiAwO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB3aWR0aDogMS40cmVtO1xuICAgIGhlaWdodDogMS40cmVtOyB9XG4gICAgLnRoZW1lLWRhcmsgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgICAgYm9yZGVyOiAwLjFyZW0gc29saWQgIzRkYjFmZjsgfVxuICAgIC50aGVtZS1ncmF5IGlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86bm90KGNoZWNrZWQpICsgbGFiZWw6YmVmb3JlIHtcbiAgICAgIGJvcmRlcjogMC4xcmVtIHNvbGlkICM0MmE1ZjU7IH1cbiAgICAudGhlbWUtd2hpdGUgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgICAgYm9yZGVyOiAwLjFyZW0gc29saWQgIzJjOTVmMTsgfVxuICBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxcmVtO1xuICAgIGxlZnQ6IDAuM3JlbTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb3BhY2l0eTogMDtcbiAgICB3aWR0aDogMC44cmVtO1xuICAgIGhlaWdodDogMC44cmVtOyB9XG4gICAgLnRoZW1lLWRhcmsgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG4gICAgLnRoZW1lLWdyYXkgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG4gICAgLnRoZW1lLXdoaXRlIGlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86bm90KGNoZWNrZWQpICsgbGFiZWw6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG5pbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOmNoZWNrZWQgKyBsYWJlbDphZnRlciB7XG4gIG9wYWNpdHk6IDE7IH1cblxuaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveCArIGxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXdlaWdodDogNDAwO1xuICBwYWRkaW5nLWxlZnQ6IDMuNnJlbTtcbiAgLXdlYmtpdC10b3VjaC1jb2xsb3V0OiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7IH1cbiAgLnRoZW1lLWRhcmsgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveCArIGxhYmVsIHtcbiAgICBjb2xvcjogIzU1NjU3NjsgfVxuICAudGhlbWUtZ3JheSBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94ICsgbGFiZWwge1xuICAgIGNvbG9yOiAjNTY1YzYyOyB9XG4gIC50aGVtZS13aGl0ZSBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94ICsgbGFiZWwge1xuICAgIGNvbG9yOiAjYTBhNWFiOyB9XG5cbmlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6bm90KGNoZWNrZWQpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogMS42cmVtO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuICBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94Om5vdChjaGVja2VkKSArIGxhYmVsIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiAxLjZyZW07XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIHdpZHRoOiAxLjRyZW07XG4gICAgaGVpZ2h0OiAxLjRyZW07IH1cbiAgICAudGhlbWUtZGFyayBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94Om5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCAjNGRiMWZmOyB9XG4gICAgLnRoZW1lLWdyYXkgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgICAgYm9yZGVyOiAwLjFyZW0gc29saWQgIzQyYTVmNTsgfVxuICAgIC50aGVtZS13aGl0ZSBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94Om5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCAjMmM5NWYxOyB9XG5cbmlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7XG4gIGJhY2tncm91bmQ6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9jb21wbGV0ZS10ZXN0d2FsbGV0LnN2Zyk7IH1cbiAgLnRoZW1lLWRhcmsgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG4gIC50aGVtZS1ncmF5IGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuICAudGhlbWUtd2hpdGUgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIC5zd2l0Y2gge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyB9XG5cbi50aGVtZS1ncmF5IC5zd2l0Y2gge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyB9XG5cbi50aGVtZS13aGl0ZSAuc3dpdGNoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZGFyayAuc3dpdGNoIC5jaXJjbGUub24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IC5zd2l0Y2ggLmNpcmNsZS5vbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIC5zd2l0Y2ggLmNpcmNsZS5vbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgLnN3aXRjaCAuY2lyY2xlLm9mZiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgLnN3aXRjaCAuY2lyY2xlLm9mZiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIC5zd2l0Y2ggLmNpcmNsZS5vZmYge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTBhNWFiOyB9XG5cbi50YWJsZS10b29sdGlwIHtcbiAgcGFkZGluZzogMXJlbSAycmVtOyB9XG4gIC50aGVtZS1kYXJrIC50YWJsZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjNDI1MDVmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcCB7XG4gICAgYmFja2dyb3VuZDogIzNlNDY0YztcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMTIwLCAxMjAsIDEyMCwgMC41KTtcbiAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAudGFibGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciB7XG4gICAgZm9udC1zaXplOiAxLjNyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuOHJlbTtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3Age1xuICAgIG1hcmdpbi10b3A6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3A6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogLTFyZW07XG4gICAgICBsZWZ0OiBjYWxjKDUwJSAtIDAuNXJlbSk7XG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7IH1cbiAgICAgIC50aGVtZS1kYXJrIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wOmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjNDI1MDVmIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcDphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNlNDY0YyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wOmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZmZmZmZmIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wLWxlZnQge1xuICAgIG1hcmdpbi10b3A6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtbGVmdDphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAtMXJlbTtcbiAgICAgIGxlZnQ6IDAuN3JlbTtcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtbGVmdDphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzQyNTA1ZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNDI1MDVmOyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcC1sZWZ0OmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjM2U0NjRjIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICMzZTQ2NGM7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcC1sZWZ0OmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZmZmZmZmIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmY7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQge1xuICAgIG1hcmdpbi10b3A6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQ6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogLTFyZW07XG4gICAgICByaWdodDogMC43cmVtO1xuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkOyB9XG4gICAgICAudGhlbWUtZGFyayAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcC1yaWdodDphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzQyNTA1ZiAjNDI1MDVmIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcC1yaWdodDphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNlNDY0YyAjM2U0NjRjIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQ6YWZ0ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6ICNmZmZmZmYgI2ZmZmZmZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbSB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAtMXJlbTtcbiAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMC41cmVtKTtcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b206YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNDI1MDVmIHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICMzZTQ2NGMgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmYgdHJhbnNwYXJlbnQ7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b20tbGVmdCB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLWxlZnQ6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IC0xcmVtO1xuICAgICAgbGVmdDogMC43cmVtO1xuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkOyB9XG4gICAgICAudGhlbWUtZGFyayAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzQyNTA1ZiAjNDI1MDVmOyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzNlNDY0YyAjM2U0NjRjOyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b20tbGVmdDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmYgI2ZmZmZmZjsgfVxuICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1yaWdodCB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAtMXJlbTtcbiAgICAgIHJpZ2h0OiAwLjdyZW07XG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7IH1cbiAgICAgIC50aGVtZS1kYXJrIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIzQyNTA1ZiAjNDI1MDVmIHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1yaWdodDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICMzZTQ2NGMgIzNlNDY0YyB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgI2ZmZmZmZiAjZmZmZmZmIHRyYW5zcGFyZW50OyB9XG4gIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtbGVmdCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IGNhbGMoNTAlIC0gMC41cmVtKTtcbiAgICAgIHJpZ2h0OiAtMXJlbTtcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0OmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNDI1MDVmOyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWxlZnQ6YWZ0ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICMzZTQ2NGM7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWxlZnQ6YWZ0ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmY7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodCB7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07IH1cbiAgICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiBjYWxjKDUwJSAtIDAuNXJlbSk7XG4gICAgICBsZWZ0OiAtMXJlbTtcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICM0MjUwNWYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS1ncmF5IC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtcmlnaHQ6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAjM2U0NjRjIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICNmZmZmZmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cblxuLnRhYmxlLXRvb2x0aXAtZGltZW5zaW9ucyAudG9vbHRpcC1pbm5lciB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICBtYXgtd2lkdGg6IDIwcmVtO1xuICBtYXgtaGVpZ2h0OiAxMHJlbTsgfVxuXG4uYmFsYW5jZS10b29sdGlwIHtcbiAgcGFkZGluZzogMS4zcmVtOyB9XG4gIC50aGVtZS1kYXJrIC5iYWxhbmNlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICM0MjUwNWY7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS1ncmF5IC5iYWxhbmNlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICMzZTQ2NGM7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS13aGl0ZSAuYmFsYW5jZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMTIwLCAxMjAsIDEyMCwgMC41KTtcbiAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZm9udC1zaXplOiAxLjNyZW07IH1cbiAgICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5hdmFpbGFibGUge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMS43cmVtOyB9XG4gICAgICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5hdmFpbGFibGUgYiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7IH1cbiAgICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5sb2NrZWQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMC43cmVtOyB9XG4gICAgICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5sb2NrZWQgYiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7IH1cbiAgICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5saW5rIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjsgfVxuICAgICAgLnRoZW1lLWRhcmsgLmJhbGFuY2UtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAubGluayB7XG4gICAgICAgIGNvbG9yOiAjNGRiMWZmOyB9XG4gICAgICAudGhlbWUtZ3JheSAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5saW5rIHtcbiAgICAgICAgY29sb3I6ICM0MmE1ZjU7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5saW5rIHtcbiAgICAgICAgY29sb3I6ICMyYzk1ZjE7IH1cbiAgLmJhbGFuY2UtdG9vbHRpcC5uZy10b29sdGlwLXRvcCB7XG4gICAgbWFyZ2luLXRvcDogLTFyZW07IH1cbiAgLmJhbGFuY2UtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbSB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAuYmFsYW5jZS10b29sdGlwLm5nLXRvb2x0aXAtbGVmdCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtOyB9XG4gIC5iYWxhbmNlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodCB7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07IH1cblxuLmFjY291bnQtdG9vbHRpcCAudG9vbHRpcC1pbm5lciB7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIG1heC13aWR0aDogMThyZW07IH1cblxuLmNvbW1lbnQtdG9vbHRpcCAudG9vbHRpcC1pbm5lciB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICBtYXgtd2lkdGg6IDUwcmVtO1xuICBtYXgtaGVpZ2h0OiAyNXJlbTsgfVxuXG4udXBkYXRlLXRvb2x0aXAge1xuICBwYWRkaW5nOiAxLjVyZW07IH1cbiAgLnRoZW1lLWRhcmsgLnVwZGF0ZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjNDI1MDVmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAudXBkYXRlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICMzZTQ2NGM7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS13aGl0ZSAudXBkYXRlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgxMjAsIDEyMCwgMTIwLCAwLjUpO1xuICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gIC50aGVtZS1kYXJrIC51cGRhdGUtdG9vbHRpcC5pbXBvcnRhbnQge1xuICAgIGJhY2tncm91bmQ6ICM1ZjJiMTE7XG4gICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgLnRoZW1lLWdyYXkgLnVwZGF0ZS10b29sdGlwLmltcG9ydGFudCB7XG4gICAgYmFja2dyb3VuZDogIzU1MjQwZDtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwLmltcG9ydGFudCB7XG4gICAgYmFja2dyb3VuZDogI2VmNmMwMDtcbiAgICBjb2xvcjogI2ZmZmZmZjsgfVxuICAudGhlbWUtZGFyayAudXBkYXRlLXRvb2x0aXAuaW1wb3J0YW50Lm5nLXRvb2x0aXAtbGVmdC1ib3R0b206YWZ0ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzVmMmIxMSAjNWYyYjExOyB9XG4gIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5pbXBvcnRhbnQubmctdG9vbHRpcC1sZWZ0LWJvdHRvbTphZnRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNTUyNDBkICM1NTI0MGQ7IH1cbiAgLnRoZW1lLXdoaXRlIC51cGRhdGUtdG9vbHRpcC5pbXBvcnRhbnQubmctdG9vbHRpcC1sZWZ0LWJvdHRvbTphZnRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjZWY2YzAwICNlZjZjMDA7IH1cbiAgLnRoZW1lLWRhcmsgLnVwZGF0ZS10b29sdGlwLmltcG9ydGFudC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbTpiZWZvcmUge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIzVmMmIxMSAjNWYyYjExIHRyYW5zcGFyZW50OyB9XG4gIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5pbXBvcnRhbnQubmctdG9vbHRpcC1yaWdodC1ib3R0b206YmVmb3JlIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICM1NTI0MGQgIzU1MjQwZCB0cmFuc3BhcmVudDsgfVxuICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwLmltcG9ydGFudC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbTpiZWZvcmUge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgI2VmNmMwMCAjZWY2YzAwIHRyYW5zcGFyZW50OyB9XG4gIC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbCB7XG4gICAgcGFkZGluZzogMi41cmVtOyB9XG4gICAgLnRoZW1lLWRhcmsgLnVwZGF0ZS10b29sdGlwLmNyaXRpY2FsIHtcbiAgICAgIGJhY2tncm91bmQ6ICM1ZjFkMWQ7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbCB7XG4gICAgICBiYWNrZ3JvdW5kOiAjNGMxOTE5O1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwLmNyaXRpY2FsIHtcbiAgICAgIGJhY2tncm91bmQ6ICNlNTM5MzU7XG4gICAgICBjb2xvcjogI2ZmZmZmZjsgfVxuICAgIC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbCAudG9vbHRpcC1pbm5lciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cbiAgICAudGhlbWUtZGFyayAudXBkYXRlLXRvb2x0aXAuY3JpdGljYWwubmctdG9vbHRpcC1sZWZ0LWJvdHRvbTphZnRlciB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM1ZjFkMWQgIzVmMWQxZDsgfVxuICAgIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbC5uZy10b29sdGlwLWxlZnQtYm90dG9tOmFmdGVyIHtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzRjMTkxOSAjNGMxOTE5OyB9XG4gICAgLnRoZW1lLXdoaXRlIC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbC5uZy10b29sdGlwLWxlZnQtYm90dG9tOmFmdGVyIHtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2U1MzkzNSAjZTUzOTM1OyB9XG4gICAgLnRoZW1lLWRhcmsgLnVwZGF0ZS10b29sdGlwLmNyaXRpY2FsLm5nLXRvb2x0aXAtcmlnaHQtYm90dG9tOmJlZm9yZSB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICM1ZjFkMWQgIzVmMWQxZCB0cmFuc3BhcmVudDsgfVxuICAgIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbTpiZWZvcmUge1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAjNGMxOTE5ICM0YzE5MTkgdHJhbnNwYXJlbnQ7IH1cbiAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwLmNyaXRpY2FsLm5nLXRvb2x0aXAtcmlnaHQtYm90dG9tOmJlZm9yZSB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICNlNTM5MzUgI2U1MzkzNSB0cmFuc3BhcmVudDsgfVxuICAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIge1xuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjhyZW07XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB9XG4gICAgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5zdGFuZGFyZC11cGRhdGUge1xuICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICBsaW5lLWhlaWdodDogMi43cmVtOyB9XG4gICAgICAudGhlbWUtZGFyayAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLnN0YW5kYXJkLXVwZGF0ZSB7XG4gICAgICAgIGNvbG9yOiAjNGRiMWZmOyB9XG4gICAgICAudGhlbWUtZ3JheSAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLnN0YW5kYXJkLXVwZGF0ZSB7XG4gICAgICAgIGNvbG9yOiAjNDJhNWY1OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5zdGFuZGFyZC11cGRhdGUge1xuICAgICAgICBjb2xvcjogIzJjOTVmMTsgfVxuICAgIC51cGRhdGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAuaW1wb3J0YW50LXVwZGF0ZSB7XG4gICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjdyZW07IH1cbiAgICAgIC50aGVtZS1kYXJrIC51cGRhdGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAuaW1wb3J0YW50LXVwZGF0ZSB7XG4gICAgICAgIGNvbG9yOiAjZmY2ZjAwOyB9XG4gICAgICAudGhlbWUtZ3JheSAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLmltcG9ydGFudC11cGRhdGUge1xuICAgICAgICBjb2xvcjogI2ZmNmYwMDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC51cGRhdGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAuaW1wb3J0YW50LXVwZGF0ZSB7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmOyB9XG4gICAgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5jcml0aWNhbC11cGRhdGUge1xuICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICBsaW5lLWhlaWdodDogMi43cmVtO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gICAgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC53cm9uZy10aW1lIHtcbiAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDIuN3JlbTsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC53cm9uZy10aW1lIHtcbiAgICAgICAgY29sb3I6ICNmZjZmMDA7IH1cbiAgICAgIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAud3JvbmctdGltZSB7XG4gICAgICAgIGNvbG9yOiAjZmY2ZjAwOyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC53cm9uZy10aW1lIHtcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7IH1cbiAgICAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLmljb24ge1xuICAgICAgbWFyZ2luOiAxLjVyZW0gMDtcbiAgICAgIHdpZHRoOiA1cmVtO1xuICAgICAgaGVpZ2h0OiA1cmVtOyB9XG4gICAgICAudGhlbWUtZGFyayAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLmljb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG4gICAgICAudGhlbWUtZ3JheSAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLmljb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxuICAudXBkYXRlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0LWJvdHRvbSB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xLjVyZW07IH1cbiAgICAudXBkYXRlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0LWJvdHRvbTphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAwLjZyZW07XG4gICAgICByaWdodDogLTFyZW07XG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7IH1cbiAgICAgIC50aGVtZS1kYXJrIC51cGRhdGUtdG9vbHRpcC5uZy10b29sdGlwLWxlZnQtYm90dG9tOmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNDI1MDVmICM0MjUwNWY7IH1cbiAgICAgIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5uZy10b29sdGlwLWxlZnQtYm90dG9tOmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjM2U0NjRjICMzZTQ2NGM7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudXBkYXRlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0LWJvdHRvbTphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2ZmZmZmZiAjZmZmZmZmOyB9XG4gIC51cGRhdGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbSB7XG4gICAgbWFyZ2luLWxlZnQ6IDEuNXJlbTsgfVxuICAgIC51cGRhdGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbTpiZWZvcmUge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogMC42cmVtO1xuICAgICAgbGVmdDogLTFyZW07XG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7IH1cbiAgICAgIC50aGVtZS1kYXJrIC51cGRhdGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbTpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICM0MjUwNWYgIzQyNTA1ZiB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLnVwZGF0ZS10b29sdGlwLm5nLXRvb2x0aXAtcmlnaHQtYm90dG9tOmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIzNlNDY0YyAjM2U0NjRjIHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwLm5nLXRvb2x0aXAtcmlnaHQtYm90dG9tOmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgI2ZmZmZmZiAjZmZmZmZmIHRyYW5zcGFyZW50OyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgLmRyb3Bkb3duLW1lbnUge1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDA7IH1cbiAgLnRoZW1lLWRhcmsgLm5neC1jb250ZXh0bWVudSAuZHJvcGRvd24tbWVudSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJiMzY0NDtcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSk7IH1cbiAgLnRoZW1lLWdyYXkgLm5neC1jb250ZXh0bWVudSAuZHJvcGRvd24tbWVudSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSk7IH1cbiAgLnRoZW1lLXdoaXRlIC5uZ3gtY29udGV4dG1lbnUgLmRyb3Bkb3duLW1lbnUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgxMjAsIDEyMCwgMTIwLCAwLjUpOyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgbGkge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEuM3JlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwLjVlbSAxZW07IH1cbiAgLnRoZW1lLWRhcmsgLm5neC1jb250ZXh0bWVudSBhIHtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAubmd4LWNvbnRleHRtZW51IGEge1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS13aGl0ZSAubmd4LWNvbnRleHRtZW51IGEge1xuICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gIC50aGVtZS1kYXJrIC5uZ3gtY29udGV4dG1lbnUgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAubmd4LWNvbnRleHRtZW51IGE6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1MTU5NjA7XG4gICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgLnRoZW1lLXdoaXRlIC5uZ3gtY29udGV4dG1lbnUgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICBjb2xvcjogIzQzNDU0YjsgfVxuXG4ubmctc2VsZWN0LmN1c3RvbS1zZWxlY3Qge1xuICB3aWR0aDogMTAwJTsgfVxuICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICBoZWlnaHQ6IDQuMnJlbTsgfVxuICAgIC50aGVtZS1kYXJrIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctc2VsZWN0LWNvbnRhaW5lciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZTI3O1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtZ3JheSAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctc2VsZWN0LWNvbnRhaW5lciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xuICAgICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciB7XG4gICAgICBwYWRkaW5nOiAwOyB9XG4gICAgICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctaW5wdXQge1xuICAgICAgICB0b3A6IGF1dG87IH1cbiAgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCB7XG4gICAgYm9yZGVyOiBub25lOyB9XG4gICAgLnRoZW1lLWRhcmsgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZTI3OyB9XG4gICAgLnRoZW1lLWdyYXkgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjkyZDMxOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjsgfVxuICAgIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ge1xuICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICBwYWRkaW5nOiAxcmVtOyB9XG4gICAgICAudGhlbWUtZGFyayAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzE3MWUyNztcbiAgICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAgIC50aGVtZS1ncmF5IC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjkyZDMxO1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xuICAgICAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAgICAgLnRoZW1lLWRhcmsgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tbWFya2VkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg1OCwgNjksIDg1LCAwLjUpO1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tbWFya2VkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg1OCwgNjIsIDY2LCAwLjUpO1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ubmctb3B0aW9uLW1hcmtlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjQwLCAyNDAsIDI0MCwgMC41KTtcbiAgICAgICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgICAgIC50aGVtZS1kYXJrIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ubmctb3B0aW9uLXNlbGVjdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpO1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSk7XG4gICAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgICAudGhlbWUtd2hpdGUgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIyNCwgMjI0LCAyMjQsIDAuNSk7XG4gICAgICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gICAgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXM6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgd2lkdGg6IDFyZW07XG4gICAgICBoZWlnaHQ6IDFyZW07IH1cbiAgICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtczo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH1cbiAgICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjtcbiAgICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gICAgICBib3JkZXI6IDAuMjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07IH1cbiAgICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZGFyayBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCB7XG4gIGJhY2tncm91bmQ6IHVybCh+c3JjL2Fzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC1kYXJrLnBuZyk7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIHtcbiAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWdyYXkucG5nKTtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIHtcbiAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLXdoaXRlLnBuZyk7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLmVycm9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5lcnJvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLmVycm9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uc3VjY2VzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NmMxNzI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uaW5mbyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uaW5mbyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLmluZm8ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5hY3Rpb24tYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjtcbiAgY29sb3I6ICMxMTE5MjE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmFjdGlvbi1idXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1O1xuICBjb2xvcjogIzFhMWExYTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmFjdGlvbi1idXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxO1xuICBjb2xvcjogI2ZlZmVmZTsgfVxuXG4udGhlbWUtZGFyayBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY2xvc2UtYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY2xvc2UtYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUxNTk2MDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNsb3NlLWJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIHtcbiAgYm9yZGVyLXRvcDogMC4ycmVtIHNvbGlkICMyYjM2NDQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIHtcbiAgYm9yZGVyLXRvcDogMC4ycmVtIHNvbGlkICMyZjM0Mzg7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSB7XG4gIGJvcmRlci10b3A6IDAuMnJlbSBzb2xpZCAjZWJlYmViOyB9XG5cbi50aGVtZS1kYXJrIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLmxhYmVsIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwubGFiZWwge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwubGFiZWwge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtdHJhbnNhY3Rpb24tZGV0YWlscyAudGFibGUgLnJvdyAuY2VsbC52YWx1ZSB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLnZhbHVlIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLnZhbHVlIHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwua2V5LXZhbHVlIHtcbiAgY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwua2V5LXZhbHVlIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLmtleS12YWx1ZSB7XG4gIGNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1wcm9ncmVzcy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtcHJvZ3Jlc3MtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wcm9ncmVzcy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtcHJvZ3Jlc3MtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzZjRhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wcm9ncmVzcy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNjNhM2U7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wcm9ncmVzcy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2RjZGM7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXByb2dyZXNzLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5wcm9ncmVzcy1iYXItZnVsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXByb2dyZXNzLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5wcm9ncmVzcy1iYXItZnVsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0N2NmOGQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wcm9ncmVzcy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciAucHJvZ3Jlc3MtYmFyLWZ1bGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1vcGVuLXdhbGxldC1tb2RhbCAubW9kYWwge1xuICBiYWNrZ3JvdW5kOiB1cmwofnNyYy9hc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtZGFyay5wbmcpO1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtb3Blbi13YWxsZXQtbW9kYWwgLm1vZGFsIHtcbiAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWdyYXkucG5nKTtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1vcGVuLXdhbGxldC1tb2RhbCAubW9kYWwge1xuICBiYWNrZ3JvdW5kOiB1cmwofnNyYy9hc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtd2hpdGUucG5nKTtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuYXBwLW1haW4sIGFwcC1jcmVhdGUtd2FsbGV0LCBhcHAtb3Blbi13YWxsZXQsIGFwcC1yZXN0b3JlLXdhbGxldCwgYXBwLXNlZWQtcGhyYXNlLCBhcHAtd2FsbGV0LWRldGFpbHMsIGFwcC1hc3NpZ24tYWxpYXMsIGFwcC1lZGl0LWFsaWFzLCBhcHAtdHJhbnNmZXItYWxpYXMsIGFwcC1zZXR0aW5ncywgYXBwLWxvZ2luIHtcbiAgZmxleDogMSAxIGF1dG87XG4gIHBhZGRpbmc6IDNyZW07XG4gIG1pbi13aWR0aDogODVyZW07IH1cbiAgYXBwLW1haW4gLmNvbnRlbnQsIGFwcC1jcmVhdGUtd2FsbGV0IC5jb250ZW50LCBhcHAtb3Blbi13YWxsZXQgLmNvbnRlbnQsIGFwcC1yZXN0b3JlLXdhbGxldCAuY29udGVudCwgYXBwLXNlZWQtcGhyYXNlIC5jb250ZW50LCBhcHAtd2FsbGV0LWRldGFpbHMgLmNvbnRlbnQsIGFwcC1hc3NpZ24tYWxpYXMgLmNvbnRlbnQsIGFwcC1lZGl0LWFsaWFzIC5jb250ZW50LCBhcHAtdHJhbnNmZXItYWxpYXMgLmNvbnRlbnQsIGFwcC1zZXR0aW5ncyAuY29udGVudCwgYXBwLWxvZ2luIC5jb250ZW50IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogM3JlbTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlOyB9XG4gICAgLnRoZW1lLWRhcmsgYXBwLW1haW4gLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1jcmVhdGUtd2FsbGV0IC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtb3Blbi13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1yZXN0b3JlLXdhbGxldCAuY29udGVudCwgLnRoZW1lLWRhcmsgYXBwLXNlZWQtcGhyYXNlIC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtd2FsbGV0LWRldGFpbHMgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1hc3NpZ24tYWxpYXMgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1lZGl0LWFsaWFzIC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtdHJhbnNmZXItYWxpYXMgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1zZXR0aW5ncyAuY29udGVudCwgLnRoZW1lLWRhcmsgYXBwLWxvZ2luIC5jb250ZW50IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KTtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLWdyYXkgYXBwLW1haW4gLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1jcmVhdGUtd2FsbGV0IC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtb3Blbi13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1yZXN0b3JlLXdhbGxldCAuY29udGVudCwgLnRoZW1lLWdyYXkgYXBwLXNlZWQtcGhyYXNlIC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtd2FsbGV0LWRldGFpbHMgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1hc3NpZ24tYWxpYXMgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1lZGl0LWFsaWFzIC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtdHJhbnNmZXItYWxpYXMgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1zZXR0aW5ncyAuY29udGVudCwgLnRoZW1lLWdyYXkgYXBwLWxvZ2luIC5jb250ZW50IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzcsIDQwLCA0MywgMC41KTtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLXdoaXRlIGFwcC1tYWluIC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLWNyZWF0ZS13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtb3Blbi13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtcmVzdG9yZS13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtc2VlZC1waHJhc2UgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtd2FsbGV0LWRldGFpbHMgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtYXNzaWduLWFsaWFzIC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLWVkaXQtYWxpYXMgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtdHJhbnNmZXItYWxpYXMgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtc2V0dGluZ3MgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtbG9naW4gLmNvbnRlbnQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAgICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgICBhcHAtbWFpbiAuY29udGVudCAuaGVhZCwgYXBwLWNyZWF0ZS13YWxsZXQgLmNvbnRlbnQgLmhlYWQsIGFwcC1vcGVuLXdhbGxldCAuY29udGVudCAuaGVhZCwgYXBwLXJlc3RvcmUtd2FsbGV0IC5jb250ZW50IC5oZWFkLCBhcHAtc2VlZC1waHJhc2UgLmNvbnRlbnQgLmhlYWQsIGFwcC13YWxsZXQtZGV0YWlscyAuY29udGVudCAuaGVhZCwgYXBwLWFzc2lnbi1hbGlhcyAuY29udGVudCAuaGVhZCwgYXBwLWVkaXQtYWxpYXMgLmNvbnRlbnQgLmhlYWQsIGFwcC10cmFuc2Zlci1hbGlhcyAuY29udGVudCAuaGVhZCwgYXBwLXNldHRpbmdzIC5jb250ZW50IC5oZWFkLCBhcHAtbG9naW4gLmNvbnRlbnQgLmhlYWQge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMDsgfVxuXG4udGhlbWUtZGFyayBhcHAtbWFpbiAuY29udGVudCAuYWRkLXdhbGxldCAuYWRkLXdhbGxldC1oZWxwIHtcbiAgY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1haW4gLmNvbnRlbnQgLmFkZC13YWxsZXQgLmFkZC13YWxsZXQtaGVscCB7XG4gIGNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtbWFpbiAuY29udGVudCAuYWRkLXdhbGxldCAuYWRkLXdhbGxldC1oZWxwIHtcbiAgY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLW1haW4gLmNvbnRlbnQgLmFkZC13YWxsZXQgLmFkZC13YWxsZXQtaGVscCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1haW4gLmNvbnRlbnQgLmFkZC13YWxsZXQgLmFkZC13YWxsZXQtaGVscCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tYWluIC5jb250ZW50IC5hZGQtd2FsbGV0IC5hZGQtd2FsbGV0LWhlbHAgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zZWVkLXBocmFzZSAuc2VlZC1waHJhc2UtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxNzFlMjc7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zZWVkLXBocmFzZSAuc2VlZC1waHJhc2UtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOTJkMzE7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2VlZC1waHJhc2UgLnNlZWQtcGhyYXNlLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0LWRldGFpbHMgLnNlZWQtcGhyYXNlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE3MWUyNzsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0LWRldGFpbHMgLnNlZWQtcGhyYXNlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldC1kZXRhaWxzIC5zZWVkLXBocmFzZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7IH1cblxuYXBwLXNldHRpbmdzIC5jb250ZW50IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH1cbiAgLnRoZW1lLWRhcmsgYXBwLXNldHRpbmdzIC5jb250ZW50IC50aGVtZS1zZWxlY3Rpb24ge1xuICAgIGNvbG9yOiAjNTU2NTc2OyB9XG4gIC50aGVtZS1ncmF5IGFwcC1zZXR0aW5ncyAuY29udGVudCAudGhlbWUtc2VsZWN0aW9uIHtcbiAgICBjb2xvcjogIzU2NWM2MjsgfVxuICAudGhlbWUtd2hpdGUgYXBwLXNldHRpbmdzIC5jb250ZW50IC50aGVtZS1zZWxlY3Rpb24ge1xuICAgIGNvbG9yOiAjYTBhNWFiOyB9XG4gIC50aGVtZS1kYXJrIGFwcC1zZXR0aW5ncyAuY29udGVudCAuc2NhbGUtc2VsZWN0aW9uIC5idXR0b24tYmxvY2sge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjMsIDMxLCAzOSwgMC41KTsgfVxuICAudGhlbWUtZ3JheSBhcHAtc2V0dGluZ3MgLmNvbnRlbnQgLnNjYWxlLXNlbGVjdGlvbiAuYnV0dG9uLWJsb2NrIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI4LCAzMCwgMzMsIDAuNSk7IH1cbiAgLnRoZW1lLXdoaXRlIGFwcC1zZXR0aW5ncyAuY29udGVudCAuc2NhbGUtc2VsZWN0aW9uIC5idXR0b24tYmxvY2sge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjI0LCAyMjQsIDIyNCwgMC41KTsgfVxuICAudGhlbWUtZGFyayBhcHAtc2V0dGluZ3MgLmNvbnRlbnQgLnNjYWxlLXNlbGVjdGlvbiAuYnV0dG9uLWJsb2NrIC5sYWJlbCB7XG4gICAgY29sb3I6ICM1NTY1NzY7IH1cbiAgLnRoZW1lLWdyYXkgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jayAubGFiZWwge1xuICAgIGNvbG9yOiAjNTY1YzYyOyB9XG4gIC50aGVtZS13aGl0ZSBhcHAtc2V0dGluZ3MgLmNvbnRlbnQgLnNjYWxlLXNlbGVjdGlvbiAuYnV0dG9uLWJsb2NrIC5sYWJlbCB7XG4gICAgY29sb3I6ICNhMGE1YWI7IH1cbiAgLnRoZW1lLWRhcmsgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jay5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cbiAgLnRoZW1lLWdyYXkgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jay5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cbiAgLnRoZW1lLXdoaXRlIGFwcC1zZXR0aW5ncyAuY29udGVudCAuc2NhbGUtc2VsZWN0aW9uIC5idXR0b24tYmxvY2suYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG4gIC50aGVtZS1kYXJrIGFwcC1zZXR0aW5ncyAuY29udGVudCAuc2NhbGUtc2VsZWN0aW9uIC5idXR0b24tYmxvY2suYWN0aXZlIC5sYWJlbCB7XG4gICAgY29sb3I6ICM0ZGIxZmY7IH1cbiAgLnRoZW1lLWdyYXkgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jay5hY3RpdmUgLmxhYmVsIHtcbiAgICBjb2xvcjogIzQyYTVmNTsgfVxuICAudGhlbWUtd2hpdGUgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jay5hY3RpdmUgLmxhYmVsIHtcbiAgICBjb2xvcjogIzJjOTVmMTsgfVxuXG5hcHAtbG9naW4ge1xuICBtaW4td2lkdGg6IGluaGVyaXQ7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZjI3OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFjMWUyMTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1oZWFkZXIgaDMge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1oZWFkZXIgaDMge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtaGVhZGVyIGgzIHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtaGVhZGVyIGJ1dHRvbiB7XG4gIGNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWhlYWRlciBidXR0b24ge1xuICBjb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtaGVhZGVyIGJ1dHRvbiB7XG4gIGNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnRleHQge1xuICBjb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnRleHQge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC50ZXh0IHtcbiAgY29sb3I6ICNhMGE1YWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjtcbiAgY29sb3I6ICMxMTE5MjE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1O1xuICBjb2xvcjogIzFhMWExYTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxO1xuICBjb2xvcjogI2ZlZmVmZTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDNmNGE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzYzYTNlOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2RjZGM7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIgLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIgLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdy5hY2NvdW50LXN5bmNocm9uaXphdGlvbiB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdy5hY2NvdW50LXN5bmNocm9uaXphdGlvbiB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpO1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzNywgNDAsIDQzLCAwLjUpO1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZTg4ZTU7XG4gIGNvbG9yOiAjZmZmZmZmOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLnRleHQge1xuICBjb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC50ZXh0IHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLnRleHQge1xuICBjb2xvcjogIzkxYmFmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmO1xuICBjb2xvcjogIzExMTkyMTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1O1xuICBjb2xvcjogIzFhMWExYTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAuc3dpdGNoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAuc3dpdGNoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLnN3aXRjaCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xuICBjb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93LmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xuICBjb2xvcjogIzkxYmFmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQ6aG92ZXI6bm90KC5hY3RpdmUpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg1OCwgNjksIDg1LCAwLjUpOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudDpob3Zlcjpub3QoLmFjdGl2ZSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDU4LCA2MiwgNjYsIDAuNSk7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudDpob3Zlcjpub3QoLmFjdGl2ZSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0MCwgMjQwLCAyNDAsIDAuNSk7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHM6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB0cmFuc3BhcmVudCAwJSwgIzE3MWYyNyAxMDAlKTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50czphZnRlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50IDAlLCAjMWMxZTIxIDEwMCUpOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50czphZnRlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50IDAlLCB3aGl0ZSAxMDAlKTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zZXR0aW5ncyB7XG4gIGJvcmRlci1ib3R0b206IDAuMnJlbSBzb2xpZCAjMWYyODMzOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIHtcbiAgYm9yZGVyLWJvdHRvbTogMC4ycmVtIHNvbGlkICMyZTMzMzc7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIHtcbiAgYm9yZGVyLWJvdHRvbTogMC4ycmVtIHNvbGlkICNlYmViZWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgLndyYXAtYnV0dG9uIGJ1dHRvbiB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbiBidXR0b24ge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgLndyYXAtYnV0dG9uIGJ1dHRvbiB7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbiBidXR0b24gLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbiBidXR0b24gLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zZXR0aW5ncyAud3JhcC1idXR0b24gYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zZXR0aW5ncyAud3JhcC1idXR0b24uYWN0aXZlIGJ1dHRvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KSAhaW1wb3J0YW50O1xuICBjb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbi5hY3RpdmUgYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzNywgNDAsIDQzLCAwLjUpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbi5hY3RpdmUgYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFlODhlNSAhaW1wb3J0YW50O1xuICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbi5hY3RpdmUgYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZiAhaW1wb3J0YW50OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbi5hY3RpdmUgYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNSAhaW1wb3J0YW50OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zZXR0aW5ncyAud3JhcC1idXR0b24uYWN0aXZlIGJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIHtcbiAgY29sb3I6ICNhMGE1YWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAub2ZmbGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLm9mZmxpbmU6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAub2ZmbGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLm9ubGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNkYTlkOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLm9ubGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5vbmxpbmU6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5zeW5jaW5nIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzZjRhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnN5bmNpbmcgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNjNhM2U7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnN5bmNpbmcgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2RjZGM7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAuc3luY2luZyAucHJvZ3Jlc3MtYmFyIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5zeW5jaW5nIC5wcm9ncmVzcy1iYXIgLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5zeW5jaW5nIC5wcm9ncmVzcy1iYXIgLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLmxvYWRpbmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNkYTlkOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLmxvYWRpbmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5sb2FkaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5zdGFuZGFyZCB7XG4gIGNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLnN0YW5kYXJkIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLnN0YW5kYXJkIHtcbiAgY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaW1wb3J0YW50IHtcbiAgY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaW1wb3J0YW50IHtcbiAgY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLmltcG9ydGFudCB7XG4gIGNvbG9yOiAjZmY2ZjAwOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLmNyaXRpY2FsIHtcbiAgY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuY3JpdGljYWwge1xuICBjb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuY3JpdGljYWwge1xuICBjb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC50aW1lIHtcbiAgY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAudGltZSB7XG4gIGNvbG9yOiAjZmY2ZjAwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC50aW1lIHtcbiAgY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaWNvbi5zdGFuZGFyZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaWNvbi5zdGFuZGFyZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLmljb24uc3RhbmRhcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLmljb24uaW1wb3J0YW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5pY29uLmltcG9ydGFudCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLmljb24uaW1wb3J0YW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5pY29uLmNyaXRpY2FsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5pY29uLmNyaXRpY2FsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaWNvbi5jcml0aWNhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaWNvbi50aW1lIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5pY29uLnRpbWUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5pY29uLnRpbWUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQge1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC5oZWFkZXIgYnV0dG9uIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAuaGVhZGVyIGJ1dHRvbiB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC5oZWFkZXIgYnV0dG9uIHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAuaGVhZGVyIGJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAuaGVhZGVyIGJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLmhlYWRlciBidXR0b24gLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLmhlYWRlciAuYWxpYXMgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQgLmhlYWRlciAuYWxpYXMgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC5oZWFkZXIgLmFsaWFzIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC5hZGRyZXNzIHtcbiAgY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAuYWRkcmVzcyB7XG4gIGNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC5hZGRyZXNzIHtcbiAgY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAuYWRkcmVzcyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAuYWRkcmVzcyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLmFkZHJlc3MgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzLCAzMSwgMzksIDAuNSk7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjgsIDMwLCAzMywgMC41KTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjI0LCAyMjQsIDIyNCwgMC41KTsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjtcbiAgY29sb3I6ICMxMTE5MjE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTtcbiAgY29sb3I6ICMxYTFhMWE7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIgLmluZGljYXRvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpOyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzNywgNDAsIDQzLCAwLjUpOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiOmhvdmVyOm5vdCguYWN0aXZlKTpub3QoLmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTgsIDY5LCA4NSwgMC41KTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiOmhvdmVyOm5vdCguYWN0aXZlKTpub3QoLmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTgsIDYyLCA2NiwgMC41KTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYjpob3Zlcjpub3QoLmFjdGl2ZSk6bm90KC5kaXNhYmxlZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSk7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2VuZCAuZm9ybS1zZW5kIC5zZW5kLXNlbGVjdCB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zZW5kIC5mb3JtLXNlbmQgLnNlbmQtc2VsZWN0IHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zZW5kIC5mb3JtLXNlbmQgLnNlbmQtc2VsZWN0IHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNlbmQgLmZvcm0tc2VuZCAuc2VuZC1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zZW5kIC5mb3JtLXNlbmQgLnNlbmQtc2VsZWN0IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNlbmQgLmZvcm0tc2VuZCAuc2VuZC1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zZW5kIC5mb3JtLXNlbmQgLmFkZGl0aW9uYWwtZGV0YWlscyB7XG4gIGJvcmRlcjogMC4ycmVtIHNvbGlkICMyYjM2NDQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNlbmQgLmZvcm0tc2VuZCAuYWRkaXRpb25hbC1kZXRhaWxzIHtcbiAgYm9yZGVyOiAwLjJyZW0gc29saWQgIzJmMzQzODsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNlbmQgLmZvcm0tc2VuZCAuYWRkaXRpb25hbC1kZXRhaWxzIHtcbiAgYm9yZGVyOiAwLjJyZW0gc29saWQgI2ViZWJlYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtcmVjZWl2ZSAuYnRuLWNvcHktYWRkcmVzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXJlY2VpdmUgLmJ0bi1jb3B5LWFkZHJlc3Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtcmVjZWl2ZSAuYnRuLWNvcHktYWRkcmVzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIubG9ja2VkLXRyYW5zYWN0aW9uIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIubG9ja2VkLXRyYW5zYWN0aW9uIHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyLmxvY2tlZC10cmFuc2FjdGlvbiB7XG4gIGNvbG9yOiAjYTBhNWFiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bisxKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxODIwMmE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzEpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI1MjkyZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzEpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxuXG4udGhlbWUtZGFyayBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rMikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTgyMDJhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bisyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNTI5MmQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bisyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzMpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzMpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0biszKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi50aGVtZS1kYXJrIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bis0KSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bis0KSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rNCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4udGhlbWUtZGFyayBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzIC5jb25maXJtYXRpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzZjRhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5zdGF0dXMgLmNvbmZpcm1hdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNjNhM2U7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5zdGF0dXMgLmNvbmZpcm1hdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2RjZGM7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cyAuY29uZmlybWF0aW9uIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzIC5jb25maXJtYXRpb24gLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzIC5jb25maXJtYXRpb24gLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5sb2NrLXRyYW5zYWN0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAubG9jay10cmFuc2FjdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5sb2NrLXRyYW5zYWN0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDsgfVxuXG4udGhlbWUtZGFyayBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzLnNlbmQgLnN0YXR1cy10cmFuc2FjdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cy5zZW5kIC5zdGF0dXMtdHJhbnNhY3Rpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzLnNlbmQgLnN0YXR1cy10cmFuc2FjdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cy5yZWNlaXZlZCAuc3RhdHVzLXRyYW5zYWN0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzLnJlY2VpdmVkIC5zdGF0dXMtdHJhbnNhY3Rpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzLnJlY2VpdmVkIC5zdGF0dXMtdHJhbnNhY3Rpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLm5ldywgLnRoZW1lLWRhcmsgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24uYWxlcnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLm5ldywgLnRoZW1lLWdyYXkgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24uYWxlcnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5uZXcsIC50aGVtZS13aGl0ZSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5hbGVydCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24ucHVyY2hhc2UsIC50aGVtZS1kYXJrIGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLnNlbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLnB1cmNoYXNlLCAudGhlbWUtZ3JheSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5zZWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24ucHVyY2hhc2UsIC50aGVtZS13aGl0ZSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5zZWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLnB1cmNoYXNlLXNlbGVjdCB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc2VsZWN0IHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc2VsZWN0IHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc2VsZWN0IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc3RhdGVzIHtcbiAgY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zdGF0ZXMge1xuICBjb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zdGF0ZXMge1xuICBjb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLmFkZGl0aW9uYWwtZGV0YWlscyB7XG4gIGJvcmRlcjogMC4ycmVtIHNvbGlkICMyYjM2NDQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5hZGRpdGlvbmFsLWRldGFpbHMge1xuICBib3JkZXI6IDAuMnJlbSBzb2xpZCAjMmYzNDM4OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLmFkZGl0aW9uYWwtZGV0YWlscyB7XG4gIGJvcmRlcjogMC4ycmVtIHNvbGlkICNlYmViZWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXB1cmNoYXNlIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzZjRhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM2M2EzZTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNkY2RjOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1wdXJjaGFzZSAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5wcm9ncmVzcy1iYXItZnVsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXB1cmNoYXNlIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIgLnByb2dyZXNzLWJhci1mdWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIgLnByb2dyZXNzLWJhci1mdWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG5hcHAtbWVzc2FnZXMgdGFibGUgdGJvZHkgdHIgdGQ6Zmlyc3QtY2hpbGQgc3BhbiB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tZXNzYWdlcyB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1lc3NhZ2VzIHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1lc3NhZ2VzIHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtdHlwaW5nLW1lc3NhZ2UgLmhlYWQgLmludGVybG9jdXRvciB7XG4gIGNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC10eXBpbmctbWVzc2FnZSAuaGVhZCAuaW50ZXJsb2N1dG9yIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10eXBpbmctbWVzc2FnZSAuaGVhZCAuaW50ZXJsb2N1dG9yIHtcbiAgY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5kYXRlIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5kYXRlIHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuZGF0ZSB7XG4gIGNvbG9yOiAjYTBhNWFiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYubXkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmEzNTQ0OyB9XG5cbi50aGVtZS1ncmF5IGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYubXkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzAzNjNjOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2Lm15IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfVxuXG5hcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2Lm15OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogLTEuMXJlbTtcbiAgYm9yZGVyOiAxLjJyZW0gc29saWQgdHJhbnNwYXJlbnQ7IH1cbiAgLnRoZW1lLWRhcmsgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5teTpiZWZvcmUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICMyYTM1NDQ7IH1cbiAgLnRoZW1lLWdyYXkgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5teTpiZWZvcmUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICMzMDM2M2M7IH1cbiAgLnRoZW1lLXdoaXRlIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYubXk6YmVmb3JlIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjZmZmOyB9XG5cbi50aGVtZS1kYXJrIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuYnVkZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTgyMDJhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuYnVkZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjUyOTJkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VkZWRlZDsgfVxuXG5hcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IC0xLjFyZW07XG4gIHRvcDogMDtcbiAgYm9yZGVyOiAxLjJyZW0gc29saWQgdHJhbnNwYXJlbnQ7IH1cbiAgLnRoZW1lLWRhcmsgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5idWRkeTphZnRlciB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogIzE4MjAyYTsgfVxuICAudGhlbWUtZ3JheSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5OmFmdGVyIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjMjUyOTJkOyB9XG4gIC50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5OmFmdGVyIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjZWRlZGVkOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zdGFraW5nIC5jaGFydC1oZWFkZXIgLmdlbmVyYWwgLmxhYmVsIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuZ2VuZXJhbCAubGFiZWwge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuZ2VuZXJhbCAubGFiZWwge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc3Rha2luZyAuY2hhcnQtaGVhZGVyIC5nZW5lcmFsIC5vcHRpb25zIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuZ2VuZXJhbCAub3B0aW9ucyB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc3Rha2luZyAuY2hhcnQtaGVhZGVyIC5nZW5lcmFsIC5vcHRpb25zIHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuc2VsZWN0ZWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBmbGV4LWdyb3c6IDE7XG4gIGZvbnQtc2l6ZTogMS42cmVtOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC50aXRsZSB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC50aXRsZSB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAudGl0bGUge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAub3B0aW9ucyBidXR0b24ge1xuICBjb2xvcjogI2UwZTBlMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJiMzY0NDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAub3B0aW9ucyBidXR0b24ge1xuICBjb2xvcjogI2UwZTBlMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLm9wdGlvbnMgYnV0dG9uIHtcbiAgY29sb3I6ICM0MzQ1NGI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLm9wdGlvbnMgYnV0dG9uLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLm9wdGlvbnMgYnV0dG9uLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MTU5NjA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC5vcHRpb25zIGJ1dHRvbi5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB9XG5cbi5pbnB1dC1ibG9jay1hbGlhcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICAuaW5wdXQtYmxvY2stYWxpYXMgLmFsaWFzLWRyb3Bkb3duIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA2LjVyZW07XG4gICAgbWF4LWhlaWdodDogMTByZW07XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgd2lkdGg6IDEwMCU7IH1cbiAgICAudGhlbWUtZGFyayAuaW5wdXQtYmxvY2stYWxpYXMgLmFsaWFzLWRyb3Bkb3duIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxNzFlMjc7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS1ncmF5IC5pbnB1dC1ibG9jay1hbGlhcyAuYWxpYXMtZHJvcGRvd24ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jay1hbGlhcyAuYWxpYXMtZHJvcGRvd24ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjtcbiAgICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gICAgLmlucHV0LWJsb2NrLWFsaWFzIC5hbGlhcy1kcm9wZG93biBkaXYge1xuICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICBwYWRkaW5nOiAxcmVtOyB9XG4gICAgICAudGhlbWUtZGFyayAuaW5wdXQtYmxvY2stYWxpYXMgLmFsaWFzLWRyb3Bkb3duIGRpdjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTgsIDY5LCA4NSwgMC41KTsgfVxuICAgICAgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrLWFsaWFzIC5hbGlhcy1kcm9wZG93biBkaXY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDU4LCA2MiwgNjYsIDAuNSk7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAuaW5wdXQtYmxvY2stYWxpYXMgLmFsaWFzLWRyb3Bkb3duIGRpdjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjQwLCAyNDAsIDI0MCwgMC41KTsgfVxuXG4uaGVhZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBmb250LXNpemU6IDEuM3JlbTtcbiAgcGFkZGluZzogMCAzcmVtO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAzcmVtOyB9XG4gIC50aGVtZS1kYXJrIC5oZWFkIHtcbiAgICBjb2xvcjogIzRkYjFmZjsgfVxuICAudGhlbWUtZ3JheSAuaGVhZCB7XG4gICAgY29sb3I6ICM0MmE1ZjU7IH1cbiAgLnRoZW1lLXdoaXRlIC5oZWFkIHtcbiAgICBjb2xvcjogIzJjOTVmMTsgfVxuICAuaGVhZCAuYnJlYWRjcnVtYnMgPiBzcGFuOm5vdCg6bGFzdC1jaGlsZCksIC5oZWFkIC5icmVhZGNydW1icyBhOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuICAgIG91dGxpbmUtc3R5bGU6IG5vbmU7IH1cbiAgICAuaGVhZCAuYnJlYWRjcnVtYnMgPiBzcGFuOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIsIC5oZWFkIC5icmVhZGNydW1icyBhOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwLjVyZW07XG4gICAgICByaWdodDogLTEuNXJlbTtcbiAgICAgIHdpZHRoOiAwLjlyZW07XG4gICAgICBoZWlnaHQ6IDAuOXJlbTtcbiAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9hcnJvdy1yaWdodC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgICBtYXNrLXNpemU6IGNvdmVyOyB9XG4gICAgICAudGhlbWUtZGFyayAuaGVhZCAuYnJlYWRjcnVtYnMgPiBzcGFuOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIsIC50aGVtZS1kYXJrIC5oZWFkIC5icmVhZGNydW1icyBhOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG4gICAgICAudGhlbWUtZ3JheSAuaGVhZCAuYnJlYWRjcnVtYnMgPiBzcGFuOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIsIC50aGVtZS1ncmF5IC5oZWFkIC5icmVhZGNydW1icyBhOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLmhlYWQgLmJyZWFkY3J1bWJzID4gc3Bhbjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyLCAudGhlbWUtd2hpdGUgLmhlYWQgLmJyZWFkY3J1bWJzIGE6bm90KDpsYXN0LWNoaWxkKTphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cbiAgLmhlYWQgLmJhY2stYnRuIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgY29sb3I6ICM0ZGIxZmY7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuM3JlbTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGhlaWdodDogYXV0bzsgfVxuICAgIC5oZWFkIC5iYWNrLWJ0biAuaWNvbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuN3JlbTtcbiAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9iYWNrLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICAgIHdpZHRoOiAwLjlyZW07XG4gICAgICBoZWlnaHQ6IDAuOXJlbTsgfVxuICAgICAgLnRoZW1lLWRhcmsgLmhlYWQgLmJhY2stYnRuIC5pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuICAgICAgLnRoZW1lLWdyYXkgLmhlYWQgLmJhY2stYnRuIC5pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC5oZWFkIC5iYWNrLWJ0biAuaWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnNjcm9sbGVkLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTsgfVxuXG4uc2Nyb2xsZWQtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfVxuXG4uc2Nyb2xsZWQtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU2NTc2O1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6IDAuMjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTsgfVxuXG4uc2Nyb2xsZWQtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU2NTc2OyB9XG5cbnRhYmxlIHtcbiAgZm9udC1zaXplOiAxLjNyZW07XG4gIHdpZHRoOiAxMDAlOyB9XG4gIHRhYmxlIHRoZWFkIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyB9XG4gICAgLnRoZW1lLWRhcmsgdGFibGUgdGhlYWQge1xuICAgICAgY29sb3I6ICM1NTY1NzY7IH1cbiAgICAudGhlbWUtZ3JheSB0YWJsZSB0aGVhZCB7XG4gICAgICBjb2xvcjogIzU2NWM2MjsgfVxuICAgIC50aGVtZS13aGl0ZSB0YWJsZSB0aGVhZCB7XG4gICAgICBjb2xvcjogI2EwYTVhYjsgfVxuICAgIHRhYmxlIHRoZWFkIHRyIHtcbiAgICAgIGhlaWdodDogNHJlbTsgfVxuICAgICAgdGFibGUgdGhlYWQgdHIgdGgge1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOyB9XG4gICAgICAgIHRhYmxlIHRoZWFkIHRyIHRoOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDNyZW07IH1cbiAgICAgICAgdGFibGUgdGhlYWQgdHIgdGg6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogM3JlbTsgfVxuICB0YWJsZSB0Ym9keSB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDsgfVxuICAgIC50aGVtZS1kYXJrIHRhYmxlIHRib2R5IHtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLWdyYXkgdGFibGUgdGJvZHkge1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtd2hpdGUgdGFibGUgdGJvZHkge1xuICAgICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgICB0YWJsZSB0Ym9keSB0ciB7XG4gICAgICBoZWlnaHQ6IDMuNXJlbTsgfVxuICAgICAgLnRoZW1lLWRhcmsgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTgyMDJhOyB9XG4gICAgICAudGhlbWUtZ3JheSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyNTI5MmQ7IH1cbiAgICAgIC50aGVtZS13aGl0ZSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7IH1cbiAgICAgIHRhYmxlIHRib2R5IHRyIHRkIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuN3JlbTtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBtYXgtd2lkdGg6IDIwcmVtOyB9XG4gICAgICAgIHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDNyZW07IH1cbiAgICAgICAgdGFibGUgdGJvZHkgdHIgdGQ6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogM3JlbTsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1MaWdodC50dGYpO1xuICBmb250LXdlaWdodDogMzAwOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogT3BlblNhbnM7XG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLVJlZ3VsYXIudHRmKTtcbiAgZm9udC13ZWlnaHQ6IDQwMDsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1TZW1pQm9sZC50dGYpO1xuICBmb250LXdlaWdodDogNjAwOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogT3BlblNhbnM7XG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLUJvbGQudHRmKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1FeHRyYUJvbGQudHRmKTtcbiAgZm9udC13ZWlnaHQ6IDgwMDsgfVxuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEwcHg7IH1cblxuYm9keSB7XG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxLjZyZW07XG4gIHdpZHRoOiAxMDB2dztcbiAgaGVpZ2h0OiAxMDB2aDsgfVxuICBib2R5LnRoZW1lLWRhcmsge1xuICAgIGJhY2tncm91bmQ6ICMxMzE5MjEgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWRhcmsucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsgfVxuICBib2R5LnRoZW1lLWdyYXkge1xuICAgIGJhY2tncm91bmQ6ICMxMDE0MTcgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWdyYXkucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsgfVxuICBib2R5LnRoZW1lLXdoaXRlIHtcbiAgICBiYWNrZ3JvdW5kOiAjZWVlZWVlIHVybChcImFzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC13aGl0ZS5wbmdcIikgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOyB9XG4gIGJvZHkgYXBwLXJvb3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlOyB9XG5cbi51cGRhdGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAuaWNvbiB7XG4gIG1hc2s6IHVybChhc3NldHMvaWNvbnMvdXBkYXRlLWFsZXJ0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjsgfVxuIiwiLm5nLXNlbGVjdC5uZy1zZWxlY3Qtb3BlbmVkPi5uZy1zZWxlY3QtY29udGFpbmVye2JhY2tncm91bmQ6I2ZmZjtib3JkZXItY29sb3I6I2IzYjNiMyAjY2NjICNkOWQ5ZDl9Lm5nLXNlbGVjdC5uZy1zZWxlY3Qtb3BlbmVkPi5uZy1zZWxlY3QtY29udGFpbmVyOmhvdmVye2JveC1zaGFkb3c6bm9uZX0ubmctc2VsZWN0Lm5nLXNlbGVjdC1vcGVuZWQ+Lm5nLXNlbGVjdC1jb250YWluZXIgLm5nLWFycm93e3RvcDotMnB4O2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjOTk5O2JvcmRlci13aWR0aDowIDVweCA1cHh9Lm5nLXNlbGVjdC5uZy1zZWxlY3Qtb3BlbmVkPi5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy1hcnJvdzpob3Zlcntib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzMzM30ubmctc2VsZWN0Lm5nLXNlbGVjdC1vcGVuZWQubmctc2VsZWN0LWJvdHRvbT4ubmctc2VsZWN0LWNvbnRhaW5lcntib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0ubmctc2VsZWN0Lm5nLXNlbGVjdC1vcGVuZWQubmctc2VsZWN0LXRvcD4ubmctc2VsZWN0LWNvbnRhaW5lcntib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0ubmctc2VsZWN0Lm5nLXNlbGVjdC1mb2N1c2VkOm5vdCgubmctc2VsZWN0LW9wZW5lZCk+Lm5nLXNlbGVjdC1jb250YWluZXJ7Ym9yZGVyLWNvbG9yOiMwMDdlZmY7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwwLjA3NSksMCAwIDAgM3B4IHJnYmEoMCwxMjYsMjU1LDAuMSl9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtZGlzYWJsZWQ+Lm5nLXNlbGVjdC1jb250YWluZXJ7YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5fS5uZy1zZWxlY3QgLm5nLWhhcy12YWx1ZSAubmctcGxhY2Vob2xkZXJ7ZGlzcGxheTpub25lfS5uZy1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQgI2NjYzttaW4taGVpZ2h0OjM2cHg7YWxpZ24taXRlbXM6Y2VudGVyfS5uZy1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXI6aG92ZXJ7Ym94LXNoYWRvdzowIDFweCAwIHJnYmEoMCwwLDAsMC4wNil9Lm5nLXNlbGVjdCAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVye2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nLWxlZnQ6MTBweH1bZGlyPVwicnRsXCJdIC5uZy1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lcntwYWRkaW5nLXJpZ2h0OjEwcHg7cGFkZGluZy1sZWZ0OjB9Lm5nLXNlbGVjdCAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy1wbGFjZWhvbGRlcntjb2xvcjojOTk5fS5uZy1zZWxlY3Qubmctc2VsZWN0LXNpbmdsZSAubmctc2VsZWN0LWNvbnRhaW5lcntoZWlnaHQ6MzZweH0ubmctc2VsZWN0Lm5nLXNlbGVjdC1zaW5nbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctaW5wdXR7dG9wOjVweDtsZWZ0OjA7cGFkZGluZy1sZWZ0OjEwcHg7cGFkZGluZy1yaWdodDo1MHB4fVtkaXI9XCJydGxcIl0gLm5nLXNlbGVjdC5uZy1zZWxlY3Qtc2luZ2xlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLWlucHV0e3BhZGRpbmctcmlnaHQ6MTBweDtwYWRkaW5nLWxlZnQ6NTBweH0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZS5uZy1zZWxlY3QtZGlzYWJsZWQ+Lm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWV7YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5O2JvcmRlcjoxcHggc29saWQgI2U2ZTZlNn0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZS5uZy1zZWxlY3QtZGlzYWJsZWQ+Lm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUgLm5nLXZhbHVlLWxhYmVse3BhZGRpbmc6MCA1cHh9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lcntwYWRkaW5nLXRvcDo1cHg7cGFkZGluZy1sZWZ0OjdweH1bZGlyPVwicnRsXCJdIC5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXJ7cGFkZGluZy1yaWdodDo3cHg7cGFkZGluZy1sZWZ0OjB9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWV7Zm9udC1zaXplOi45ZW07bWFyZ2luLWJvdHRvbTo1cHg7YmFja2dyb3VuZC1jb2xvcjojZWJmNWZmO2JvcmRlci1yYWRpdXM6MnB4O21hcmdpbi1yaWdodDo1cHh9W2Rpcj1cInJ0bFwiXSAubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy12YWx1ZXttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDo1cHh9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUubmctdmFsdWUtZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5fS5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVlLm5nLXZhbHVlLWRpc2FibGVkIC5uZy12YWx1ZS1sYWJlbHtwYWRkaW5nLWxlZnQ6NXB4fVtkaXI9XCJydGxcIl0gLm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUubmctdmFsdWUtZGlzYWJsZWQgLm5nLXZhbHVlLWxhYmVse3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6NXB4fS5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVlIC5uZy12YWx1ZS1sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjFweCA1cHh9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUgLm5nLXZhbHVlLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzoxcHggNXB4fS5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVlIC5uZy12YWx1ZS1pY29uOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2QxZThmZn0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy12YWx1ZSAubmctdmFsdWUtaWNvbi5sZWZ0e2JvcmRlci1yaWdodDoxcHggc29saWQgI2I4ZGJmZn1bZGlyPVwicnRsXCJdIC5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVlIC5uZy12YWx1ZS1pY29uLmxlZnR7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNiOGRiZmY7Ym9yZGVyLXJpZ2h0Om5vbmV9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUgLm5nLXZhbHVlLWljb24ucmlnaHR7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNiOGRiZmZ9W2Rpcj1cInJ0bFwiXSAubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy12YWx1ZSAubmctdmFsdWUtaWNvbi5yaWdodHtib3JkZXItbGVmdDowO2JvcmRlci1yaWdodDoxcHggc29saWQgI2I4ZGJmZn0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy1pbnB1dHtwYWRkaW5nOjAgMCAzcHggM3B4fVtkaXI9XCJydGxcIl0gLm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctaW5wdXR7cGFkZGluZzowIDNweCAzcHggMH0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy1wbGFjZWhvbGRlcnt0b3A6NXB4O3BhZGRpbmctYm90dG9tOjVweDtwYWRkaW5nLWxlZnQ6M3B4fVtkaXI9XCJydGxcIl0gLm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctcGxhY2Vob2xkZXJ7cGFkZGluZy1yaWdodDozcHg7cGFkZGluZy1sZWZ0OjB9Lm5nLXNlbGVjdCAubmctY2xlYXItd3JhcHBlcntjb2xvcjojOTk5fS5uZy1zZWxlY3QgLm5nLWNsZWFyLXdyYXBwZXI6aG92ZXIgLm5nLWNsZWFye2NvbG9yOiNEMDAyMUJ9Lm5nLXNlbGVjdCAubmctc3Bpbm5lci16b25le3BhZGRpbmc6NXB4IDVweCAwIDB9W2Rpcj1cInJ0bFwiXSAubmctc2VsZWN0IC5uZy1zcGlubmVyLXpvbmV7cGFkZGluZzo1cHggMCAwIDVweH0ubmctc2VsZWN0IC5uZy1hcnJvdy13cmFwcGVye3dpZHRoOjI1cHg7cGFkZGluZy1yaWdodDo1cHh9W2Rpcj1cInJ0bFwiXSAubmctc2VsZWN0IC5uZy1hcnJvdy13cmFwcGVye3BhZGRpbmctbGVmdDo1cHg7cGFkZGluZy1yaWdodDowfS5uZy1zZWxlY3QgLm5nLWFycm93LXdyYXBwZXI6aG92ZXIgLm5nLWFycm93e2JvcmRlci10b3AtY29sb3I6IzY2Nn0ubmctc2VsZWN0IC5uZy1hcnJvdy13cmFwcGVyIC5uZy1hcnJvd3tib3JkZXItY29sb3I6Izk5OSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjVweCA1cHggMi41cHh9Lm5nLWRyb3Bkb3duLXBhbmVse2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym94LXNoYWRvdzowIDFweCAwIHJnYmEoMCwwLDAsMC4wNik7bGVmdDowfS5uZy1kcm9wZG93bi1wYW5lbC5uZy1zZWxlY3QtYm90dG9te3RvcDoxMDAlO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjRweDtib3JkZXItdG9wLWNvbG9yOiNlNmU2ZTY7bWFyZ2luLXRvcDotMXB4fS5uZy1kcm9wZG93bi1wYW5lbC5uZy1zZWxlY3QtYm90dG9tIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4fS5uZy1kcm9wZG93bi1wYW5lbC5uZy1zZWxlY3QtdG9we2JvdHRvbToxMDAlO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjRweDtib3JkZXItYm90dG9tLWNvbG9yOiNlNmU2ZTY7bWFyZ2luLWJvdHRvbTotMXB4fS5uZy1kcm9wZG93bi1wYW5lbC5uZy1zZWxlY3QtdG9wIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uOmZpcnN0LWNoaWxke2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjRweH0ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLWhlYWRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCAjY2NjO3BhZGRpbmc6NXB4IDdweH0ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLWZvb3Rlcntib3JkZXItdG9wOjFweCBzb2xpZCAjY2NjO3BhZGRpbmc6NXB4IDdweH0ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRncm91cHt1c2VyLXNlbGVjdDpub25lO3BhZGRpbmc6OHB4IDEwcHg7Zm9udC13ZWlnaHQ6NTAwO2NvbG9yOnJnYmEoMCwwLDAsMC41NCk7Y3Vyc29yOnBvaW50ZXJ9Lm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0Z3JvdXAubmctb3B0aW9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGdyb3VwLm5nLW9wdGlvbi1tYXJrZWR7YmFja2dyb3VuZC1jb2xvcjojZjVmYWZmfS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGdyb3VwLm5nLW9wdGlvbi1zZWxlY3RlZCwubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRncm91cC5uZy1vcHRpb24tc2VsZWN0ZWQubmctb3B0aW9uLW1hcmtlZHtiYWNrZ3JvdW5kLWNvbG9yOiNlYmY1ZmY7Zm9udC13ZWlnaHQ6NjAwfS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6cmdiYSgwLDAsMCwwLjg3KTtwYWRkaW5nOjhweCAxMHB4fS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tc2VsZWN0ZWQsLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uLm5nLW9wdGlvbi1zZWxlY3RlZC5uZy1vcHRpb24tbWFya2Vke2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZWJmNWZmfS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tc2VsZWN0ZWQgLm5nLW9wdGlvbi1sYWJlbCwubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ubmctb3B0aW9uLXNlbGVjdGVkLm5nLW9wdGlvbi1tYXJrZWQgLm5nLW9wdGlvbi1sYWJlbHtmb250LXdlaWdodDo2MDB9Lm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uLm5nLW9wdGlvbi1tYXJrZWR7YmFja2dyb3VuZC1jb2xvcjojZjVmYWZmO2NvbG9yOiMzMzN9Lm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uLm5nLW9wdGlvbi1kaXNhYmxlZHtjb2xvcjojY2NjfS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tY2hpbGR7cGFkZGluZy1sZWZ0OjIycHh9W2Rpcj1cInJ0bFwiXSAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ubmctb3B0aW9uLWNoaWxke3BhZGRpbmctcmlnaHQ6MjJweDtwYWRkaW5nLWxlZnQ6MH0ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24gLm5nLXRhZy1sYWJlbHtmb250LXNpemU6ODAlO2ZvbnQtd2VpZ2h0OjQwMDtwYWRkaW5nLXJpZ2h0OjVweH1bZGlyPVwicnRsXCJdIC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbiAubmctdGFnLWxhYmVse3BhZGRpbmctbGVmdDo1cHg7cGFkZGluZy1yaWdodDowfVtkaXI9XCJydGxcIl0gLm5nLWRyb3Bkb3duLXBhbmVse2RpcmVjdGlvbjpydGw7dGV4dC1hbGlnbjpyaWdodH1cbiIsIi8vKiAqKioqKioqIHJlc2V0ICYgbm9ybWFsaXplICoqKioqKiogICovL1xyXG5cclxuLy8gYm94LXNpemluZyB0aGUgc2FtZSBmb3IgYWxsIGVsZW1lbnRzXHJcbmh0bWwge1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG4qLCAqOmJlZm9yZSwgKjphZnRlciB7XHJcbiAgYm94LXNpemluZzogaW5oZXJpdDtcclxuICAtd2Via2l0LWJveC1zaXppbmc6IGluaGVyaXQ7XHJcbiAgLW1vei1ib3gtc2l6aW5nOiBpbmhlcml0O1xyXG4gIG1hcmdpbjogMDtcclxuICBwYWRkaW5nOiAwO1xyXG4gIEBpbmNsdWRlIHVuU2VsZWN0O1xyXG59XHJcblxyXG5odG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXHJcbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcclxuYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxyXG5kZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXHJcbnNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXHJcbmIsIHUsIGksIGNlbnRlcixcclxuZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcclxuZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXHJcbnRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxyXG5hcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcclxuZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxyXG5tZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcclxudGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcclxuICAgIGJvcmRlcjogMDtcclxuICAgIGZvbnQtc2l6ZTogMTAwJTtcclxuICAgIGZvbnQ6IGluaGVyaXQ7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XHJcbn1cclxuYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSxcclxuZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWVudSwgbmF2LCBzZWN0aW9uIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG5ib2R5IHtcclxuICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxufVxyXG5vbCwgdWwge1xyXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcclxufVxyXG5ibG9ja3F1b3RlLCBxIHtcclxuICAgIHF1b3Rlczogbm9uZTtcclxufVxyXG5ibG9ja3F1b3RlOmJlZm9yZSwgYmxvY2txdW90ZTphZnRlcixcclxucTpiZWZvcmUsIHE6YWZ0ZXIge1xyXG4gICAgY29udGVudDogbm9uZTtcclxufVxyXG5cclxuLy90YWJsZVxyXG50YWJsZSB7XHJcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gICAgYm9yZGVyLXNwYWNpbmc6IDA7XHJcbn1cclxudGQsXHJcbnRoIHtcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcblxyXG4vL2Zvcm1zIGVsZW1lbnRcclxuaW5wdXQge1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgICY6LXdlYmtpdC1hdXRvZmlsbCB7XHJcbiAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMTAwMHB4IHdoaXRlIGluc2V0O1xyXG4gICAgfVxyXG59XHJcblxyXG5idXR0b24sXHJcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcclxuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxyXG5pbnB1dFt0eXBlPVwic3VibWl0XCJdIHtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgb3V0bGluZTogbm9uZTtcclxufVxyXG5idXR0b25bZGlzYWJsZWRdLFxyXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XHJcbiAgY3Vyc29yOiBkZWZhdWx0O1xyXG59XHJcbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcclxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xyXG4gIGJvcmRlcjogMDtcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcbmlucHV0IHtcclxuICBsaW5lLWhlaWdodDogbm9ybWFsO1xyXG59XHJcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xyXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xyXG59XHJcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXHJcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcclxufVxyXG5cclxuXHJcbi8vbGlua1xyXG5hIHtcclxuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcblx0JjphY3RpdmUsXHJcblx0Jjpob3ZlcixcclxuXHQmOmZvY3VzIHtcclxuXHRcdG91dGxpbmU6IDA7XHJcblx0fVxyXG59XHJcblxyXG5pIHsgZm9udC1zdHlsZTogaXRhbGljOyB9XHJcbmIsIHN0cm9uZyB7IGZvbnQtd2VpZ2h0OiA3MDA7ICAgfVxyXG5cclxuLy8gaW1hZ2VzXHJcbmltZyB7XHJcblx0d2lkdGg6IGF1dG87XHJcblx0bWF4LXdpZHRoOiAxMDAlO1xyXG5cdGhlaWdodDogYXV0bztcclxuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG5cdGJvcmRlcjogMDtcclxufVxyXG5cclxuLmhpZGRlbiB7XHJcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG59XHJcbiIsIi5hcHAtY29udGVudCB7XHJcblxyXG4gIC5wcmVsb2FkZXIge1xyXG5cclxuICAgIC5sb2FkaW5nLWJhciB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYnV0dG9uIHtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xyXG4gIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBwYWRkaW5nOiAwIDFyZW07XHJcbiAgaGVpZ2h0OiA0LjJyZW07XHJcblxyXG4gICY6ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pLCBcclxuICAmLmJsdWUtYnV0dG9uX3Jlc2V0e1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoZGlzYWJsZWRCdXR0b25CYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICBjb2xvcjogdGhlbWVkKGFsdGVybmF0aXZlVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChkaXNhYmxlZEJ1dHRvbkhvdmVyQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjpmb2N1cyB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoZGlzYWJsZWRCdXR0b25Gb2N1c0NvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlQnV0dG9uQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChhbHRlcm5hdGl2ZVRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZUJ1dHRvbkhvdmVyQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjpmb2N1cyB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZUJ1dHRvbkZvY3VzQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChncmVlbkJ1dHRvbkJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYWx0ZXJuYXRpdmVUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGdyZWVuQnV0dG9uSG92ZXJDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmOmZvY3VzIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChncmVlbkJ1dHRvbkZvY3VzQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodHVycXVvaXNlQnV0dG9uQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChhbHRlcm5hdGl2ZVRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodHVycXVvaXNlQnV0dG9uSG92ZXJDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmOmZvY3VzIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZCh0dXJxdW9pc2VCdXR0b25Gb2N1c0NvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi50cmFuc3BhcmVudC1idXR0b24ge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGJvcmRlcjogMC4ycmVtIHNvbGlkIHRoZW1lZCh0cmFuc3BhcmVudEJ1dHRvbkJvcmRlckNvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAuaWNvbiB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcclxuICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2NvbXBsZXRlLXRlc3R3YWxsZXQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB3aWR0aDogMS43cmVtO1xyXG4gICAgICBoZWlnaHQ6IDEuN3JlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4uaW5wdXQtYmxvY2sge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBtYXJnaW4tYm90dG9tOiAwLjRyZW07XHJcblxyXG4gIC53cmFwLWxhYmVsIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gICAgbWluLWhlaWdodDogMi40cmVtO1xyXG4gIH1cclxuXHJcbiAgbGFiZWwge1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi40cmVtO1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlucHV0W3R5cGU9J3RleHQnXSwgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSwgc2VsZWN0IHtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgIHBhZGRpbmc6IDAgMXJlbTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiA0LjJyZW07XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChpbnB1dEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLnRleHRhcmVhIHtcclxuICAgIGhlaWdodDogYXV0bztcclxuXHJcbiAgICB0ZXh0YXJlYSB7XHJcbiAgICAgIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBmb250LXNpemU6IDEuNHJlbTtcclxuICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgICAgcGFkZGluZzogMXJlbTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1pbi13aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICBtaW4taGVpZ2h0OiA3LjVyZW07XHJcbiAgICAgIG1heC1oZWlnaHQ6IDcuNXJlbTtcclxuICAgICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgICAgIHJlc2l6ZTogbm9uZTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChpbnB1dEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmVycm9yLWJsb2NrIHtcclxuICAgIGZvbnQtc2l6ZTogMXJlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjRyZW07XHJcbiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcclxuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKHJlZFRleHRDb2xvcik7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uZXJyb3ItdGV4dCB7XHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBjb2xvcjogdGhlbWVkKHJlZFRleHRDb2xvcik7XHJcbiAgfVxyXG59XHJcblxyXG5pbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvIHtcclxuXHJcbiAgJiArIGxhYmVsIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIHBhZGRpbmctbGVmdDogMi40cmVtO1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSB1blNlbGVjdDtcclxuICB9XHJcblxyXG4gICY6bm90KGNoZWNrZWQpIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIG9wYWNpdHk6IDA7XHJcblxyXG4gICAgJiArIGxhYmVsIHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgfVxyXG5cclxuICAgICYgKyBsYWJlbDpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiAnJztcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDAuN3JlbTtcclxuICAgICAgbGVmdDogMDtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgd2lkdGg6IDEuNHJlbTtcclxuICAgICAgaGVpZ2h0OiAxLjRyZW07XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmICsgbGFiZWw6YWZ0ZXIge1xyXG4gICAgICBjb250ZW50OiAnJztcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDFyZW07XHJcbiAgICAgIGxlZnQ6IDAuM3JlbTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICB3aWR0aDogMC44cmVtO1xyXG4gICAgICBoZWlnaHQ6IDAuOHJlbTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjpjaGVja2VkIHtcclxuXHJcbiAgICAmICsgbGFiZWw6YWZ0ZXIge1xyXG4gICAgICBvcGFjaXR5OiAxO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveCB7XHJcblxyXG4gICYgKyBsYWJlbCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDMuNnJlbTtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgdW5TZWxlY3Q7XHJcbiAgfVxyXG5cclxuICAmOm5vdChjaGVja2VkKSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDUwJTtcclxuICAgIGxlZnQ6IDEuNnJlbTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuXHJcbiAgICAmICsgbGFiZWwge1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB9XHJcblxyXG4gICAgJiArIGxhYmVsOmJlZm9yZSB7XHJcbiAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICBsZWZ0OiAxLjZyZW07XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIHdpZHRoOiAxLjRyZW07XHJcbiAgICAgIGhlaWdodDogMS40cmVtO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyOiAwLjFyZW0gc29saWQgdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmOmNoZWNrZWQge1xyXG5cclxuICAgICYgKyBsYWJlbDpiZWZvcmUge1xyXG4gICAgICBiYWNrZ3JvdW5kOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvY29tcGxldGUtdGVzdHdhbGxldC5zdmcpO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uc3dpdGNoIHtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoc3dpdGNoQmFja2dyb3VuZENvbG9yKTtcclxuICB9XHJcblxyXG4gIC5jaXJjbGUge1xyXG5cclxuICAgICYub24ge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJi5vZmYge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnRhYmxlLXRvb2x0aXAge1xyXG4gIHBhZGRpbmc6IDFyZW0gMnJlbTtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBiYWNrZ3JvdW5kOiB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcik7XHJcbiAgICBib3gtc2hhZG93OiB0aGVtZWQodG9vbHRpcFNoYWRvdyk7XHJcbiAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLnRvb2x0aXAtaW5uZXIge1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS44cmVtO1xyXG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXRvcCB7XHJcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTtcclxuXHJcbiAgICAmOmFmdGVyIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IC0xcmVtO1xyXG4gICAgICBsZWZ0OiBjYWxjKDUwJSAtIDAuNXJlbSk7XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC10b3AtbGVmdCB7XHJcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTtcclxuXHJcbiAgICAmOmFmdGVyIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IC0xcmVtO1xyXG4gICAgICBsZWZ0OiAwLjdyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtdG9wLXJpZ2h0IHtcclxuICAgIG1hcmdpbi10b3A6IC0xcmVtO1xyXG5cclxuICAgICY6YWZ0ZXIge1xyXG4gICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGJvdHRvbTogLTFyZW07XHJcbiAgICAgIHJpZ2h0OiAwLjdyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtYm90dG9tIHtcclxuICAgIG1hcmdpbi10b3A6IDFyZW07XHJcblxyXG4gICAgJjpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogLTFyZW07XHJcbiAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMC41cmVtKTtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0cmFuc3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLWJvdHRvbS1sZWZ0IHtcclxuICAgIG1hcmdpbi10b3A6IDFyZW07XHJcblxyXG4gICAgJjpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogLTFyZW07XHJcbiAgICAgIGxlZnQ6IDAuN3JlbTtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1ib3R0b20tcmlnaHQge1xyXG4gICAgbWFyZ2luLXRvcDogMXJlbTtcclxuXHJcbiAgICAmOmJlZm9yZSB7XHJcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAtMXJlbTtcclxuICAgICAgcmlnaHQ6IDAuN3JlbTtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1sZWZ0IHtcclxuICAgIG1hcmdpbi1sZWZ0OiAtMXJlbTtcclxuXHJcbiAgICAmOmFmdGVyIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IGNhbGMoNTAlIC0gMC41cmVtKTtcclxuICAgICAgcmlnaHQ6IC0xcmVtO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcclxuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtcmlnaHQge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07XHJcblxyXG4gICAgJjpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogY2FsYyg1MCUgLSAwLjVyZW0pO1xyXG4gICAgICBsZWZ0OiAtMXJlbTtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnRhYmxlLXRvb2x0aXAtZGltZW5zaW9ucyB7XHJcblxyXG4gIC50b29sdGlwLWlubmVyIHtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgbWF4LXdpZHRoOiAyMHJlbTtcclxuICAgIG1heC1oZWlnaHQ6IDEwcmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmJhbGFuY2UtdG9vbHRpcCB7XHJcbiAgcGFkZGluZzogMS4zcmVtO1xyXG5cclxuICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgIGJhY2tncm91bmQ6IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKTtcclxuICAgIGJveC1zaGFkb3c6IHRoZW1lZCh0b29sdGlwU2hhZG93KTtcclxuICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgfVxyXG5cclxuICAudG9vbHRpcC1pbm5lciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG5cclxuICAgIC5hdmFpbGFibGUge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAxLjdyZW07XHJcblxyXG4gICAgICBiIHtcclxuICAgICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmxvY2tlZCB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuN3JlbTtcclxuXHJcbiAgICAgIGIge1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAubGluayB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC10b3Age1xyXG4gICAgbWFyZ2luLXRvcDogLTFyZW07XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtYm90dG9tIHtcclxuICAgIG1hcmdpbi10b3A6IDFyZW07XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtbGVmdCB7XHJcbiAgICBtYXJnaW4tbGVmdDogLTFyZW07XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtcmlnaHQge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07XHJcbiAgfVxyXG59XHJcblxyXG4uYWNjb3VudC10b29sdGlwIHtcclxuXHJcbiAgLnRvb2x0aXAtaW5uZXIge1xyXG4gICAgd29yZC1icmVhazogYnJlYWstd29yZDtcclxuICAgIG1heC13aWR0aDogMThyZW07XHJcbiAgfVxyXG59XHJcblxyXG4uY29tbWVudC10b29sdGlwIHtcclxuXHJcbiAgLnRvb2x0aXAtaW5uZXIge1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xyXG4gICAgbWF4LXdpZHRoOiA1MHJlbTtcclxuICAgIG1heC1oZWlnaHQ6IDI1cmVtO1xyXG4gIH1cclxufVxyXG5cclxuLnVwZGF0ZS10b29sdGlwIHtcclxuICBwYWRkaW5nOiAxLjVyZW07XHJcblxyXG4gIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgYmFja2dyb3VuZDogdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgYm94LXNoYWRvdzogdGhlbWVkKHRvb2x0aXBTaGFkb3cpO1xyXG4gICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICB9XHJcblxyXG4gICYuaW1wb3J0YW50IHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZDogdGhlbWVkKHRvb2x0aXBJbXBvcnRhbnRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICBjb2xvcjogdGhlbWVkKGFjY291bnRNYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAmLm5nLXRvb2x0aXAtbGVmdC1ib3R0b20ge1xyXG5cclxuICAgICAgJjphZnRlciB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEltcG9ydGFudEJhY2tncm91bmRDb2xvcikgdGhlbWVkKHRvb2x0aXBJbXBvcnRhbnRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYubmctdG9vbHRpcC1yaWdodC1ib3R0b20ge1xyXG5cclxuICAgICAgJjpiZWZvcmUge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdGhlbWVkKHRvb2x0aXBJbXBvcnRhbnRCYWNrZ3JvdW5kQ29sb3IpIHRoZW1lZCh0b29sdGlwSW1wb3J0YW50QmFja2dyb3VuZENvbG9yKSB0cmFuc3BhcmVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYuY3JpdGljYWwge1xyXG4gICAgcGFkZGluZzogMi41cmVtO1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtZWQodG9vbHRpcENyaXRpY2FsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChhY2NvdW50TWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLnRvb2x0aXAtaW5uZXIge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgfVxyXG5cclxuICAgICYubmctdG9vbHRpcC1sZWZ0LWJvdHRvbSB7XHJcblxyXG4gICAgICAmOmFmdGVyIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRoZW1lZCh0b29sdGlwQ3JpdGljYWxCYWNrZ3JvdW5kQ29sb3IpIHRoZW1lZCh0b29sdGlwQ3JpdGljYWxCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYubmctdG9vbHRpcC1yaWdodC1ib3R0b20ge1xyXG5cclxuICAgICAgJjpiZWZvcmUge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdGhlbWVkKHRvb2x0aXBDcml0aWNhbEJhY2tncm91bmRDb2xvcikgdGhlbWVkKHRvb2x0aXBDcml0aWNhbEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudG9vbHRpcC1pbm5lciB7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjhyZW07XHJcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XHJcblxyXG4gICAgLnN0YW5kYXJkLXVwZGF0ZSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gICAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5pbXBvcnRhbnQtdXBkYXRlIHtcclxuICAgICAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjdyZW07XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKHRvb2x0aXBJbXBvcnRhbnRUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmNyaXRpY2FsLXVwZGF0ZSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gICAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLndyb25nLXRpbWUge1xyXG4gICAgICBmb250LXNpemU6IDEuNXJlbTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDIuN3JlbTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQodG9vbHRpcEltcG9ydGFudFRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuaWNvbiB7XHJcbiAgICAgIG1hcmdpbjogMS41cmVtIDA7XHJcbiAgICAgIHdpZHRoOiA1cmVtO1xyXG4gICAgICBoZWlnaHQ6IDVyZW07XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodG9vbHRpcENyaXRpY2FsVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLWxlZnQtYm90dG9tIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAtMS41cmVtO1xyXG5cclxuICAgICY6YWZ0ZXIge1xyXG4gICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGJvdHRvbTogMC42cmVtO1xyXG4gICAgICByaWdodDogLTFyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtcmlnaHQtYm90dG9tIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW07XHJcblxyXG4gICAgJjpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGJvdHRvbTogMC42cmVtO1xyXG4gICAgICBsZWZ0OiAtMXJlbTtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5uZ3gtY29udGV4dG1lbnUge1xyXG5cclxuICAuZHJvcGRvd24tbWVudSB7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoY2hhcnRPcHRpb25zQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgYm94LXNoYWRvdzogdGhlbWVkKHRvb2x0aXBTaGFkb3cpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbGkge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBmb250LWZhbWlseTogT3BlblNhbnMsIHNhbnMtc2VyaWY7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgfVxyXG5cclxuICBhIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgcGFkZGluZzogMC41ZW0gMWVtO1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGNoYXJ0T3B0aW9uc0hvdmVyQ29sb3IpO1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5uZy1zZWxlY3Qge1xyXG5cclxuICAmLmN1c3RvbS1zZWxlY3Qge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICAgLm5nLXNlbGVjdC1jb250YWluZXIge1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDA7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgZm9udC1zaXplOiAxLjRyZW07XHJcbiAgICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICAgIHBhZGRpbmc6IDAgMXJlbTtcclxuICAgICAgaGVpZ2h0OiA0LjJyZW07XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoaW5wdXRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5uZy12YWx1ZS1jb250YWluZXIge1xyXG4gICAgICAgIHBhZGRpbmc6IDA7XHJcblxyXG4gICAgICAgIC5uZy1pbnB1dCB7XHJcbiAgICAgICAgICB0b3A6IGF1dG87XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLm5nLWRyb3Bkb3duLXBhbmVsIHtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGlucHV0QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIHtcclxuXHJcbiAgICAgICAgLm5nLW9wdGlvbiB7XHJcbiAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcclxuICAgICAgICAgIHBhZGRpbmc6IDFyZW07XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChpbnB1dEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgJi5uZy1vcHRpb24tbWFya2VkIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChzZWxlY3RIb3ZlckNvbG9yKTtcclxuICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgJi5uZy1vcHRpb24tc2VsZWN0ZWQge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHNlbGVjdFNlbGVjdGVkQ29sb3IpO1xyXG4gICAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xyXG4gICAgICAgICAgd2lkdGg6IDFyZW07XHJcbiAgICAgICAgICBoZWlnaHQ6IDFyZW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xyXG4gICAgICAgICAgYm9yZGVyOiAwLjI1cmVtIHNvbGlkIHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1tb2RhbC1jb250YWluZXIge1xyXG5cclxuICAubW9kYWwge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtZWQobW9kYWxCYWNrZ3JvdW5kKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAuY29udGVudCB7XHJcblxyXG4gICAgICAuaWNvbi5lcnJvciB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHJlZFRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAuaWNvbi5zdWNjZXNzIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoZ3JlZW5UZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmljb24uaW5mbyB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5hY3Rpb24tYnV0dG9uIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKGFsdGVybmF0aXZlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5jbG9zZS1idXR0b24ge1xyXG5cclxuICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjbG9zZUJ1dHRvbkNvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIHtcclxuXHJcbiAgLnRhYmxlIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYm9yZGVyLXRvcDogMC4ycmVtIHNvbGlkIHRoZW1lZCh0cmFuc3BhcmVudEJ1dHRvbkJvcmRlckNvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAucm93IHtcclxuXHJcbiAgICAgIC5jZWxsIHtcclxuXHJcbiAgICAgICAgJi5sYWJlbCB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi52YWx1ZSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmtleS12YWx1ZSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtcHJvZ3Jlc3MtY29udGFpbmVyIHtcclxuXHJcbiAgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC5wcm9ncmVzcy1iYXIge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLnByb2dyZXNzLWJhci1mdWxsIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1vcGVuLXdhbGxldC1tb2RhbCB7XHJcblxyXG4gIC5tb2RhbCB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1lZChtb2RhbEJhY2tncm91bmQpO1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIkdGhlbWVzOiAoXHJcbiAgZGFyazogKFxyXG4gICAgYm9keUJhY2tncm91bmRDb2xvcjogIzEzMTkyMSxcclxuICAgIHNpZGViYXJCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjMsIDMxLCAzOSwgMSksXHJcbiAgICBzaWRlYmFyQm9yZGVyQ29sb3I6ICMxZjI4MzMsXHJcbiAgICBvbmxpbmVDb2xvcjogIzVjZGE5ZCxcclxuICAgIG9mZmxpbmVDb2xvcjogI2ZmNTI1MixcclxuICAgIGNvbnRlbnRCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KSxcclxuICAgIG1haW5UZXh0Q29sb3I6ICNlMGUwZTAsXHJcbiAgICBhbHRlcm5hdGl2ZVRleHRDb2xvcjogIzExMTkyMSxcclxuICAgIG9wdGlvbmFsVGV4dENvbG9yOiAjNTU2NTc2LFxyXG4gICAgYmx1ZVRleHRDb2xvcjogIzRkYjFmZixcclxuICAgIGdyZWVuVGV4dENvbG9yOiAjNWNkYTlkLFxyXG4gICAgb3JhbmdlVGV4dENvbG9yOiAjZmY2ZjAwLFxyXG4gICAgcmVkVGV4dENvbG9yOiAjZmY1MjUyLFxyXG4gICAgYmx1ZUJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzRkYjFmZixcclxuICAgIGJsdWVCdXR0b25Ib3ZlckNvbG9yOiAjODJkN2ZmLFxyXG4gICAgYmx1ZUJ1dHRvbkZvY3VzQ29sb3I6ICM1OWI1ZmQsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzljYWRiNyxcclxuICAgIGRpc2FibGVkQnV0dG9uSG92ZXJDb2xvcjogI2I3ZDFlMCxcclxuICAgIGRpc2FibGVkQnV0dG9uRm9jdXNDb2xvcjogI2E3YjljMixcclxuICAgIGdyZWVuQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjNWNkYTlkLFxyXG4gICAgZ3JlZW5CdXR0b25Ib3ZlckNvbG9yOiAjOGRmY2M2LFxyXG4gICAgZ3JlZW5CdXR0b25Gb2N1c0NvbG9yOiAjNjJlMGIyLFxyXG4gICAgdHVycXVvaXNlQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjNGRkMGUxLFxyXG4gICAgdHVycXVvaXNlQnV0dG9uSG92ZXJDb2xvcjogIzg3ZjRmNSxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkZvY3VzQ29sb3I6ICM0MmQ1ZTgsXHJcbiAgICB0cmFuc3BhcmVudEJ1dHRvbkJvcmRlckNvbG9yOiAjMmIzNjQ0LFxyXG4gICAgaW5wdXRCYWNrZ3JvdW5kQ29sb3I6ICMxNzFlMjcsXHJcbiAgICBzZWxlY3RIb3ZlckNvbG9yOiByZ2JhKDU4LCA2OSwgODUsIDAuNSksXHJcbiAgICBzZWxlY3RTZWxlY3RlZENvbG9yOiByZ2JhKDQzLCA1NCwgNjgsIDAuNSksXHJcbiAgICBzd2l0Y2hCYWNrZ3JvdW5kQ29sb3I6ICMwMDAwMDAsXHJcbiAgICBhY2NvdW50QmFja2dyb3VuZENvbG9yOiByZ2JhKDQzLCA1NCwgNjgsIDAuNSksXHJcbiAgICBhY2NvdW50SG92ZXJCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoNTgsIDY5LCA4NSwgMC41KSxcclxuICAgIGFjY291bnRNYWluVGV4dENvbG9yOiAjZTBlMGUwLFxyXG4gICAgYWNjb3VudE9wdGlvbmFsVGV4dENvbG9yOiAjNTU2NTc2LFxyXG4gICAgYWNjb3VudEluZGljYXRvclRleHRDb2xvcjogIzExMTkyMSxcclxuICAgIGFjY291bnRTd2l0Y2hCYWNrZ3JvdW5kQ29sb3I6ICMwMDAwMDAsXHJcbiAgICBhY2NvdW50SW5kaWNhdG9yQmFja2dyb3VuZENvbG9yOiAjNGRiMWZmLFxyXG4gICAgdGFiSW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjMsIDMxLCAzOSwgMC41KSxcclxuICAgIHRhYkhvdmVyQmFja2dyb3VuZENvbG9yOiByZ2JhKDU4LCA2OSwgODUsIDAuNSksXHJcbiAgICB0YWJsZUJhY2tncm91bmRDb2xvcjogIzE4MjAyYSxcclxuICAgIG1lc3NhZ2VNeUJhY2tncm91bmRDb2xvcjogIzJhMzU0NCxcclxuICAgIG1lc3NhZ2VCdWRkeUJhY2tncm91bmRDb2xvcjogIzE4MjAyYSxcclxuICAgIHByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yOiAjMzQzZjRhLFxyXG4gICAgcHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yOiAjNWNkYTlkLFxyXG4gICAgY2hhcnRPcHRpb25zQmFja2dyb3VuZENvbG9yOiAjMmIzNjQ0LFxyXG4gICAgY2hhcnRPcHRpb25zSG92ZXJDb2xvcjogIzU1NjU3NixcclxuICAgIHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3I6ICM0MjUwNWYsXHJcbiAgICB0b29sdGlwSW1wb3J0YW50VGV4dENvbG9yOiAjZmY2ZjAwLFxyXG4gICAgdG9vbHRpcEltcG9ydGFudEJhY2tncm91bmRDb2xvcjogIzVmMmIxMSxcclxuICAgIHRvb2x0aXBDcml0aWNhbFRleHRDb2xvcjogI2ZmNTI1MixcclxuICAgIHRvb2x0aXBDcml0aWNhbEJhY2tncm91bmRDb2xvcjogIzVmMWQxZCxcclxuICAgIHRvb2x0aXBTaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KSxcclxuICAgIG1vZGFsQmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWRhcmsucG5nKSxcclxuICAgIGNsb3NlQnV0dG9uQ29sb3I6ICM1NTY1NzZcclxuICApLFxyXG4gIGdyYXk6IChcclxuICAgIGJvZHlCYWNrZ3JvdW5kQ29sb3I6ICMxMDE0MTcsXHJcbiAgICBzaWRlYmFyQmFja2dyb3VuZENvbG9yOiByZ2JhKDI4LCAzMCwgMzMsIDEpLFxyXG4gICAgc2lkZWJhckJvcmRlckNvbG9yOiAjMmUzMzM3LFxyXG4gICAgb25saW5lQ29sb3I6ICM0N2NmOGQsXHJcbiAgICBvZmZsaW5lQ29sb3I6ICNmZjUyNTIsXHJcbiAgICBjb250ZW50QmFja2dyb3VuZENvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSksXHJcbiAgICBtYWluVGV4dENvbG9yOiAjZTBlMGUwLFxyXG4gICAgYWx0ZXJuYXRpdmVUZXh0Q29sb3I6ICMxYTFhMWEsXHJcbiAgICBvcHRpb25hbFRleHRDb2xvcjogIzU2NWM2MixcclxuICAgIGJsdWVUZXh0Q29sb3I6ICM0MmE1ZjUsXHJcbiAgICBncmVlblRleHRDb2xvcjogIzQ3Y2Y4ZCxcclxuICAgIG9yYW5nZVRleHRDb2xvcjogI2ZmNmYwMCxcclxuICAgIHJlZFRleHRDb2xvcjogI2ZmNTI1MixcclxuICAgIGJsdWVCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICM0MmE1ZjUsXHJcbiAgICBibHVlQnV0dG9uSG92ZXJDb2xvcjogIzg2ZDZmZixcclxuICAgIGJsdWVCdXR0b25Gb2N1c0NvbG9yOiAjNWZiNmZjLFxyXG4gICAgZGlzYWJsZWRCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICM3OTg0OGYsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkhvdmVyQ29sb3I6ICNhMWFlYmIsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkZvY3VzQ29sb3I6ICM4YTk1OWYsXHJcbiAgICBncmVlbkJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzQ3Y2Y4ZCxcclxuICAgIGdyZWVuQnV0dG9uSG92ZXJDb2xvcjogIzdiZjZjNixcclxuICAgIGdyZWVuQnV0dG9uRm9jdXNDb2xvcjogIzVjZGM5ZSxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzNlYzVkNyxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkhvdmVyQ29sb3I6ICM3MmVkZmUsXHJcbiAgICB0dXJxdW9pc2VCdXR0b25Gb2N1c0NvbG9yOiAjNTBkMGUxLFxyXG4gICAgdHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcjogIzJmMzQzOCxcclxuICAgIGlucHV0QmFja2dyb3VuZENvbG9yOiAjMjkyZDMxLFxyXG4gICAgc2VsZWN0SG92ZXJDb2xvcjogcmdiYSg1OCwgNjIsIDY2LCAwLjUpLFxyXG4gICAgc2VsZWN0U2VsZWN0ZWRDb2xvcjogcmdiYSgzNywgNDAsIDQzLCAwLjUpLFxyXG4gICAgc3dpdGNoQmFja2dyb3VuZENvbG9yOiAjMDAwMDAwLFxyXG4gICAgYWNjb3VudEJhY2tncm91bmRDb2xvcjogcmdiYSgzNywgNDAsIDQzLCAwLjUpLFxyXG4gICAgYWNjb3VudEhvdmVyQmFja2dyb3VuZENvbG9yOiByZ2JhKDU4LCA2MiwgNjYsIDAuNSksXHJcbiAgICBhY2NvdW50TWFpblRleHRDb2xvcjogI2UwZTBlMCxcclxuICAgIGFjY291bnRPcHRpb25hbFRleHRDb2xvcjogIzU2NWM2MixcclxuICAgIGFjY291bnRJbmRpY2F0b3JUZXh0Q29sb3I6ICMxYTFhMWEsXHJcbiAgICBhY2NvdW50U3dpdGNoQmFja2dyb3VuZENvbG9yOiAjMDAwMDAwLFxyXG4gICAgYWNjb3VudEluZGljYXRvckJhY2tncm91bmRDb2xvcjogIzQyYTVmNSxcclxuICAgIHRhYkluYWN0aXZlQmFja2dyb3VuZENvbG9yOiByZ2JhKDI4LCAzMCwgMzMsIDAuNSksXHJcbiAgICB0YWJIb3ZlckJhY2tncm91bmRDb2xvcjogcmdiYSg1OCwgNjIsIDY2LCAwLjUpLFxyXG4gICAgdGFibGVCYWNrZ3JvdW5kQ29sb3I6ICMyNTI5MmQsXHJcbiAgICBtZXNzYWdlTXlCYWNrZ3JvdW5kQ29sb3I6ICMzMDM2M2MsXHJcbiAgICBtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3I6ICMyNTI5MmQsXHJcbiAgICBwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcjogIzM2M2EzZSxcclxuICAgIHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcjogIzQ3Y2Y4ZCxcclxuICAgIGNoYXJ0T3B0aW9uc0JhY2tncm91bmRDb2xvcjogIzI5MmQzMSxcclxuICAgIGNoYXJ0T3B0aW9uc0hvdmVyQ29sb3I6ICM1MTU5NjAsXHJcbiAgICB0b29sdGlwQmFja2dyb3VuZENvbG9yOiAjM2U0NjRjLFxyXG4gICAgdG9vbHRpcEltcG9ydGFudFRleHRDb2xvcjogI2ZmNmYwMCxcclxuICAgIHRvb2x0aXBJbXBvcnRhbnRCYWNrZ3JvdW5kQ29sb3I6ICM1NTI0MGQsXHJcbiAgICB0b29sdGlwQ3JpdGljYWxUZXh0Q29sb3I6ICNmZjUyNTIsXHJcbiAgICB0b29sdGlwQ3JpdGljYWxCYWNrZ3JvdW5kQ29sb3I6ICM0YzE5MTksXHJcbiAgICB0b29sdGlwU2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSksXHJcbiAgICBtb2RhbEJhY2tncm91bmQ6IHVybCh+c3JjL2Fzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC1ncmF5LnBuZyksXHJcbiAgICBjbG9zZUJ1dHRvbkNvbG9yOiAjNTE1OTYwXHJcbiAgKSxcclxuICB3aGl0ZTogKFxyXG4gICAgYm9keUJhY2tncm91bmRDb2xvcjogI2VlZWVlZSxcclxuICAgIHNpZGViYXJCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMSksXHJcbiAgICBzaWRlYmFyQm9yZGVyQ29sb3I6ICNlYmViZWIsXHJcbiAgICBvbmxpbmVDb2xvcjogIzQ2YzE3MixcclxuICAgIG9mZmxpbmVDb2xvcjogI2ZmNTI1MixcclxuICAgIGNvbnRlbnRCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSxcclxuICAgIG1haW5UZXh0Q29sb3I6ICM0MzQ1NGIsXHJcbiAgICBhbHRlcm5hdGl2ZVRleHRDb2xvcjogI2ZlZmVmZSxcclxuICAgIG9wdGlvbmFsVGV4dENvbG9yOiAjYTBhNWFiLFxyXG4gICAgYmx1ZVRleHRDb2xvcjogIzJjOTVmMSxcclxuICAgIGdyZWVuVGV4dENvbG9yOiAjNDZjMTcyLFxyXG4gICAgb3JhbmdlVGV4dENvbG9yOiAjZmY2ZjAwLFxyXG4gICAgcmVkVGV4dENvbG9yOiAjZmY1MjUyLFxyXG4gICAgYmx1ZUJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzJjOTVmMSxcclxuICAgIGJsdWVCdXR0b25Ib3ZlckNvbG9yOiAjNWNiM2ZmLFxyXG4gICAgYmx1ZUJ1dHRvbkZvY3VzQ29sb3I6ICMzNzlmZmEsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzkwYTRhZSxcclxuICAgIGRpc2FibGVkQnV0dG9uSG92ZXJDb2xvcjogI2FlYmVjNixcclxuICAgIGRpc2FibGVkQnV0dG9uRm9jdXNDb2xvcjogI2E3YjljMixcclxuICAgIGdyZWVuQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjNDZjMTcyLFxyXG4gICAgZ3JlZW5CdXR0b25Ib3ZlckNvbG9yOiAjNWFkNTg2LFxyXG4gICAgZ3JlZW5CdXR0b25Gb2N1c0NvbG9yOiAjNTNjNzdjLFxyXG4gICAgdHVycXVvaXNlQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjMjZiNmM3LFxyXG4gICAgdHVycXVvaXNlQnV0dG9uSG92ZXJDb2xvcjogIzUyY2JkOSxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkZvY3VzQ29sb3I6ICMzMWJlY2YsXHJcbiAgICB0cmFuc3BhcmVudEJ1dHRvbkJvcmRlckNvbG9yOiAjZWJlYmViLFxyXG4gICAgaW5wdXRCYWNrZ3JvdW5kQ29sb3I6ICNlNmU2ZTYsXHJcbiAgICBzZWxlY3RIb3ZlckNvbG9yOiByZ2JhKDI0MCwgMjQwLCAyNDAsIDAuNSksXHJcbiAgICBzZWxlY3RTZWxlY3RlZENvbG9yOiByZ2JhKDIyNCwgMjI0LCAyMjQsIDAuNSksXHJcbiAgICBzd2l0Y2hCYWNrZ3JvdW5kQ29sb3I6ICNlMGUwZTAsXHJcbiAgICBhY2NvdW50QmFja2dyb3VuZENvbG9yOiByZ2JhKDMwLCAxMzYsIDIyOSwgMSksXHJcbiAgICBhY2NvdW50SG92ZXJCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjQwLCAyNDAsIDI0MCwgMC41KSxcclxuICAgIGFjY291bnRNYWluVGV4dENvbG9yOiAjZmZmZmZmLFxyXG4gICAgYWNjb3VudE9wdGlvbmFsVGV4dENvbG9yOiAjOTFiYWYxLFxyXG4gICAgYWNjb3VudEluZGljYXRvclRleHRDb2xvcjogIzQzNDU0YixcclxuICAgIGFjY291bnRTd2l0Y2hCYWNrZ3JvdW5kQ29sb3I6ICNmZmZmZmYsXHJcbiAgICBhY2NvdW50SW5kaWNhdG9yQmFja2dyb3VuZENvbG9yOiAjZmZmZmZmLFxyXG4gICAgdGFiSW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjI0LCAyMjQsIDIyNCwgMC41KSxcclxuICAgIHRhYkhvdmVyQmFja2dyb3VuZENvbG9yOiAjZmZmZmZmLFxyXG4gICAgdGFibGVCYWNrZ3JvdW5kQ29sb3I6ICNmZmZmZmYsXHJcbiAgICBtZXNzYWdlTXlCYWNrZ3JvdW5kQ29sb3I6ICNmZmYsXHJcbiAgICBtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3I6ICNlZGVkZWQsXHJcbiAgICBwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcjogI2RjZGNkYyxcclxuICAgIHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcjogIzQ2YzE3MixcclxuICAgIGNoYXJ0T3B0aW9uc0JhY2tncm91bmRDb2xvcjogI2UwZTBlMCxcclxuICAgIGNoYXJ0T3B0aW9uc0hvdmVyQ29sb3I6ICNmZmZmZmYsXHJcbiAgICB0b29sdGlwQmFja2dyb3VuZENvbG9yOiAjZmZmZmZmLFxyXG4gICAgdG9vbHRpcEltcG9ydGFudFRleHRDb2xvcjogI2ZmZmZmZixcclxuICAgIHRvb2x0aXBJbXBvcnRhbnRCYWNrZ3JvdW5kQ29sb3I6ICNlZjZjMDAsXHJcbiAgICB0b29sdGlwQ3JpdGljYWxUZXh0Q29sb3I6ICNmZmZmZmYsXHJcbiAgICB0b29sdGlwQ3JpdGljYWxCYWNrZ3JvdW5kQ29sb3I6ICNlNTM5MzUsXHJcbiAgICB0b29sdGlwU2hhZG93OiAwIDAgMXJlbSByZ2JhKDEyMCwgMTIwLCAxMjAsIDAuNSksXHJcbiAgICBtb2RhbEJhY2tncm91bmQ6IHVybCh+c3JjL2Fzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC13aGl0ZS5wbmcpLFxyXG4gICAgY2xvc2VCdXR0b25Db2xvcjogIzQzNDU0YlxyXG4gIClcclxuKTtcclxuXHJcblxyXG5cclxuXHJcblxyXG4iLCJhcHAtbWFpbiwgYXBwLWNyZWF0ZS13YWxsZXQsIGFwcC1vcGVuLXdhbGxldCwgYXBwLXJlc3RvcmUtd2FsbGV0LCBhcHAtc2VlZC1waHJhc2UsIGFwcC13YWxsZXQtZGV0YWlscywgYXBwLWFzc2lnbi1hbGlhcywgYXBwLWVkaXQtYWxpYXMsIGFwcC10cmFuc2Zlci1hbGlhcywgYXBwLXNldHRpbmdzLCBhcHAtbG9naW4ge1xyXG4gIGZsZXg6IDEgMSBhdXRvO1xyXG4gIHBhZGRpbmc6IDNyZW07XHJcbiAgbWluLXdpZHRoOiA4NXJlbTtcclxuXHJcbiAgLmNvbnRlbnQge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgcGFkZGluZzogM3JlbTtcclxuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjb250ZW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAuaGVhZCB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAwO1xyXG4gICAgICBsZWZ0OiAwO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLW1haW4ge1xyXG5cclxuICAuY29udGVudCB7XHJcblxyXG4gICAgLmFkZC13YWxsZXQge1xyXG5cclxuICAgICAgLmFkZC13YWxsZXQtaGVscCB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXNlZWQtcGhyYXNlIHtcclxuXHJcbiAgLnNlZWQtcGhyYXNlLWNvbnRlbnQge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoaW5wdXRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtd2FsbGV0LWRldGFpbHMge1xyXG5cclxuICAuc2VlZC1waHJhc2Uge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoaW5wdXRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXNldHRpbmdzIHtcclxuXHJcbiAgLmNvbnRlbnQge1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cclxuICAgIC50aGVtZS1zZWxlY3Rpb24ge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuc2NhbGUtc2VsZWN0aW9uIHtcclxuXHJcbiAgICAgIC5idXR0b24tYmxvY2sge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZCh0YWJJbmFjdGl2ZUJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAubGFiZWwge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuYWN0aXZlIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5sYWJlbCB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtbG9naW4ge1xyXG4gIG1pbi13aWR0aDogaW5oZXJpdDtcclxufVxyXG4iLCJhcHAtc2lkZWJhciB7XHJcblxyXG4gIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHNpZGViYXJCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLnNpZGViYXItYWNjb3VudHMge1xyXG5cclxuICAgIC5zaWRlYmFyLWFjY291bnRzLWhlYWRlciB7XHJcblxyXG4gICAgICBoMyB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGJ1dHRvbiB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuc2lkZWJhci1hY2NvdW50cy1saXN0IHtcclxuXHJcbiAgICAgIC5zaWRlYmFyLWFjY291bnQge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zaWRlYmFyLWFjY291bnQtcm93IHtcclxuXHJcbiAgICAgICAgICAudGV4dCB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5pbmRpY2F0b3Ige1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVCdXR0b25CYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYWx0ZXJuYXRpdmVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xyXG5cclxuICAgICAgICAgICAgLnByb2dyZXNzLWJhciB7XHJcblxyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIC5maWxsIHtcclxuXHJcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICYuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuYWN0aXZlIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGFjY291bnRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKGFjY291bnRNYWluVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuc2lkZWJhci1hY2NvdW50LXJvdyB7XHJcblxyXG4gICAgICAgICAgICAudGV4dCB7XHJcblxyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChhY2NvdW50T3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLmluZGljYXRvciB7XHJcblxyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGFjY291bnRJbmRpY2F0b3JCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChhY2NvdW50SW5kaWNhdG9yVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5zd2l0Y2gge1xyXG5cclxuICAgICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChhY2NvdW50U3dpdGNoQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAmLmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcclxuXHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKGFjY291bnRPcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOmhvdmVyOm5vdCguYWN0aXZlKSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChhY2NvdW50SG92ZXJCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICY6YWZ0ZXIge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQgMCUsIHRoZW1lZChzaWRlYmFyQmFja2dyb3VuZENvbG9yKSAxMDAlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnNpZGViYXItc2V0dGluZ3Mge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBib3JkZXItYm90dG9tOiAwLjJyZW0gc29saWQgdGhlbWVkKHNpZGViYXJCb3JkZXJDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLndyYXAtYnV0dG9uIHtcclxuXHJcbiAgICAgIGJ1dHRvbiB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJi5hY3RpdmUge1xyXG5cclxuICAgICAgICBidXR0b24ge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYWNjb3VudEJhY2tncm91bmRDb2xvcikhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKGFjY291bnRNYWluVGV4dENvbG9yKSFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGFjY291bnRJbmRpY2F0b3JCYWNrZ3JvdW5kQ29sb3IpIWltcG9ydGFudDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC5zdGF0dXMtY29udGFpbmVyIHtcclxuXHJcbiAgICAgIC5vZmZsaW5lOmJlZm9yZSB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKG9mZmxpbmVDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAub25saW5lOmJlZm9yZSB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKG9ubGluZUNvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuXHJcbiAgICAgICAgLnN5bmNpbmcge1xyXG5cclxuICAgICAgICAgIC5wcm9ncmVzcy1iYXIge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLmZpbGwge1xyXG5cclxuICAgICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckZ1bGxCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmxvYWRpbmcge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAudXBkYXRlLWNvbnRhaW5lciB7XHJcblxyXG4gICAgICAuc3RhbmRhcmQge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAuaW1wb3J0YW50IHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBjb2xvcjogdGhlbWVkKG9yYW5nZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAuY3JpdGljYWwge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQocmVkVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC50aW1lIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBjb2xvcjogdGhlbWVkKG9yYW5nZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAuaWNvbiB7XHJcblxyXG4gICAgICAgICYuc3RhbmRhcmQge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmltcG9ydGFudCB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChvcmFuZ2VUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5jcml0aWNhbCB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChyZWRUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi50aW1lIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKG9yYW5nZVRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsImFwcC13YWxsZXQge1xyXG5cclxuICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgfVxyXG5cclxuICAuaGVhZGVyIHtcclxuXHJcbiAgICBidXR0b24ge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuYWxpYXMge1xyXG5cclxuICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5hZGRyZXNzIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAuaWNvbiB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC50YWJzIHtcclxuXHJcbiAgICAudGFicy1oZWFkZXIge1xyXG5cclxuICAgICAgLnRhYiB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHRhYkluYWN0aXZlQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmluZGljYXRvciB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChhY2NvdW50SW5kaWNhdG9yQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgY29sb3I6IHRoZW1lZChhY2NvdW50SW5kaWNhdG9yVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuYWN0aXZlIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGNvbnRlbnRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpob3Zlcjpub3QoLmFjdGl2ZSk6bm90KC5kaXNhYmxlZCkge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodGFiSG92ZXJCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC50YWJzLWNvbnRlbnQge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGNvbnRlbnRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtc2VuZCB7XHJcblxyXG4gIC5mb3JtLXNlbmQge1xyXG5cclxuICAgIC5zZW5kLXNlbGVjdCB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuaWNvbiB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5hZGRpdGlvbmFsLWRldGFpbHMge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyOiAwLjJyZW0gc29saWQgdGhlbWVkKHRyYW5zcGFyZW50QnV0dG9uQm9yZGVyQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtcmVjZWl2ZSB7XHJcblxyXG4gIC5idG4tY29weS1hZGRyZXNzIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLWhpc3Rvcnkge1xyXG5cclxuICB0YWJsZSB7XHJcblxyXG4gICAgdGJvZHkge1xyXG5cclxuICAgICAgdHIge1xyXG5cclxuICAgICAgICAmLmxvY2tlZC10cmFuc2FjdGlvbiB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoNG4rMSkge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodGFibGVCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoNG4rMikge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodGFibGVCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoNG4rMykge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6bnRoLWNoaWxkKDRuKzQpIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc3RhdHVzIHtcclxuXHJcbiAgICAgICAgICAuY29uZmlybWF0aW9uIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5maWxsIHtcclxuXHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5sb2NrLXRyYW5zYWN0aW9uIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKG9yYW5nZVRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc3RhdHVzLnNlbmQge1xyXG5cclxuICAgICAgICAgIC5zdGF0dXMtdHJhbnNhY3Rpb24ge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHJlZFRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zdGF0dXMucmVjZWl2ZWQge1xyXG5cclxuICAgICAgICAgIC5zdGF0dXMtdHJhbnNhY3Rpb24ge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGdyZWVuVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLWNvbnRyYWN0cyB7XHJcblxyXG4gIC53cmFwLXRhYmxlIHtcclxuXHJcbiAgICAuY29udHJhY3Qge1xyXG5cclxuICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICAmLm5ldywgJi5hbGVydCB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChyZWRUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5wdXJjaGFzZSwgJi5zZWxsIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXB1cmNoYXNlIHtcclxuXHJcbiAgLmZvcm0tcHVyY2hhc2Uge1xyXG5cclxuICAgIC5wdXJjaGFzZS1zZWxlY3Qge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAucHVyY2hhc2Utc3RhdGVzIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuYWRkaXRpb25hbC1kZXRhaWxzIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlcjogMC4ycmVtIHNvbGlkIHRoZW1lZCh0cmFuc3BhcmVudEJ1dHRvbkJvcmRlckNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xyXG5cclxuICAgIC5wcm9ncmVzcy1iYXIge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLnByb2dyZXNzLWJhci1mdWxsIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1tZXNzYWdlcyB7XHJcblxyXG4gIHRhYmxlIHtcclxuXHJcbiAgICB0Ym9keSB7XHJcblxyXG4gICAgICB0ciB7XHJcblxyXG4gICAgICAgIHRkOmZpcnN0LWNoaWxkIHtcclxuXHJcbiAgICAgICAgICBzcGFuIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgdGV4dC10cnVuY2F0ZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuaWNvbiB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocmVkVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXR5cGluZy1tZXNzYWdlIHtcclxuXHJcbiAgLmhlYWQge1xyXG5cclxuICAgIC5pbnRlcmxvY3V0b3Ige1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLm1lc3NhZ2VzLWNvbnRlbnQge1xyXG5cclxuICAgIC5tZXNzYWdlcy1saXN0IHtcclxuXHJcbiAgICAgIGRpdiB7XHJcblxyXG4gICAgICAgICYuZGF0ZSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5teSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChtZXNzYWdlTXlCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICY6YmVmb3JlIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHBzZXVkbztcclxuICAgICAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgICAgICBsZWZ0OiAtMS4xcmVtO1xyXG4gICAgICAgICAgICBib3JkZXI6IDEuMnJlbSBzb2xpZCB0cmFuc3BhcmVudDtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6IHRoZW1lZChtZXNzYWdlTXlCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmJ1ZGR5IHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKG1lc3NhZ2VCdWRkeUJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgJjphZnRlciB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSBwc2V1ZG87XHJcbiAgICAgICAgICAgIHJpZ2h0OiAtMS4xcmVtO1xyXG4gICAgICAgICAgICB0b3A6IDA7XHJcbiAgICAgICAgICAgIGJvcmRlcjogMS4ycmVtIHNvbGlkIHRyYW5zcGFyZW50O1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogdGhlbWVkKG1lc3NhZ2VCdWRkeUJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1zdGFraW5nIHtcclxuXHJcbiAgLmNoYXJ0LWhlYWRlciB7XHJcblxyXG4gICAgLmdlbmVyYWwge1xyXG5cclxuICAgICAgLmxhYmVsIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5vcHRpb25zIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5zZWxlY3RlZCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcbiAgICAgIGZsZXgtZ3JvdzogMTtcclxuICAgICAgZm9udC1zaXplOiAxLjZyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuY2hhcnQtb3B0aW9ucyB7XHJcblxyXG4gICAgLnRpdGxlIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLm9wdGlvbnMge1xyXG5cclxuICAgICAgYnV0dG9uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGNoYXJ0T3B0aW9uc0JhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjdGl2ZSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjaGFydE9wdGlvbnNIb3ZlckNvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5pbnB1dC1ibG9jay1hbGlhcyB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAuYWxpYXMtZHJvcGRvd24ge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiA2LjVyZW07XHJcbiAgICBtYXgtaGVpZ2h0OiAxMHJlbTtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChpbnB1dEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgZGl2IHtcclxuICAgICAgZm9udC1zaXplOiAxLjRyZW07XHJcbiAgICAgIHBhZGRpbmc6IDFyZW07XHJcblxyXG4gICAgICAmOmhvdmVyIHtcclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChzZWxlY3RIb3ZlckNvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLmhlYWQge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBmb250LXNpemU6IDEuM3JlbTtcclxuICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAzcmVtO1xyXG5cclxuICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgfVxyXG5cclxuICAuYnJlYWRjcnVtYnMge1xyXG5cclxuICAgID4gc3BhbiwgYSB7XHJcblxyXG4gICAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xyXG4gICAgICAgIG91dGxpbmUtc3R5bGU6IG5vbmU7XHJcblxyXG4gICAgICAgICY6YWZ0ZXIge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHBzZXVkbztcclxuICAgICAgICAgIHRvcDogMC41cmVtO1xyXG4gICAgICAgICAgcmlnaHQ6IC0xLjVyZW07XHJcbiAgICAgICAgICB3aWR0aDogMC45cmVtO1xyXG4gICAgICAgICAgaGVpZ2h0OiAwLjlyZW07XHJcbiAgICAgICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgICAgbWFzay1zaXplOiBjb3ZlcjtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmJhY2stYnRuIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICBjb2xvcjogIzRkYjFmZjtcclxuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcclxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMS4zcmVtO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGhlaWdodDogYXV0bztcclxuXHJcbiAgICAuaWNvbiB7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMC43cmVtO1xyXG4gICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvYmFjay5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIHdpZHRoOiAwLjlyZW07XHJcbiAgICAgIGhlaWdodDogMC45cmVtO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi5zY3JvbGxlZC1jb250ZW50IHtcclxuXHJcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XHJcbiAgICB3aWR0aDogMXJlbTtcclxuICAgIGhlaWdodDogMXJlbTtcclxuICB9XHJcblxyXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcclxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gIH1cclxuXHJcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjtcclxuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XHJcbiAgICBib3JkZXI6IDAuMjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XHJcbiAgfVxyXG5cclxuICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU2NTc2O1xyXG4gIH1cclxufVxyXG4iLCJ0YWJsZSB7XHJcbiAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcblxyXG4gIHRoZWFkIHtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyIHtcclxuICAgICAgaGVpZ2h0OiA0cmVtO1xyXG5cclxuICAgICAgdGgge1xyXG4gICAgICAgIHBhZGRpbmc6IDFyZW07XHJcbiAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcclxuXHJcbiAgICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDNyZW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICAgICAgcGFkZGluZy1yaWdodDogM3JlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRib2R5IHtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgdHIge1xyXG4gICAgICBoZWlnaHQ6IDMuNXJlbTtcclxuXHJcbiAgICAgICY6bnRoLWNoaWxkKG9kZCkge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZCh0YWJsZUJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0ZCB7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuN3JlbTtcclxuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XHJcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICAgIG1heC13aWR0aDogMjByZW07XHJcblxyXG4gICAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEJBU0VcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvYmFzZS9taXhpbnMnO1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9iYXNlL251bGwnO1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9iYXNlL3RoZW1lJztcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvYmFzZS9iYXNlJztcclxuXHJcbi8vIExBWU9VVFxyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9sYXlvdXQvbWFpbic7XHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL2xheW91dC9zZXR0aW5ncyc7XHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL2xheW91dC9zaWRlYmFyJztcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvbGF5b3V0L3dhbGxldCc7XHJcblxyXG4vLyBNT0RVTEVTXHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL21vZHVsZXMvaGVhZCc7XHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL21vZHVsZXMvc2Nyb2xsJztcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvbW9kdWxlcy90YWJsZSc7XHJcblxyXG5AaW1wb3J0IFwifkBuZy1zZWxlY3Qvbmctc2VsZWN0L3RoZW1lcy9kZWZhdWx0LnRoZW1lLmNzc1wiO1xyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xyXG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLUxpZ2h0LnR0Zik7XHJcbiAgZm9udC13ZWlnaHQ6IDMwMDtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xyXG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLVJlZ3VsYXIudHRmKTtcclxuICBmb250LXdlaWdodDogNDAwO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICBmb250LWZhbWlseTogT3BlblNhbnM7XHJcbiAgc3JjOiB1cmwofnNyYy9hc3NldHMvZm9udHMvT3BlblNhbnMtU2VtaUJvbGQudHRmKTtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICBmb250LWZhbWlseTogT3BlblNhbnM7XHJcbiAgc3JjOiB1cmwofnNyYy9hc3NldHMvZm9udHMvT3BlblNhbnMtQm9sZC50dGYpO1xyXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbn1cclxuXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcclxuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1FeHRyYUJvbGQudHRmKTtcclxuICBmb250LXdlaWdodDogODAwO1xyXG59XHJcblxyXG5cclxuaHRtbCB7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xyXG4gIGZvbnQtc2l6ZTogMTBweDtcclxufVxyXG5cclxuYm9keSB7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xyXG4gIGZvbnQtc2l6ZTogMS42cmVtO1xyXG4gIHdpZHRoOiAxMDB2dztcclxuICBoZWlnaHQ6IDEwMHZoO1xyXG5cclxuICAmLnRoZW1lLWRhcmsge1xyXG4gICAgYmFja2dyb3VuZDogIzEzMTkyMSB1cmwoXCJhc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtZGFyay5wbmdcIikgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcbiAgfVxyXG5cclxuICAmLnRoZW1lLWdyYXkge1xyXG4gICAgYmFja2dyb3VuZDogIzEwMTQxNyB1cmwoXCJhc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtZ3JheS5wbmdcIikgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcbiAgfVxyXG5cclxuICAmLnRoZW1lLXdoaXRlIHtcclxuICAgIGJhY2tncm91bmQ6ICNlZWVlZWUgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLXdoaXRlLnBuZ1wiKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuICB9XHJcblxyXG4gIGFwcC1yb290IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICB9XHJcbn1cclxuXHJcbi51cGRhdGUtdG9vbHRpcCB7XHJcblxyXG4gIC50b29sdGlwLWlubmVyIHtcclxuXHJcbiAgICAuaWNvbiB7XHJcbiAgICAgIG1hc2s6IHVybChhc3NldHMvaWNvbnMvdXBkYXRlLWFsZXJ0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */", '', '']] /***/ }), @@ -557,7 +557,7 @@ if(false) {} /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -module.exports = __webpack_require__(/*! D:\Projects\zano\src\gui\qt-daemon\html_source\src\styles.scss */"./src/styles.scss"); +module.exports = __webpack_require__(/*! E:\Zano\check\zano\src\gui\qt-daemon\html_source\src\styles.scss */"./src/styles.scss"); /***/ }) diff --git a/src/gui/qt-daemon/html/styles.js.map b/src/gui/qt-daemon/html/styles.js.map index 033c6ffd..5d5518bc 100644 --- a/src/gui/qt-daemon/html/styles.js.map +++ b/src/gui/qt-daemon/html/styles.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/styles.scss","webpack:///./node_modules/style-loader/lib/addStyles.js","webpack:///./node_modules/style-loader/lib/urls.js","webpack:///./src/styles.scss?4266"],"names":[],"mappings":"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B,mBAAmB,EAAE,wCAAwC,2DAA2D,2DAA2D,EAAE,iDAAiD,ql0N;;;;;;;;;;;ACA3siF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,cAAc,mBAAO,CAAC,uDAAQ;;AAE9B;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,mBAAmB,2BAA2B;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;;AAEA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;;AAEA,QAAQ,uBAAuB;AAC/B;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,kDAAkD,sBAAsB;AACxE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA,KAAK,KAAwC,EAAE,EAE7C;;AAEF,QAAQ,sBAAiB;AACzB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;;AAEA,6BAA6B,mBAAmB;;AAEhD;;AAEA;;AAEA;AACA;;;;;;;;;;;;;AC9YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,WAAW,EAAE;AACrD,wCAAwC,WAAW,EAAE;;AAErD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,sCAAsC;AACtC,GAAG;AACH;AACA,8DAA8D;AAC9D;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;;;;;;;;;;;;ACvFA,cAAc,mBAAO,CAAC,4ZAA0N;;AAEhP,4CAA4C,QAAS;;AAErD;AACA;;;;AAIA,eAAe;;AAEf;AACA;;AAEA,aAAa,mBAAO,CAAC,mGAAgD;;AAErE;;AAEA,GAAG,KAAU,EAAE,E","file":"styles.js","sourcesContent":["module.exports = [[module.id, \"/*\\r\\n* Implementation of themes\\r\\n*/\\n.ng-select.ng-select-opened>.ng-select-container{background:#fff;border-color:#b3b3b3 #ccc #d9d9d9}\\n.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}\\n.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-2px;border-color:transparent transparent #999;border-width:0 5px 5px}\\n.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent #333}\\n.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}\\n.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-right-radius:0;border-top-left-radius:0}\\n.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:#007eff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 0 3px rgba(0,126,255,0.1)}\\n.ng-select.ng-select-disabled>.ng-select-container{background-color:#f9f9f9}\\n.ng-select .ng-has-value .ng-placeholder{display:none}\\n.ng-select .ng-select-container{background-color:#fff;border-radius:4px;border:1px solid #ccc;min-height:36px;align-items:center}\\n.ng-select .ng-select-container:hover{box-shadow:0 1px 0 rgba(0,0,0,0.06)}\\n.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:10px}\\n[dir=\\\"rtl\\\"] .ng-select .ng-select-container .ng-value-container{padding-right:10px;padding-left:0}\\n.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#999}\\n.ng-select.ng-select-single .ng-select-container{height:36px}\\n.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:5px;left:0;padding-left:10px;padding-right:50px}\\n[dir=\\\"rtl\\\"] .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{padding-right:10px;padding-left:50px}\\n.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{background-color:#f9f9f9;border:1px solid #e6e6e6}\\n.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 5px}\\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:5px;padding-left:7px}\\n[dir=\\\"rtl\\\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-right:7px;padding-left:0}\\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{font-size:.9em;margin-bottom:5px;background-color:#ebf5ff;border-radius:2px;margin-right:5px}\\n[dir=\\\"rtl\\\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{margin-right:0;margin-left:5px}\\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#f9f9f9}\\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:5px}\\n[dir=\\\"rtl\\\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:0;padding-right:5px}\\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{display:inline-block;padding:1px 5px}\\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:1px 5px}\\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#d1e8ff}\\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid #b8dbff}\\n[dir=\\\"rtl\\\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-left:1px solid #b8dbff;border-right:none}\\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid #b8dbff}\\n[dir=\\\"rtl\\\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:0;border-right:1px solid #b8dbff}\\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 3px 3px}\\n[dir=\\\"rtl\\\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 3px 3px 0}\\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:5px;padding-bottom:5px;padding-left:3px}\\n[dir=\\\"rtl\\\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-right:3px;padding-left:0}\\n.ng-select .ng-clear-wrapper{color:#999}\\n.ng-select .ng-clear-wrapper:hover .ng-clear{color:#D0021B}\\n.ng-select .ng-spinner-zone{padding:5px 5px 0 0}\\n[dir=\\\"rtl\\\"] .ng-select .ng-spinner-zone{padding:5px 0 0 5px}\\n.ng-select .ng-arrow-wrapper{width:25px;padding-right:5px}\\n[dir=\\\"rtl\\\"] .ng-select .ng-arrow-wrapper{padding-left:5px;padding-right:0}\\n.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:#666}\\n.ng-select .ng-arrow-wrapper .ng-arrow{border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 2.5px}\\n.ng-dropdown-panel{background-color:#fff;border:1px solid #ccc;box-shadow:0 1px 0 rgba(0,0,0,0.06);left:0}\\n.ng-dropdown-panel.ng-select-bottom{top:100%;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top-color:#e6e6e6;margin-top:-1px}\\n.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-right-radius:4px;border-bottom-left-radius:4px}\\n.ng-dropdown-panel.ng-select-top{bottom:100%;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-color:#e6e6e6;margin-bottom:-1px}\\n.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px;border-top-left-radius:4px}\\n.ng-dropdown-panel .ng-dropdown-header{border-bottom:1px solid #ccc;padding:5px 7px}\\n.ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid #ccc;padding:5px 7px}\\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:8px 10px;font-weight:500;color:rgba(0,0,0,0.54);cursor:pointer}\\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}\\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#f5faff}\\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{background-color:#ebf5ff;font-weight:600}\\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{background-color:#fff;color:rgba(0,0,0,0.87);padding:8px 10px}\\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:#333;background-color:#ebf5ff}\\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:600}\\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:#f5faff;color:#333}\\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#ccc}\\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:22px}\\n[dir=\\\"rtl\\\"] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-right:22px;padding-left:0}\\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:5px}\\n[dir=\\\"rtl\\\"] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-left:5px;padding-right:0}\\n[dir=\\\"rtl\\\"] .ng-dropdown-panel{direction:rtl;text-align:right}\\nhtml {\\n box-sizing: border-box;\\n -webkit-box-sizing: border-box;\\n -moz-box-sizing: border-box; }\\n*, *:before, *:after {\\n box-sizing: inherit;\\n -webkit-box-sizing: inherit;\\n -moz-box-sizing: inherit;\\n margin: 0;\\n padding: 0;\\n -webkit-touch-collout: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\nhtml, body, div, span, applet, object, iframe,\\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\\na, abbr, acronym, address, big, cite, code,\\ndel, dfn, em, img, ins, kbd, q, s, samp,\\nsmall, strike, strong, sub, sup, tt, var,\\nb, u, i, center,\\ndl, dt, dd, ol, ul, li,\\nfieldset, form, label, legend,\\ntable, caption, tbody, tfoot, thead, tr, th, td,\\narticle, aside, canvas, details, embed,\\nfigure, figcaption, footer, header, hgroup,\\nmenu, nav, output, ruby, section, summary,\\ntime, mark, audio, video {\\n border: 0;\\n font-size: 100%;\\n font: inherit;\\n vertical-align: baseline; }\\narticle, aside, details, figcaption, figure,\\nfooter, header, hgroup, menu, nav, section {\\n display: block; }\\nbody {\\n line-height: 1;\\n font-style: normal; }\\nol, ul {\\n list-style: none; }\\nblockquote, q {\\n quotes: none; }\\nblockquote:before, blockquote:after,\\nq:before, q:after {\\n content: none; }\\ntable {\\n border-collapse: collapse;\\n border-spacing: 0; }\\ntd,\\nth {\\n padding: 0; }\\ninput {\\n outline: none; }\\ninput:-webkit-autofill {\\n -webkit-box-shadow: 0 0 0 1000px white inset; }\\nbutton,\\nhtml input[type=\\\"button\\\"],\\ninput[type=\\\"reset\\\"],\\ninput[type=\\\"submit\\\"] {\\n -webkit-appearance: button;\\n cursor: pointer;\\n outline: none; }\\nbutton[disabled],\\nhtml input[disabled] {\\n cursor: default; }\\nbutton::-moz-focus-inner,\\ninput::-moz-focus-inner {\\n border: 0;\\n padding: 0; }\\ninput {\\n line-height: normal; }\\ninput[type=\\\"search\\\"] {\\n -webkit-appearance: textfield;\\n box-sizing: content-box; }\\ninput[type=\\\"search\\\"]::-webkit-search-cancel-button,\\ninput[type=\\\"search\\\"]::-webkit-search-decoration {\\n -webkit-appearance: none; }\\na {\\n text-decoration: none; }\\na:active, a:hover, a:focus {\\n outline: 0; }\\ni {\\n font-style: italic; }\\nb, strong {\\n font-weight: 700; }\\nimg {\\n width: auto;\\n max-width: 100%;\\n height: auto;\\n vertical-align: top;\\n border: 0; }\\n.hidden {\\n display: none !important; }\\n.theme-dark .app-content .preloader .loading-bar {\\n background-color: #5cda9d; }\\n.theme-gray .app-content .preloader .loading-bar {\\n background-color: #47cf8d; }\\n.theme-white .app-content .preloader .loading-bar {\\n background-color: #46c172; }\\nbutton {\\n border: none;\\n font-family: OpenSans, sans-serif;\\n font-size: 1.5rem;\\n font-weight: 600;\\n outline: none;\\n padding: 0 1rem;\\n height: 4.2rem; }\\n.theme-dark button:disabled:not(.transparent-button) {\\n background-color: #9cadb7;\\n color: #111921; }\\n.theme-gray button:disabled:not(.transparent-button) {\\n background-color: #79848f;\\n color: #1a1a1a; }\\n.theme-white button:disabled:not(.transparent-button) {\\n background-color: #90a4ae;\\n color: #fefefe; }\\n.theme-dark button:disabled:not(.transparent-button):hover {\\n background-color: #b7d1e0; }\\n.theme-gray button:disabled:not(.transparent-button):hover {\\n background-color: #a1aebb; }\\n.theme-white button:disabled:not(.transparent-button):hover {\\n background-color: #aebec6; }\\n.theme-dark button:disabled:not(.transparent-button):focus {\\n background-color: #a7b9c2; }\\n.theme-gray button:disabled:not(.transparent-button):focus {\\n background-color: #8a959f; }\\n.theme-white button:disabled:not(.transparent-button):focus {\\n background-color: #a7b9c2; }\\n.theme-dark button.blue-button:not(:disabled) {\\n background-color: #4db1ff;\\n color: #111921; }\\n.theme-gray button.blue-button:not(:disabled) {\\n background-color: #42a5f5;\\n color: #1a1a1a; }\\n.theme-white button.blue-button:not(:disabled) {\\n background-color: #2c95f1;\\n color: #fefefe; }\\n.theme-dark button.blue-button:not(:disabled):hover {\\n background-color: #82d7ff; }\\n.theme-gray button.blue-button:not(:disabled):hover {\\n background-color: #86d6ff; }\\n.theme-white button.blue-button:not(:disabled):hover {\\n background-color: #5cb3ff; }\\n.theme-dark button.blue-button:not(:disabled):focus {\\n background-color: #59b5fd; }\\n.theme-gray button.blue-button:not(:disabled):focus {\\n background-color: #5fb6fc; }\\n.theme-white button.blue-button:not(:disabled):focus {\\n background-color: #379ffa; }\\n.theme-dark button.green-button:not(:disabled) {\\n background-color: #5cda9d;\\n color: #111921; }\\n.theme-gray button.green-button:not(:disabled) {\\n background-color: #47cf8d;\\n color: #1a1a1a; }\\n.theme-white button.green-button:not(:disabled) {\\n background-color: #46c172;\\n color: #fefefe; }\\n.theme-dark button.green-button:not(:disabled):hover {\\n background-color: #8dfcc6; }\\n.theme-gray button.green-button:not(:disabled):hover {\\n background-color: #7bf6c6; }\\n.theme-white button.green-button:not(:disabled):hover {\\n background-color: #5ad586; }\\n.theme-dark button.green-button:not(:disabled):focus {\\n background-color: #62e0b2; }\\n.theme-gray button.green-button:not(:disabled):focus {\\n background-color: #5cdc9e; }\\n.theme-white button.green-button:not(:disabled):focus {\\n background-color: #53c77c; }\\n.theme-dark button.turquoise-button:not(:disabled) {\\n background-color: #4dd0e1;\\n color: #111921; }\\n.theme-gray button.turquoise-button:not(:disabled) {\\n background-color: #3ec5d7;\\n color: #1a1a1a; }\\n.theme-white button.turquoise-button:not(:disabled) {\\n background-color: #26b6c7;\\n color: #fefefe; }\\n.theme-dark button.turquoise-button:not(:disabled):hover {\\n background-color: #87f4f5; }\\n.theme-gray button.turquoise-button:not(:disabled):hover {\\n background-color: #72edfe; }\\n.theme-white button.turquoise-button:not(:disabled):hover {\\n background-color: #52cbd9; }\\n.theme-dark button.turquoise-button:not(:disabled):focus {\\n background-color: #42d5e8; }\\n.theme-gray button.turquoise-button:not(:disabled):focus {\\n background-color: #50d0e1; }\\n.theme-white button.turquoise-button:not(:disabled):focus {\\n background-color: #31becf; }\\nbutton.transparent-button {\\n display: flex;\\n align-items: center;\\n justify-content: center; }\\n.theme-dark button.transparent-button {\\n background-color: transparent;\\n border: 0.2rem solid #2b3644;\\n color: #e0e0e0; }\\n.theme-gray button.transparent-button {\\n background-color: transparent;\\n border: 0.2rem solid #2f3438;\\n color: #e0e0e0; }\\n.theme-white button.transparent-button {\\n background-color: transparent;\\n border: 0.2rem solid #ebebeb;\\n color: #43454b; }\\nbutton.transparent-button .icon {\\n margin-right: 1rem;\\n -webkit-mask: url('complete-testwallet.svg') no-repeat center;\\n mask: url('complete-testwallet.svg') no-repeat center;\\n width: 1.7rem;\\n height: 1.7rem; }\\n.theme-dark button.transparent-button .icon {\\n background-color: #e0e0e0; }\\n.theme-gray button.transparent-button .icon {\\n background-color: #e0e0e0; }\\n.theme-white button.transparent-button .icon {\\n background-color: #43454b; }\\n.input-block {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n margin-bottom: 0.4rem; }\\n.input-block .wrap-label {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n min-height: 2.4rem; }\\n.input-block label {\\n font-size: 1.3rem;\\n line-height: 2.4rem; }\\n.theme-dark .input-block label {\\n color: #556576; }\\n.theme-gray .input-block label {\\n color: #565c62; }\\n.theme-white .input-block label {\\n color: #a0a5ab; }\\n.input-block input[type='text'], .input-block input[type='password'], .input-block select {\\n border: none;\\n font-size: 1.4rem;\\n outline: none;\\n padding: 0 1rem;\\n width: 100%;\\n height: 4.2rem; }\\n.theme-dark .input-block input[type='text'], .theme-dark .input-block input[type='password'], .theme-dark .input-block select {\\n background-color: #171e27;\\n color: #e0e0e0; }\\n.theme-gray .input-block input[type='text'], .theme-gray .input-block input[type='password'], .theme-gray .input-block select {\\n background-color: #292d31;\\n color: #e0e0e0; }\\n.theme-white .input-block input[type='text'], .theme-white .input-block input[type='password'], .theme-white .input-block select {\\n background-color: #e6e6e6;\\n color: #43454b; }\\n.input-block.textarea {\\n height: auto; }\\n.input-block.textarea textarea {\\n font-family: OpenSans, sans-serif;\\n border: none;\\n font-size: 1.4rem;\\n outline: none;\\n padding: 1rem;\\n width: 100%;\\n min-width: 100%;\\n height: 100%;\\n min-height: 7.5rem;\\n max-height: 7.5rem;\\n overflow: auto;\\n resize: none; }\\n.theme-dark .input-block.textarea textarea {\\n background-color: #171e27;\\n color: #e0e0e0; }\\n.theme-gray .input-block.textarea textarea {\\n background-color: #292d31;\\n color: #e0e0e0; }\\n.theme-white .input-block.textarea textarea {\\n background-color: #e6e6e6;\\n color: #43454b; }\\n.input-block .error-block {\\n font-size: 1rem;\\n line-height: 1.4rem;\\n align-self: flex-end;\\n text-align: right; }\\n.theme-dark .input-block .error-block {\\n color: #ff5252; }\\n.theme-gray .input-block .error-block {\\n color: #ff5252; }\\n.theme-white .input-block .error-block {\\n color: #ff5252; }\\n.theme-dark .error-text {\\n color: #ff5252; }\\n.theme-gray .error-text {\\n color: #ff5252; }\\n.theme-white .error-text {\\n color: #ff5252; }\\ninput[type='radio'].style-radio + label {\\n display: flex;\\n align-items: center;\\n cursor: pointer;\\n font-weight: 400;\\n padding-left: 2.4rem;\\n -webkit-touch-collout: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\n.theme-dark input[type='radio'].style-radio + label {\\n color: #556576; }\\n.theme-gray input[type='radio'].style-radio + label {\\n color: #565c62; }\\n.theme-white input[type='radio'].style-radio + label {\\n color: #a0a5ab; }\\ninput[type='radio'].style-radio:not(checked) {\\n position: absolute;\\n opacity: 0; }\\ninput[type='radio'].style-radio:not(checked) + label {\\n position: relative; }\\ninput[type='radio'].style-radio:not(checked) + label:before {\\n content: '';\\n position: absolute;\\n top: 0.7rem;\\n left: 0;\\n background: transparent;\\n border-radius: 50%;\\n width: 1.4rem;\\n height: 1.4rem; }\\n.theme-dark input[type='radio'].style-radio:not(checked) + label:before {\\n border: 0.1rem solid #4db1ff; }\\n.theme-gray input[type='radio'].style-radio:not(checked) + label:before {\\n border: 0.1rem solid #42a5f5; }\\n.theme-white input[type='radio'].style-radio:not(checked) + label:before {\\n border: 0.1rem solid #2c95f1; }\\ninput[type='radio'].style-radio:not(checked) + label:after {\\n content: '';\\n position: absolute;\\n top: 1rem;\\n left: 0.3rem;\\n border-radius: 50%;\\n opacity: 0;\\n width: 0.8rem;\\n height: 0.8rem; }\\n.theme-dark input[type='radio'].style-radio:not(checked) + label:after {\\n background-color: #4db1ff; }\\n.theme-gray input[type='radio'].style-radio:not(checked) + label:after {\\n background-color: #42a5f5; }\\n.theme-white input[type='radio'].style-radio:not(checked) + label:after {\\n background-color: #2c95f1; }\\ninput[type='radio'].style-radio:checked + label:after {\\n opacity: 1; }\\ninput[type='checkbox'].style-checkbox + label {\\n display: flex;\\n align-items: center;\\n cursor: pointer;\\n font-weight: 400;\\n padding-left: 3.6rem;\\n -webkit-touch-collout: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\n.theme-dark input[type='checkbox'].style-checkbox + label {\\n color: #556576; }\\n.theme-gray input[type='checkbox'].style-checkbox + label {\\n color: #565c62; }\\n.theme-white input[type='checkbox'].style-checkbox + label {\\n color: #a0a5ab; }\\ninput[type='checkbox'].style-checkbox:not(checked) {\\n position: absolute;\\n top: 50%;\\n left: 1.6rem;\\n transform: translateY(-50%);\\n visibility: hidden; }\\ninput[type='checkbox'].style-checkbox:not(checked) + label {\\n position: relative; }\\ninput[type='checkbox'].style-checkbox:not(checked) + label:before {\\n content: '';\\n position: absolute;\\n top: 50%;\\n left: 1.6rem;\\n transform: translateY(-50%);\\n background: transparent;\\n width: 1.4rem;\\n height: 1.4rem; }\\n.theme-dark input[type='checkbox'].style-checkbox:not(checked) + label:before {\\n border: 0.1rem solid #4db1ff; }\\n.theme-gray input[type='checkbox'].style-checkbox:not(checked) + label:before {\\n border: 0.1rem solid #42a5f5; }\\n.theme-white input[type='checkbox'].style-checkbox:not(checked) + label:before {\\n border: 0.1rem solid #2c95f1; }\\ninput[type='checkbox'].style-checkbox:checked + label:before {\\n background: url('complete-testwallet.svg'); }\\n.theme-dark input[type='checkbox'].style-checkbox:checked + label:before {\\n background-color: #4db1ff; }\\n.theme-gray input[type='checkbox'].style-checkbox:checked + label:before {\\n background-color: #42a5f5; }\\n.theme-white input[type='checkbox'].style-checkbox:checked + label:before {\\n background-color: #2c95f1; }\\n.theme-dark .switch {\\n background-color: #000000; }\\n.theme-gray .switch {\\n background-color: #000000; }\\n.theme-white .switch {\\n background-color: #e0e0e0; }\\n.theme-dark .switch .circle.on {\\n background-color: #4db1ff; }\\n.theme-gray .switch .circle.on {\\n background-color: #42a5f5; }\\n.theme-white .switch .circle.on {\\n background-color: #2c95f1; }\\n.theme-dark .switch .circle.off {\\n background-color: #556576; }\\n.theme-gray .switch .circle.off {\\n background-color: #565c62; }\\n.theme-white .switch .circle.off {\\n background-color: #a0a5ab; }\\n.table-tooltip {\\n padding: 1rem 2rem; }\\n.theme-dark .table-tooltip {\\n background: #42505f;\\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\\n color: #e0e0e0; }\\n.theme-gray .table-tooltip {\\n background: #3e464c;\\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\\n color: #e0e0e0; }\\n.theme-white .table-tooltip {\\n background: #ffffff;\\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5);\\n color: #43454b; }\\n.table-tooltip .tooltip-inner {\\n font-size: 1.3rem;\\n line-height: 1.8rem;\\n white-space: pre-wrap; }\\n.table-tooltip.ng-tooltip-top {\\n margin-top: -1rem; }\\n.table-tooltip.ng-tooltip-top:after {\\n content: \\\"\\\";\\n position: absolute;\\n bottom: -1rem;\\n left: calc(50% - 0.5rem);\\n border-width: 0.5rem;\\n border-style: solid; }\\n.theme-dark .table-tooltip.ng-tooltip-top:after {\\n border-color: #42505f transparent transparent transparent; }\\n.theme-gray .table-tooltip.ng-tooltip-top:after {\\n border-color: #3e464c transparent transparent transparent; }\\n.theme-white .table-tooltip.ng-tooltip-top:after {\\n border-color: #ffffff transparent transparent transparent; }\\n.table-tooltip.ng-tooltip-top-left {\\n margin-top: -1rem; }\\n.table-tooltip.ng-tooltip-top-left:after {\\n content: \\\"\\\";\\n position: absolute;\\n bottom: -1rem;\\n left: 0.7rem;\\n border-width: 0.5rem;\\n border-style: solid; }\\n.theme-dark .table-tooltip.ng-tooltip-top-left:after {\\n border-color: #42505f transparent transparent #42505f; }\\n.theme-gray .table-tooltip.ng-tooltip-top-left:after {\\n border-color: #3e464c transparent transparent #3e464c; }\\n.theme-white .table-tooltip.ng-tooltip-top-left:after {\\n border-color: #ffffff transparent transparent #ffffff; }\\n.table-tooltip.ng-tooltip-top-right {\\n margin-top: -1rem; }\\n.table-tooltip.ng-tooltip-top-right:after {\\n content: \\\"\\\";\\n position: absolute;\\n bottom: -1rem;\\n right: 0.7rem;\\n border-width: 0.5rem;\\n border-style: solid; }\\n.theme-dark .table-tooltip.ng-tooltip-top-right:after {\\n border-color: #42505f #42505f transparent transparent; }\\n.theme-gray .table-tooltip.ng-tooltip-top-right:after {\\n border-color: #3e464c #3e464c transparent transparent; }\\n.theme-white .table-tooltip.ng-tooltip-top-right:after {\\n border-color: #ffffff #ffffff transparent transparent; }\\n.table-tooltip.ng-tooltip-bottom {\\n margin-top: 1rem; }\\n.table-tooltip.ng-tooltip-bottom:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: -1rem;\\n left: calc(50% - 0.5rem);\\n border-width: 0.5rem;\\n border-style: solid; }\\n.theme-dark .table-tooltip.ng-tooltip-bottom:before {\\n border-color: transparent transparent #42505f transparent; }\\n.theme-gray .table-tooltip.ng-tooltip-bottom:before {\\n border-color: transparent transparent #3e464c transparent; }\\n.theme-white .table-tooltip.ng-tooltip-bottom:before {\\n border-color: transparent transparent #ffffff transparent; }\\n.table-tooltip.ng-tooltip-bottom-left {\\n margin-top: 1rem; }\\n.table-tooltip.ng-tooltip-bottom-left:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: -1rem;\\n left: 0.7rem;\\n border-width: 0.5rem;\\n border-style: solid; }\\n.theme-dark .table-tooltip.ng-tooltip-bottom-left:before {\\n border-color: transparent transparent #42505f #42505f; }\\n.theme-gray .table-tooltip.ng-tooltip-bottom-left:before {\\n border-color: transparent transparent #3e464c #3e464c; }\\n.theme-white .table-tooltip.ng-tooltip-bottom-left:before {\\n border-color: transparent transparent #ffffff #ffffff; }\\n.table-tooltip.ng-tooltip-bottom-right {\\n margin-top: 1rem; }\\n.table-tooltip.ng-tooltip-bottom-right:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: -1rem;\\n right: 0.7rem;\\n border-width: 0.5rem;\\n border-style: solid; }\\n.theme-dark .table-tooltip.ng-tooltip-bottom-right:before {\\n border-color: transparent #42505f #42505f transparent; }\\n.theme-gray .table-tooltip.ng-tooltip-bottom-right:before {\\n border-color: transparent #3e464c #3e464c transparent; }\\n.theme-white .table-tooltip.ng-tooltip-bottom-right:before {\\n border-color: transparent #ffffff #ffffff transparent; }\\n.table-tooltip.ng-tooltip-left {\\n margin-left: -1rem; }\\n.table-tooltip.ng-tooltip-left:after {\\n content: \\\"\\\";\\n position: absolute;\\n top: calc(50% - 0.5rem);\\n right: -1rem;\\n border-width: 0.5rem;\\n border-style: solid; }\\n.theme-dark .table-tooltip.ng-tooltip-left:after {\\n border-color: transparent transparent transparent #42505f; }\\n.theme-gray .table-tooltip.ng-tooltip-left:after {\\n border-color: transparent transparent transparent #3e464c; }\\n.theme-white .table-tooltip.ng-tooltip-left:after {\\n border-color: transparent transparent transparent #ffffff; }\\n.table-tooltip.ng-tooltip-right {\\n margin-left: 1rem; }\\n.table-tooltip.ng-tooltip-right:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: calc(50% - 0.5rem);\\n left: -1rem;\\n border-width: 0.5rem;\\n border-style: solid; }\\n.theme-dark .table-tooltip.ng-tooltip-right:before {\\n border-color: transparent #42505f transparent transparent; }\\n.theme-gray .table-tooltip.ng-tooltip-right:before {\\n border-color: transparent #3e464c transparent transparent; }\\n.theme-white .table-tooltip.ng-tooltip-right:before {\\n border-color: transparent #ffffff transparent transparent; }\\n.table-tooltip-dimensions .tooltip-inner {\\n overflow: auto;\\n max-width: 20rem;\\n max-height: 10rem; }\\n.balance-tooltip {\\n padding: 1.3rem; }\\n.theme-dark .balance-tooltip {\\n background: #42505f;\\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\\n color: #e0e0e0; }\\n.theme-gray .balance-tooltip {\\n background: #3e464c;\\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\\n color: #e0e0e0; }\\n.theme-white .balance-tooltip {\\n background: #ffffff;\\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5);\\n color: #43454b; }\\n.balance-tooltip .tooltip-inner {\\n display: flex;\\n flex-direction: column;\\n font-size: 1.3rem; }\\n.balance-tooltip .tooltip-inner .available {\\n margin-bottom: 1.7rem; }\\n.balance-tooltip .tooltip-inner .available b {\\n font-weight: 600; }\\n.balance-tooltip .tooltip-inner .locked {\\n margin-bottom: 0.7rem; }\\n.balance-tooltip .tooltip-inner .locked b {\\n font-weight: 600; }\\n.balance-tooltip .tooltip-inner .link {\\n cursor: pointer; }\\n.theme-dark .balance-tooltip .tooltip-inner .link {\\n color: #4db1ff; }\\n.theme-gray .balance-tooltip .tooltip-inner .link {\\n color: #42a5f5; }\\n.theme-white .balance-tooltip .tooltip-inner .link {\\n color: #2c95f1; }\\n.balance-tooltip.ng-tooltip-top {\\n margin-top: -1rem; }\\n.balance-tooltip.ng-tooltip-bottom {\\n margin-top: 1rem; }\\n.balance-tooltip.ng-tooltip-left {\\n margin-left: -1rem; }\\n.balance-tooltip.ng-tooltip-right {\\n margin-left: 1rem; }\\n.account-tooltip .tooltip-inner {\\n word-break: break-word;\\n max-width: 18rem; }\\n.comment-tooltip .tooltip-inner {\\n overflow: auto;\\n word-break: break-word;\\n max-width: 50rem;\\n max-height: 25rem; }\\n.update-tooltip {\\n padding: 1.5rem; }\\n.theme-dark .update-tooltip {\\n background: #42505f;\\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\\n color: #e0e0e0; }\\n.theme-gray .update-tooltip {\\n background: #3e464c;\\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\\n color: #e0e0e0; }\\n.theme-white .update-tooltip {\\n background: #ffffff;\\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5);\\n color: #43454b; }\\n.theme-dark .update-tooltip.important {\\n background: #5f2b11;\\n color: #e0e0e0; }\\n.theme-gray .update-tooltip.important {\\n background: #55240d;\\n color: #e0e0e0; }\\n.theme-white .update-tooltip.important {\\n background: #ef6c00;\\n color: #ffffff; }\\n.theme-dark .update-tooltip.important.ng-tooltip-left-bottom:after {\\n border-color: transparent transparent #5f2b11 #5f2b11; }\\n.theme-gray .update-tooltip.important.ng-tooltip-left-bottom:after {\\n border-color: transparent transparent #55240d #55240d; }\\n.theme-white .update-tooltip.important.ng-tooltip-left-bottom:after {\\n border-color: transparent transparent #ef6c00 #ef6c00; }\\n.theme-dark .update-tooltip.important.ng-tooltip-right-bottom:before {\\n border-color: transparent #5f2b11 #5f2b11 transparent; }\\n.theme-gray .update-tooltip.important.ng-tooltip-right-bottom:before {\\n border-color: transparent #55240d #55240d transparent; }\\n.theme-white .update-tooltip.important.ng-tooltip-right-bottom:before {\\n border-color: transparent #ef6c00 #ef6c00 transparent; }\\n.update-tooltip.critical {\\n padding: 2.5rem; }\\n.theme-dark .update-tooltip.critical {\\n background: #5f1d1d;\\n color: #e0e0e0; }\\n.theme-gray .update-tooltip.critical {\\n background: #4c1919;\\n color: #e0e0e0; }\\n.theme-white .update-tooltip.critical {\\n background: #e53935;\\n color: #ffffff; }\\n.update-tooltip.critical .tooltip-inner {\\n display: flex;\\n flex-direction: column;\\n align-items: center; }\\n.theme-dark .update-tooltip.critical.ng-tooltip-left-bottom:after {\\n border-color: transparent transparent #5f1d1d #5f1d1d; }\\n.theme-gray .update-tooltip.critical.ng-tooltip-left-bottom:after {\\n border-color: transparent transparent #4c1919 #4c1919; }\\n.theme-white .update-tooltip.critical.ng-tooltip-left-bottom:after {\\n border-color: transparent transparent #e53935 #e53935; }\\n.theme-dark .update-tooltip.critical.ng-tooltip-right-bottom:before {\\n border-color: transparent #5f1d1d #5f1d1d transparent; }\\n.theme-gray .update-tooltip.critical.ng-tooltip-right-bottom:before {\\n border-color: transparent #4c1919 #4c1919 transparent; }\\n.theme-white .update-tooltip.critical.ng-tooltip-right-bottom:before {\\n border-color: transparent #e53935 #e53935 transparent; }\\n.update-tooltip .tooltip-inner {\\n font-size: 1.3rem;\\n line-height: 1.8rem;\\n white-space: pre-wrap; }\\n.update-tooltip .tooltip-inner .standard-update {\\n font-size: 1.5rem;\\n line-height: 2.7rem; }\\n.theme-dark .update-tooltip .tooltip-inner .standard-update {\\n color: #4db1ff; }\\n.theme-gray .update-tooltip .tooltip-inner .standard-update {\\n color: #42a5f5; }\\n.theme-white .update-tooltip .tooltip-inner .standard-update {\\n color: #2c95f1; }\\n.update-tooltip .tooltip-inner .important-update {\\n font-size: 1.5rem;\\n line-height: 2.7rem; }\\n.theme-dark .update-tooltip .tooltip-inner .important-update {\\n color: #ff6f00; }\\n.theme-gray .update-tooltip .tooltip-inner .important-update {\\n color: #ff6f00; }\\n.theme-white .update-tooltip .tooltip-inner .important-update {\\n color: #ffffff; }\\n.update-tooltip .tooltip-inner .critical-update {\\n font-size: 1.5rem;\\n line-height: 2.7rem;\\n text-align: center; }\\n.update-tooltip .tooltip-inner .wrong-time {\\n font-size: 1.5rem;\\n line-height: 2.7rem; }\\n.theme-dark .update-tooltip .tooltip-inner .wrong-time {\\n color: #ff6f00; }\\n.theme-gray .update-tooltip .tooltip-inner .wrong-time {\\n color: #ff6f00; }\\n.theme-white .update-tooltip .tooltip-inner .wrong-time {\\n color: #ffffff; }\\n.update-tooltip .tooltip-inner .icon {\\n margin: 1.5rem 0;\\n width: 5rem;\\n height: 5rem; }\\n.theme-dark .update-tooltip .tooltip-inner .icon {\\n background-color: #ff5252; }\\n.theme-gray .update-tooltip .tooltip-inner .icon {\\n background-color: #ff5252; }\\n.theme-white .update-tooltip .tooltip-inner .icon {\\n background-color: #ffffff; }\\n.update-tooltip.ng-tooltip-left-bottom {\\n margin-left: -1.5rem; }\\n.update-tooltip.ng-tooltip-left-bottom:after {\\n content: \\\"\\\";\\n position: absolute;\\n bottom: 0.6rem;\\n right: -1rem;\\n border-width: 0.5rem;\\n border-style: solid; }\\n.theme-dark .update-tooltip.ng-tooltip-left-bottom:after {\\n border-color: transparent transparent #42505f #42505f; }\\n.theme-gray .update-tooltip.ng-tooltip-left-bottom:after {\\n border-color: transparent transparent #3e464c #3e464c; }\\n.theme-white .update-tooltip.ng-tooltip-left-bottom:after {\\n border-color: transparent transparent #ffffff #ffffff; }\\n.update-tooltip.ng-tooltip-right-bottom {\\n margin-left: 1.5rem; }\\n.update-tooltip.ng-tooltip-right-bottom:before {\\n content: \\\"\\\";\\n position: absolute;\\n bottom: 0.6rem;\\n left: -1rem;\\n border-width: 0.5rem;\\n border-style: solid; }\\n.theme-dark .update-tooltip.ng-tooltip-right-bottom:before {\\n border-color: transparent #42505f #42505f transparent; }\\n.theme-gray .update-tooltip.ng-tooltip-right-bottom:before {\\n border-color: transparent #3e464c #3e464c transparent; }\\n.theme-white .update-tooltip.ng-tooltip-right-bottom:before {\\n border-color: transparent #ffffff #ffffff transparent; }\\n.ngx-contextmenu .dropdown-menu {\\n border: none;\\n padding: 0; }\\n.theme-dark .ngx-contextmenu .dropdown-menu {\\n background-color: #2b3644;\\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5); }\\n.theme-gray .ngx-contextmenu .dropdown-menu {\\n background-color: #292d31;\\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5); }\\n.theme-white .ngx-contextmenu .dropdown-menu {\\n background-color: #e0e0e0;\\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5); }\\n.ngx-contextmenu li {\\n display: block;\\n font-family: OpenSans, sans-serif;\\n font-size: 1.3rem;\\n text-transform: uppercase;\\n text-align: center; }\\n.ngx-contextmenu a {\\n display: block;\\n padding: 0.5em 1em; }\\n.theme-dark .ngx-contextmenu a {\\n color: #e0e0e0; }\\n.theme-gray .ngx-contextmenu a {\\n color: #e0e0e0; }\\n.theme-white .ngx-contextmenu a {\\n color: #43454b; }\\n.theme-dark .ngx-contextmenu a:hover {\\n background-color: #556576;\\n color: #e0e0e0; }\\n.theme-gray .ngx-contextmenu a:hover {\\n background-color: #515960;\\n color: #e0e0e0; }\\n.theme-white .ngx-contextmenu a:hover {\\n background-color: #ffffff;\\n color: #43454b; }\\n.ng-select.custom-select {\\n width: 100%; }\\n.ng-select.custom-select .ng-select-container {\\n border: none;\\n border-radius: 0;\\n cursor: pointer;\\n font-size: 1.4rem;\\n outline: none;\\n padding: 0 1rem;\\n height: 4.2rem; }\\n.theme-dark .ng-select.custom-select .ng-select-container {\\n background-color: #171e27;\\n color: #e0e0e0; }\\n.theme-gray .ng-select.custom-select .ng-select-container {\\n background-color: #292d31;\\n color: #e0e0e0; }\\n.theme-white .ng-select.custom-select .ng-select-container {\\n background-color: #e6e6e6;\\n color: #43454b; }\\n.ng-select.custom-select .ng-select-container .ng-value-container {\\n padding: 0; }\\n.ng-select.custom-select .ng-select-container .ng-value-container .ng-input {\\n top: auto; }\\n.ng-select.custom-select .ng-dropdown-panel {\\n border: none; }\\n.theme-dark .ng-select.custom-select .ng-dropdown-panel {\\n background-color: #171e27; }\\n.theme-gray .ng-select.custom-select .ng-dropdown-panel {\\n background-color: #292d31; }\\n.theme-white .ng-select.custom-select .ng-dropdown-panel {\\n background-color: #e6e6e6; }\\n.ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option {\\n font-size: 1.4rem;\\n padding: 1rem; }\\n.theme-dark .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option {\\n background-color: #171e27;\\n color: #e0e0e0; }\\n.theme-gray .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option {\\n background-color: #292d31;\\n color: #e0e0e0; }\\n.theme-white .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option {\\n background-color: #e6e6e6;\\n color: #43454b; }\\n.theme-dark .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked {\\n background-color: rgba(58, 69, 85, 0.5);\\n color: #e0e0e0; }\\n.theme-gray .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked {\\n background-color: rgba(58, 62, 66, 0.5);\\n color: #e0e0e0; }\\n.theme-white .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked {\\n background-color: rgba(240, 240, 240, 0.5);\\n color: #43454b; }\\n.theme-dark .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected {\\n background-color: rgba(43, 54, 68, 0.5);\\n color: #e0e0e0; }\\n.theme-gray .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected {\\n background-color: rgba(37, 40, 43, 0.5);\\n color: #e0e0e0; }\\n.theme-white .ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected {\\n background-color: rgba(224, 224, 224, 0.5);\\n color: #43454b; }\\n.ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items::-webkit-scrollbar {\\n background-color: transparent;\\n cursor: default;\\n width: 1rem;\\n height: 1rem; }\\n.ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items::-webkit-scrollbar-track {\\n background: transparent; }\\n.ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items::-webkit-scrollbar-thumb {\\n background-color: #556576;\\n background-clip: padding-box;\\n border: 0.25rem solid transparent;\\n border-radius: 0.5rem; }\\n.ng-select.custom-select .ng-dropdown-panel .ng-dropdown-panel-items::-webkit-scrollbar-thumb:hover {\\n background-color: #556576; }\\n.theme-dark app-modal-container .modal {\\n background: url('background-dark.png');\\n color: #e0e0e0; }\\n.theme-gray app-modal-container .modal {\\n background: url('background-gray.png');\\n color: #e0e0e0; }\\n.theme-white app-modal-container .modal {\\n background: url('background-white.png');\\n color: #43454b; }\\n.theme-dark app-modal-container .modal .content .icon.error {\\n background-color: #ff5252; }\\n.theme-gray app-modal-container .modal .content .icon.error {\\n background-color: #ff5252; }\\n.theme-white app-modal-container .modal .content .icon.error {\\n background-color: #ff5252; }\\n.theme-dark app-modal-container .modal .content .icon.success {\\n background-color: #5cda9d; }\\n.theme-gray app-modal-container .modal .content .icon.success {\\n background-color: #47cf8d; }\\n.theme-white app-modal-container .modal .content .icon.success {\\n background-color: #46c172; }\\n.theme-dark app-modal-container .modal .content .icon.info {\\n background-color: #4db1ff; }\\n.theme-gray app-modal-container .modal .content .icon.info {\\n background-color: #42a5f5; }\\n.theme-white app-modal-container .modal .content .icon.info {\\n background-color: #2c95f1; }\\n.theme-dark app-modal-container .modal .action-button {\\n background-color: #4db1ff;\\n color: #111921; }\\n.theme-gray app-modal-container .modal .action-button {\\n background-color: #42a5f5;\\n color: #1a1a1a; }\\n.theme-white app-modal-container .modal .action-button {\\n background-color: #2c95f1;\\n color: #fefefe; }\\n.theme-dark app-modal-container .modal .close-button .icon {\\n background-color: #556576; }\\n.theme-gray app-modal-container .modal .close-button .icon {\\n background-color: #515960; }\\n.theme-white app-modal-container .modal .close-button .icon {\\n background-color: #43454b; }\\n.theme-dark app-transaction-details .table {\\n border-top: 0.2rem solid #2b3644; }\\n.theme-gray app-transaction-details .table {\\n border-top: 0.2rem solid #2f3438; }\\n.theme-white app-transaction-details .table {\\n border-top: 0.2rem solid #ebebeb; }\\n.theme-dark app-transaction-details .table .row .cell.label {\\n color: #556576; }\\n.theme-gray app-transaction-details .table .row .cell.label {\\n color: #565c62; }\\n.theme-white app-transaction-details .table .row .cell.label {\\n color: #a0a5ab; }\\n.theme-dark app-transaction-details .table .row .cell.value {\\n color: #e0e0e0; }\\n.theme-gray app-transaction-details .table .row .cell.value {\\n color: #e0e0e0; }\\n.theme-white app-transaction-details .table .row .cell.value {\\n color: #43454b; }\\n.theme-dark app-transaction-details .table .row .cell.key-value {\\n color: #4db1ff; }\\n.theme-gray app-transaction-details .table .row .cell.key-value {\\n color: #42a5f5; }\\n.theme-white app-transaction-details .table .row .cell.key-value {\\n color: #2c95f1; }\\n.theme-dark app-progress-container .progress-bar-container {\\n color: #e0e0e0; }\\n.theme-gray app-progress-container .progress-bar-container {\\n color: #e0e0e0; }\\n.theme-white app-progress-container .progress-bar-container {\\n color: #43454b; }\\n.theme-dark app-progress-container .progress-bar-container .progress-bar {\\n background-color: #343f4a; }\\n.theme-gray app-progress-container .progress-bar-container .progress-bar {\\n background-color: #363a3e; }\\n.theme-white app-progress-container .progress-bar-container .progress-bar {\\n background-color: #dcdcdc; }\\n.theme-dark app-progress-container .progress-bar-container .progress-bar .progress-bar-full {\\n background-color: #5cda9d; }\\n.theme-gray app-progress-container .progress-bar-container .progress-bar .progress-bar-full {\\n background-color: #47cf8d; }\\n.theme-white app-progress-container .progress-bar-container .progress-bar .progress-bar-full {\\n background-color: #46c172; }\\n.theme-dark app-open-wallet-modal .modal {\\n background: url('background-dark.png');\\n color: #e0e0e0; }\\n.theme-gray app-open-wallet-modal .modal {\\n background: url('background-gray.png');\\n color: #e0e0e0; }\\n.theme-white app-open-wallet-modal .modal {\\n background: url('background-white.png');\\n color: #43454b; }\\napp-main, app-create-wallet, app-open-wallet, app-restore-wallet, app-seed-phrase, app-wallet-details, app-assign-alias, app-edit-alias, app-transfer-alias, app-settings, app-login {\\n flex: 1 1 auto;\\n padding: 3rem;\\n min-width: 85rem; }\\napp-main .content, app-create-wallet .content, app-open-wallet .content, app-restore-wallet .content, app-seed-phrase .content, app-wallet-details .content, app-assign-alias .content, app-edit-alias .content, app-transfer-alias .content, app-settings .content, app-login .content {\\n position: relative;\\n padding: 3rem;\\n min-height: 100%; }\\n.theme-dark app-main .content, .theme-dark app-create-wallet .content, .theme-dark app-open-wallet .content, .theme-dark app-restore-wallet .content, .theme-dark app-seed-phrase .content, .theme-dark app-wallet-details .content, .theme-dark app-assign-alias .content, .theme-dark app-edit-alias .content, .theme-dark app-transfer-alias .content, .theme-dark app-settings .content, .theme-dark app-login .content {\\n background-color: rgba(43, 54, 68, 0.5);\\n color: #e0e0e0; }\\n.theme-gray app-main .content, .theme-gray app-create-wallet .content, .theme-gray app-open-wallet .content, .theme-gray app-restore-wallet .content, .theme-gray app-seed-phrase .content, .theme-gray app-wallet-details .content, .theme-gray app-assign-alias .content, .theme-gray app-edit-alias .content, .theme-gray app-transfer-alias .content, .theme-gray app-settings .content, .theme-gray app-login .content {\\n background-color: rgba(37, 40, 43, 0.5);\\n color: #e0e0e0; }\\n.theme-white app-main .content, .theme-white app-create-wallet .content, .theme-white app-open-wallet .content, .theme-white app-restore-wallet .content, .theme-white app-seed-phrase .content, .theme-white app-wallet-details .content, .theme-white app-assign-alias .content, .theme-white app-edit-alias .content, .theme-white app-transfer-alias .content, .theme-white app-settings .content, .theme-white app-login .content {\\n background-color: rgba(255, 255, 255, 0.5);\\n color: #43454b; }\\napp-main .content .head, app-create-wallet .content .head, app-open-wallet .content .head, app-restore-wallet .content .head, app-seed-phrase .content .head, app-wallet-details .content .head, app-assign-alias .content .head, app-edit-alias .content .head, app-transfer-alias .content .head, app-settings .content .head, app-login .content .head {\\n position: absolute;\\n top: 0;\\n left: 0; }\\n.theme-dark app-main .content .add-wallet .add-wallet-help {\\n color: #4db1ff; }\\n.theme-gray app-main .content .add-wallet .add-wallet-help {\\n color: #42a5f5; }\\n.theme-white app-main .content .add-wallet .add-wallet-help {\\n color: #2c95f1; }\\n.theme-dark app-main .content .add-wallet .add-wallet-help .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-main .content .add-wallet .add-wallet-help .icon {\\n background-color: #42a5f5; }\\n.theme-white app-main .content .add-wallet .add-wallet-help .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-seed-phrase .seed-phrase-content {\\n background-color: #171e27;\\n color: #e0e0e0; }\\n.theme-gray app-seed-phrase .seed-phrase-content {\\n background-color: #292d31;\\n color: #e0e0e0; }\\n.theme-white app-seed-phrase .seed-phrase-content {\\n background-color: #e6e6e6;\\n color: #43454b; }\\n.theme-dark app-wallet-details .seed-phrase {\\n background-color: #171e27; }\\n.theme-gray app-wallet-details .seed-phrase {\\n background-color: #292d31; }\\n.theme-white app-wallet-details .seed-phrase {\\n background-color: #e6e6e6; }\\napp-settings .content {\\n height: 100%;\\n overflow-y: auto;\\n display: flex;\\n justify-content: space-between;\\n flex-direction: column; }\\n.theme-dark app-settings .content .theme-selection {\\n color: #556576; }\\n.theme-gray app-settings .content .theme-selection {\\n color: #565c62; }\\n.theme-white app-settings .content .theme-selection {\\n color: #a0a5ab; }\\n.theme-dark app-settings .content .scale-selection .button-block {\\n background-color: rgba(23, 31, 39, 0.5); }\\n.theme-gray app-settings .content .scale-selection .button-block {\\n background-color: rgba(28, 30, 33, 0.5); }\\n.theme-white app-settings .content .scale-selection .button-block {\\n background-color: rgba(224, 224, 224, 0.5); }\\n.theme-dark app-settings .content .scale-selection .button-block .label {\\n color: #556576; }\\n.theme-gray app-settings .content .scale-selection .button-block .label {\\n color: #565c62; }\\n.theme-white app-settings .content .scale-selection .button-block .label {\\n color: #a0a5ab; }\\n.theme-dark app-settings .content .scale-selection .button-block.active {\\n background-color: #4db1ff; }\\n.theme-gray app-settings .content .scale-selection .button-block.active {\\n background-color: #42a5f5; }\\n.theme-white app-settings .content .scale-selection .button-block.active {\\n background-color: #2c95f1; }\\n.theme-dark app-settings .content .scale-selection .button-block.active .label {\\n color: #4db1ff; }\\n.theme-gray app-settings .content .scale-selection .button-block.active .label {\\n color: #42a5f5; }\\n.theme-white app-settings .content .scale-selection .button-block.active .label {\\n color: #2c95f1; }\\napp-login {\\n min-width: inherit; }\\n.theme-dark app-sidebar {\\n background-color: #171f27; }\\n.theme-gray app-sidebar {\\n background-color: #1c1e21; }\\n.theme-white app-sidebar {\\n background-color: white; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\\n color: #e0e0e0; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\\n color: #e0e0e0; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\\n color: #43454b; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-header button {\\n color: #4db1ff; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-header button {\\n color: #42a5f5; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-header button {\\n color: #2c95f1; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\\n background-color: transparent;\\n color: #e0e0e0; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\\n background-color: transparent;\\n color: #e0e0e0; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\\n background-color: transparent;\\n color: #43454b; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\\n color: #556576; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\\n color: #565c62; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\\n color: #a0a5ab; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\\n background-color: #42a5f5; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\\n background-color: #4db1ff;\\n color: #111921; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\\n background-color: #42a5f5;\\n color: #1a1a1a; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\\n background-color: #2c95f1;\\n color: #fefefe; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\\n background-color: #343f4a; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\\n background-color: #363a3e; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\\n background-color: #dcdcdc; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\\n background-color: #4db1ff; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\\n background-color: #42a5f5; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\\n background-color: #2c95f1; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\\n color: #556576; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\\n color: #565c62; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\\n color: #a0a5ab; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\\n background-color: rgba(43, 54, 68, 0.5);\\n color: #e0e0e0; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\\n background-color: rgba(37, 40, 43, 0.5);\\n color: #e0e0e0; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\\n background-color: #1e88e5;\\n color: #ffffff; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\\n color: #556576; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\\n color: #565c62; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\\n color: #91baf1; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\\n background-color: #4db1ff;\\n color: #111921; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\\n background-color: #42a5f5;\\n color: #1a1a1a; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\\n background-color: #ffffff;\\n color: #43454b; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\\n background-color: #000000;\\n color: #e0e0e0; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\\n background-color: #000000;\\n color: #e0e0e0; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\\n background-color: #ffffff;\\n color: #43454b; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\\n color: #556576; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\\n color: #565c62; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\\n color: #91baf1; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\\n background-color: rgba(58, 69, 85, 0.5); }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\\n background-color: rgba(58, 62, 66, 0.5); }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\\n background-color: rgba(240, 240, 240, 0.5); }\\n.theme-dark app-sidebar .sidebar-accounts:after {\\n background: linear-gradient(to bottom, transparent 0%, #171f27 100%); }\\n.theme-gray app-sidebar .sidebar-accounts:after {\\n background: linear-gradient(to bottom, transparent 0%, #1c1e21 100%); }\\n.theme-white app-sidebar .sidebar-accounts:after {\\n background: linear-gradient(to bottom, transparent 0%, white 100%); }\\n.theme-dark app-sidebar .sidebar-settings {\\n border-bottom: 0.2rem solid #1f2833; }\\n.theme-gray app-sidebar .sidebar-settings {\\n border-bottom: 0.2rem solid #2e3337; }\\n.theme-white app-sidebar .sidebar-settings {\\n border-bottom: 0.2rem solid #ebebeb; }\\n.theme-dark app-sidebar .sidebar-settings .wrap-button button {\\n color: #e0e0e0; }\\n.theme-gray app-sidebar .sidebar-settings .wrap-button button {\\n color: #e0e0e0; }\\n.theme-white app-sidebar .sidebar-settings .wrap-button button {\\n color: #43454b; }\\n.theme-dark app-sidebar .sidebar-settings .wrap-button button .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-sidebar .sidebar-settings .wrap-button button .icon {\\n background-color: #42a5f5; }\\n.theme-white app-sidebar .sidebar-settings .wrap-button button .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-sidebar .sidebar-settings .wrap-button.active button {\\n background-color: rgba(43, 54, 68, 0.5) !important;\\n color: #e0e0e0 !important; }\\n.theme-gray app-sidebar .sidebar-settings .wrap-button.active button {\\n background-color: rgba(37, 40, 43, 0.5) !important;\\n color: #e0e0e0 !important; }\\n.theme-white app-sidebar .sidebar-settings .wrap-button.active button {\\n background-color: #1e88e5 !important;\\n color: #ffffff !important; }\\n.theme-dark app-sidebar .sidebar-settings .wrap-button.active button .icon {\\n background-color: #4db1ff !important; }\\n.theme-gray app-sidebar .sidebar-settings .wrap-button.active button .icon {\\n background-color: #42a5f5 !important; }\\n.theme-white app-sidebar .sidebar-settings .wrap-button.active button .icon {\\n background-color: #ffffff !important; }\\n.theme-dark app-sidebar .sidebar-synchronization-status {\\n color: #556576; }\\n.theme-gray app-sidebar .sidebar-synchronization-status {\\n color: #565c62; }\\n.theme-white app-sidebar .sidebar-synchronization-status {\\n color: #a0a5ab; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .offline:before {\\n background-color: #ff5252; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .offline:before {\\n background-color: #ff5252; }\\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .offline:before {\\n background-color: #ff5252; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .online:before {\\n background-color: #5cda9d; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .online:before {\\n background-color: #47cf8d; }\\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .online:before {\\n background-color: #46c172; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar {\\n background-color: #343f4a; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar {\\n background-color: #363a3e; }\\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar {\\n background-color: #dcdcdc; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar .fill {\\n background-color: #5cda9d; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar .fill {\\n background-color: #47cf8d; }\\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .syncing .progress-bar .fill {\\n background-color: #46c172; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .loading {\\n background-color: #5cda9d; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .loading {\\n background-color: #47cf8d; }\\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .progress-bar-container .loading {\\n background-color: #46c172; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .standard {\\n color: #4db1ff; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .standard {\\n color: #42a5f5; }\\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .standard {\\n color: #2c95f1; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .important {\\n color: #ff6f00; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .important {\\n color: #ff6f00; }\\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .important {\\n color: #ff6f00; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .critical {\\n color: #ff5252; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .critical {\\n color: #ff5252; }\\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .critical {\\n color: #ff5252; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .time {\\n color: #ff6f00; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .time {\\n color: #ff6f00; }\\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .time {\\n color: #ff6f00; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .icon.standard {\\n background-color: #4db1ff; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .icon.standard {\\n background-color: #42a5f5; }\\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .icon.standard {\\n background-color: #2c95f1; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .icon.important {\\n background-color: #ff6f00; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .icon.important {\\n background-color: #ff6f00; }\\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .icon.important {\\n background-color: #ff6f00; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .icon.critical {\\n background-color: #ff5252; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .icon.critical {\\n background-color: #ff5252; }\\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .icon.critical {\\n background-color: #ff5252; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .update-container .icon.time {\\n background-color: #ff6f00; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .update-container .icon.time {\\n background-color: #ff6f00; }\\n.theme-white app-sidebar .sidebar-synchronization-status .update-container .icon.time {\\n background-color: #ff6f00; }\\n.theme-dark app-wallet {\\n color: #e0e0e0; }\\n.theme-gray app-wallet {\\n color: #e0e0e0; }\\n.theme-white app-wallet {\\n color: #43454b; }\\n.theme-dark app-wallet .header button {\\n color: #e0e0e0; }\\n.theme-gray app-wallet .header button {\\n color: #e0e0e0; }\\n.theme-white app-wallet .header button {\\n color: #43454b; }\\n.theme-dark app-wallet .header button .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-wallet .header button .icon {\\n background-color: #42a5f5; }\\n.theme-white app-wallet .header button .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-wallet .header .alias .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-wallet .header .alias .icon {\\n background-color: #42a5f5; }\\n.theme-white app-wallet .header .alias .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-wallet .address {\\n color: #4db1ff; }\\n.theme-gray app-wallet .address {\\n color: #42a5f5; }\\n.theme-white app-wallet .address {\\n color: #2c95f1; }\\n.theme-dark app-wallet .address .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-wallet .address .icon {\\n background-color: #42a5f5; }\\n.theme-white app-wallet .address .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-wallet .tabs .tabs-header .tab {\\n background-color: rgba(23, 31, 39, 0.5); }\\n.theme-gray app-wallet .tabs .tabs-header .tab {\\n background-color: rgba(28, 30, 33, 0.5); }\\n.theme-white app-wallet .tabs .tabs-header .tab {\\n background-color: rgba(224, 224, 224, 0.5); }\\n.theme-dark app-wallet .tabs .tabs-header .tab .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-wallet .tabs .tabs-header .tab .icon {\\n background-color: #42a5f5; }\\n.theme-white app-wallet .tabs .tabs-header .tab .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-wallet .tabs .tabs-header .tab .indicator {\\n background-color: #4db1ff;\\n color: #111921; }\\n.theme-gray app-wallet .tabs .tabs-header .tab .indicator {\\n background-color: #42a5f5;\\n color: #1a1a1a; }\\n.theme-white app-wallet .tabs .tabs-header .tab .indicator {\\n background-color: #ffffff;\\n color: #43454b; }\\n.theme-dark app-wallet .tabs .tabs-header .tab.active {\\n background-color: rgba(43, 54, 68, 0.5); }\\n.theme-gray app-wallet .tabs .tabs-header .tab.active {\\n background-color: rgba(37, 40, 43, 0.5); }\\n.theme-white app-wallet .tabs .tabs-header .tab.active {\\n background-color: rgba(255, 255, 255, 0.5); }\\n.theme-dark app-wallet .tabs .tabs-header .tab:hover:not(.active):not(.disabled) {\\n background-color: rgba(58, 69, 85, 0.5); }\\n.theme-gray app-wallet .tabs .tabs-header .tab:hover:not(.active):not(.disabled) {\\n background-color: rgba(58, 62, 66, 0.5); }\\n.theme-white app-wallet .tabs .tabs-header .tab:hover:not(.active):not(.disabled) {\\n background-color: #ffffff; }\\n.theme-dark app-wallet .tabs .tabs-content {\\n background-color: rgba(43, 54, 68, 0.5); }\\n.theme-gray app-wallet .tabs .tabs-content {\\n background-color: rgba(37, 40, 43, 0.5); }\\n.theme-white app-wallet .tabs .tabs-content {\\n background-color: rgba(255, 255, 255, 0.5); }\\n.theme-dark app-send .form-send .send-select {\\n color: #e0e0e0; }\\n.theme-gray app-send .form-send .send-select {\\n color: #e0e0e0; }\\n.theme-white app-send .form-send .send-select {\\n color: #43454b; }\\n.theme-dark app-send .form-send .send-select .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-send .form-send .send-select .icon {\\n background-color: #42a5f5; }\\n.theme-white app-send .form-send .send-select .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-send .form-send .additional-details {\\n border: 0.2rem solid #2b3644; }\\n.theme-gray app-send .form-send .additional-details {\\n border: 0.2rem solid #2f3438; }\\n.theme-white app-send .form-send .additional-details {\\n border: 0.2rem solid #ebebeb; }\\n.theme-dark app-receive .btn-copy-address {\\n background-color: #4db1ff; }\\n.theme-gray app-receive .btn-copy-address {\\n background-color: #42a5f5; }\\n.theme-white app-receive .btn-copy-address {\\n background-color: #2c95f1; }\\n.theme-dark app-history table tbody tr.locked-transaction {\\n color: #556576; }\\n.theme-gray app-history table tbody tr.locked-transaction {\\n color: #565c62; }\\n.theme-white app-history table tbody tr.locked-transaction {\\n color: #a0a5ab; }\\n.theme-dark app-history table tbody tr:nth-child(4n+1) {\\n background-color: #18202a; }\\n.theme-gray app-history table tbody tr:nth-child(4n+1) {\\n background-color: #25292d; }\\n.theme-white app-history table tbody tr:nth-child(4n+1) {\\n background-color: #ffffff; }\\n.theme-dark app-history table tbody tr:nth-child(4n+2) {\\n background-color: #18202a; }\\n.theme-gray app-history table tbody tr:nth-child(4n+2) {\\n background-color: #25292d; }\\n.theme-white app-history table tbody tr:nth-child(4n+2) {\\n background-color: #ffffff; }\\n.theme-dark app-history table tbody tr:nth-child(4n+3) {\\n background-color: transparent; }\\n.theme-gray app-history table tbody tr:nth-child(4n+3) {\\n background-color: transparent; }\\n.theme-white app-history table tbody tr:nth-child(4n+3) {\\n background-color: transparent; }\\n.theme-dark app-history table tbody tr:nth-child(4n+4) {\\n background-color: transparent; }\\n.theme-gray app-history table tbody tr:nth-child(4n+4) {\\n background-color: transparent; }\\n.theme-white app-history table tbody tr:nth-child(4n+4) {\\n background-color: transparent; }\\n.theme-dark app-history table tbody tr .status .confirmation {\\n background-color: #343f4a; }\\n.theme-gray app-history table tbody tr .status .confirmation {\\n background-color: #363a3e; }\\n.theme-white app-history table tbody tr .status .confirmation {\\n background-color: #dcdcdc; }\\n.theme-dark app-history table tbody tr .status .confirmation .fill {\\n background-color: #5cda9d; }\\n.theme-gray app-history table tbody tr .status .confirmation .fill {\\n background-color: #47cf8d; }\\n.theme-white app-history table tbody tr .status .confirmation .fill {\\n background-color: #46c172; }\\n.theme-dark app-history table tbody tr .lock-transaction {\\n background-color: #ff6f00; }\\n.theme-gray app-history table tbody tr .lock-transaction {\\n background-color: #ff6f00; }\\n.theme-white app-history table tbody tr .lock-transaction {\\n background-color: #ff6f00; }\\n.theme-dark app-history table tbody tr .status.send .status-transaction {\\n background-color: #ff5252; }\\n.theme-gray app-history table tbody tr .status.send .status-transaction {\\n background-color: #ff5252; }\\n.theme-white app-history table tbody tr .status.send .status-transaction {\\n background-color: #ff5252; }\\n.theme-dark app-history table tbody tr .status.received .status-transaction {\\n background-color: #5cda9d; }\\n.theme-gray app-history table tbody tr .status.received .status-transaction {\\n background-color: #47cf8d; }\\n.theme-white app-history table tbody tr .status.received .status-transaction {\\n background-color: #46c172; }\\n.theme-dark app-contracts .wrap-table .contract .icon.new, .theme-dark app-contracts .wrap-table .contract .icon.alert {\\n background-color: #ff5252; }\\n.theme-gray app-contracts .wrap-table .contract .icon.new, .theme-gray app-contracts .wrap-table .contract .icon.alert {\\n background-color: #ff5252; }\\n.theme-white app-contracts .wrap-table .contract .icon.new, .theme-white app-contracts .wrap-table .contract .icon.alert {\\n background-color: #ff5252; }\\n.theme-dark app-contracts .wrap-table .contract .icon.purchase, .theme-dark app-contracts .wrap-table .contract .icon.sell {\\n background-color: #4db1ff; }\\n.theme-gray app-contracts .wrap-table .contract .icon.purchase, .theme-gray app-contracts .wrap-table .contract .icon.sell {\\n background-color: #42a5f5; }\\n.theme-white app-contracts .wrap-table .contract .icon.purchase, .theme-white app-contracts .wrap-table .contract .icon.sell {\\n background-color: #2c95f1; }\\n.theme-dark app-purchase .form-purchase .purchase-select {\\n color: #e0e0e0; }\\n.theme-gray app-purchase .form-purchase .purchase-select {\\n color: #e0e0e0; }\\n.theme-white app-purchase .form-purchase .purchase-select {\\n color: #43454b; }\\n.theme-dark app-purchase .form-purchase .purchase-select .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-purchase .form-purchase .purchase-select .icon {\\n background-color: #42a5f5; }\\n.theme-white app-purchase .form-purchase .purchase-select .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-purchase .form-purchase .purchase-states {\\n color: #4db1ff; }\\n.theme-gray app-purchase .form-purchase .purchase-states {\\n color: #42a5f5; }\\n.theme-white app-purchase .form-purchase .purchase-states {\\n color: #2c95f1; }\\n.theme-dark app-purchase .form-purchase .additional-details {\\n border: 0.2rem solid #2b3644; }\\n.theme-gray app-purchase .form-purchase .additional-details {\\n border: 0.2rem solid #2f3438; }\\n.theme-white app-purchase .form-purchase .additional-details {\\n border: 0.2rem solid #ebebeb; }\\n.theme-dark app-purchase .progress-bar-container .progress-bar {\\n background-color: #343f4a; }\\n.theme-gray app-purchase .progress-bar-container .progress-bar {\\n background-color: #363a3e; }\\n.theme-white app-purchase .progress-bar-container .progress-bar {\\n background-color: #dcdcdc; }\\n.theme-dark app-purchase .progress-bar-container .progress-bar .progress-bar-full {\\n background-color: #5cda9d; }\\n.theme-gray app-purchase .progress-bar-container .progress-bar .progress-bar-full {\\n background-color: #47cf8d; }\\n.theme-white app-purchase .progress-bar-container .progress-bar .progress-bar-full {\\n background-color: #46c172; }\\napp-messages table tbody tr td:first-child span {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n.theme-dark app-messages table tbody tr td:first-child .icon {\\n background-color: #ff5252; }\\n.theme-gray app-messages table tbody tr td:first-child .icon {\\n background-color: #ff5252; }\\n.theme-white app-messages table tbody tr td:first-child .icon {\\n background-color: #ff5252; }\\n.theme-dark app-typing-message .head .interlocutor {\\n color: #4db1ff; }\\n.theme-gray app-typing-message .head .interlocutor {\\n color: #42a5f5; }\\n.theme-white app-typing-message .head .interlocutor {\\n color: #2c95f1; }\\n.theme-dark app-typing-message .messages-content .messages-list div.date {\\n color: #556576; }\\n.theme-gray app-typing-message .messages-content .messages-list div.date {\\n color: #565c62; }\\n.theme-white app-typing-message .messages-content .messages-list div.date {\\n color: #a0a5ab; }\\n.theme-dark app-typing-message .messages-content .messages-list div.my {\\n background-color: #2a3544; }\\n.theme-gray app-typing-message .messages-content .messages-list div.my {\\n background-color: #30363c; }\\n.theme-white app-typing-message .messages-content .messages-list div.my {\\n background-color: #fff; }\\napp-typing-message .messages-content .messages-list div.my:before {\\n content: \\\"\\\";\\n display: block;\\n position: absolute;\\n top: 0;\\n left: -1.1rem;\\n border: 1.2rem solid transparent; }\\n.theme-dark app-typing-message .messages-content .messages-list div.my:before {\\n border-top-color: #2a3544; }\\n.theme-gray app-typing-message .messages-content .messages-list div.my:before {\\n border-top-color: #30363c; }\\n.theme-white app-typing-message .messages-content .messages-list div.my:before {\\n border-top-color: #fff; }\\n.theme-dark app-typing-message .messages-content .messages-list div.buddy {\\n background-color: #18202a; }\\n.theme-gray app-typing-message .messages-content .messages-list div.buddy {\\n background-color: #25292d; }\\n.theme-white app-typing-message .messages-content .messages-list div.buddy {\\n background-color: #ededed; }\\napp-typing-message .messages-content .messages-list div.buddy:after {\\n content: \\\"\\\";\\n display: block;\\n position: absolute;\\n right: -1.1rem;\\n top: 0;\\n border: 1.2rem solid transparent; }\\n.theme-dark app-typing-message .messages-content .messages-list div.buddy:after {\\n border-top-color: #18202a; }\\n.theme-gray app-typing-message .messages-content .messages-list div.buddy:after {\\n border-top-color: #25292d; }\\n.theme-white app-typing-message .messages-content .messages-list div.buddy:after {\\n border-top-color: #ededed; }\\n.theme-dark app-staking .chart-header .general .label {\\n color: #556576; }\\n.theme-gray app-staking .chart-header .general .label {\\n color: #565c62; }\\n.theme-white app-staking .chart-header .general .label {\\n color: #a0a5ab; }\\n.theme-dark app-staking .chart-header .general .options {\\n color: #e0e0e0; }\\n.theme-gray app-staking .chart-header .general .options {\\n color: #e0e0e0; }\\n.theme-white app-staking .chart-header .general .options {\\n color: #43454b; }\\napp-staking .chart-header .selected {\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n flex-grow: 1;\\n font-size: 1.6rem; }\\n.theme-dark app-staking .chart-options .title {\\n color: #556576; }\\n.theme-gray app-staking .chart-options .title {\\n color: #565c62; }\\n.theme-white app-staking .chart-options .title {\\n color: #a0a5ab; }\\n.theme-dark app-staking .chart-options .options button {\\n color: #e0e0e0;\\n background-color: #2b3644; }\\n.theme-gray app-staking .chart-options .options button {\\n color: #e0e0e0;\\n background-color: #292d31; }\\n.theme-white app-staking .chart-options .options button {\\n color: #43454b;\\n background-color: #e0e0e0; }\\n.theme-dark app-staking .chart-options .options button.active {\\n background-color: #556576; }\\n.theme-gray app-staking .chart-options .options button.active {\\n background-color: #515960; }\\n.theme-white app-staking .chart-options .options button.active {\\n background-color: #ffffff; }\\n.input-block-alias {\\n position: relative; }\\n.input-block-alias .alias-dropdown {\\n position: absolute;\\n top: 6.5rem;\\n max-height: 10rem;\\n overflow: auto;\\n width: 100%; }\\n.theme-dark .input-block-alias .alias-dropdown {\\n background-color: #171e27;\\n color: #e0e0e0; }\\n.theme-gray .input-block-alias .alias-dropdown {\\n background-color: #292d31;\\n color: #e0e0e0; }\\n.theme-white .input-block-alias .alias-dropdown {\\n background-color: #e6e6e6;\\n color: #43454b; }\\n.input-block-alias .alias-dropdown div {\\n font-size: 1.4rem;\\n padding: 1rem; }\\n.theme-dark .input-block-alias .alias-dropdown div:hover {\\n background-color: rgba(58, 69, 85, 0.5); }\\n.theme-gray .input-block-alias .alias-dropdown div:hover {\\n background-color: rgba(58, 62, 66, 0.5); }\\n.theme-white .input-block-alias .alias-dropdown div:hover {\\n background-color: rgba(240, 240, 240, 0.5); }\\n.head {\\n display: flex;\\n align-items: flex-end;\\n justify-content: space-between;\\n font-size: 1.3rem;\\n padding: 0 3rem;\\n width: 100%;\\n height: 3rem; }\\n.theme-dark .head {\\n color: #4db1ff; }\\n.theme-gray .head {\\n color: #42a5f5; }\\n.theme-white .head {\\n color: #2c95f1; }\\n.head .breadcrumbs > span:not(:last-child), .head .breadcrumbs a:not(:last-child) {\\n position: relative;\\n cursor: pointer;\\n margin-right: 20px;\\n outline-style: none; }\\n.head .breadcrumbs > span:not(:last-child):after, .head .breadcrumbs a:not(:last-child):after {\\n content: \\\"\\\";\\n display: block;\\n position: absolute;\\n top: 0.5rem;\\n right: -1.5rem;\\n width: 0.9rem;\\n height: 0.9rem;\\n -webkit-mask: url('arrow-right.svg') no-repeat center;\\n mask: url('arrow-right.svg') no-repeat center;\\n -webkit-mask-size: cover;\\n mask-size: cover; }\\n.theme-dark .head .breadcrumbs > span:not(:last-child):after, .theme-dark .head .breadcrumbs a:not(:last-child):after {\\n background-color: #4db1ff; }\\n.theme-gray .head .breadcrumbs > span:not(:last-child):after, .theme-gray .head .breadcrumbs a:not(:last-child):after {\\n background-color: #42a5f5; }\\n.theme-white .head .breadcrumbs > span:not(:last-child):after, .theme-white .head .breadcrumbs a:not(:last-child):after {\\n background-color: #2c95f1; }\\n.head .back-btn {\\n display: flex;\\n align-items: center;\\n background-color: transparent;\\n color: #4db1ff;\\n font-size: inherit;\\n font-weight: 400;\\n line-height: 1.3rem;\\n padding: 0;\\n height: auto; }\\n.head .back-btn .icon {\\n margin-right: 0.7rem;\\n -webkit-mask: url('back.svg') no-repeat center;\\n mask: url('back.svg') no-repeat center;\\n width: 0.9rem;\\n height: 0.9rem; }\\n.theme-dark .head .back-btn .icon {\\n background-color: #4db1ff; }\\n.theme-gray .head .back-btn .icon {\\n background-color: #42a5f5; }\\n.theme-white .head .back-btn .icon {\\n background-color: #2c95f1; }\\n.scrolled-content::-webkit-scrollbar {\\n background-color: transparent;\\n cursor: default;\\n width: 1rem;\\n height: 1rem; }\\n.scrolled-content::-webkit-scrollbar-track {\\n background: transparent; }\\n.scrolled-content::-webkit-scrollbar-thumb {\\n background-color: #556576;\\n background-clip: padding-box;\\n border: 0.25rem solid transparent;\\n border-radius: 0.5rem; }\\n.scrolled-content::-webkit-scrollbar-thumb:hover {\\n background-color: #556576; }\\ntable {\\n font-size: 1.3rem;\\n width: 100%; }\\ntable thead {\\n text-align: left; }\\n.theme-dark table thead {\\n color: #556576; }\\n.theme-gray table thead {\\n color: #565c62; }\\n.theme-white table thead {\\n color: #a0a5ab; }\\ntable thead tr {\\n height: 4rem; }\\ntable thead tr th {\\n padding: 1rem;\\n vertical-align: bottom; }\\ntable thead tr th:first-child {\\n padding-left: 3rem; }\\ntable thead tr th:last-child {\\n padding-right: 3rem; }\\ntable tbody {\\n text-align: left; }\\n.theme-dark table tbody {\\n color: #e0e0e0; }\\n.theme-gray table tbody {\\n color: #e0e0e0; }\\n.theme-white table tbody {\\n color: #43454b; }\\ntable tbody tr {\\n height: 3.5rem; }\\n.theme-dark table tbody tr:nth-child(odd) {\\n background-color: #18202a; }\\n.theme-gray table tbody tr:nth-child(odd) {\\n background-color: #25292d; }\\n.theme-white table tbody tr:nth-child(odd) {\\n background-color: #ffffff; }\\ntable tbody tr td {\\n line-height: 1.7rem;\\n padding: 0 1rem;\\n vertical-align: middle;\\n white-space: nowrap;\\n max-width: 20rem; }\\ntable tbody tr td:first-child {\\n padding-left: 3rem; }\\ntable tbody tr td:last-child {\\n padding-right: 3rem; }\\n@font-face {\\n font-family: OpenSans;\\n src: url('OpenSans-Light.ttf');\\n font-weight: 300; }\\n@font-face {\\n font-family: OpenSans;\\n src: url('OpenSans-Regular.ttf');\\n font-weight: 400; }\\n@font-face {\\n font-family: OpenSans;\\n src: url('OpenSans-SemiBold.ttf');\\n font-weight: 600; }\\n@font-face {\\n font-family: OpenSans;\\n src: url('OpenSans-Bold.ttf');\\n font-weight: 700; }\\n@font-face {\\n font-family: OpenSans;\\n src: url('OpenSans-ExtraBold.ttf');\\n font-weight: 800; }\\nhtml {\\n font-family: OpenSans, sans-serif;\\n font-size: 10px; }\\nbody {\\n font-family: OpenSans, sans-serif;\\n font-size: 1.6rem;\\n width: 100vw;\\n height: 100vh; }\\nbody.theme-dark {\\n background: #131921 url('background-dark.png') no-repeat center;\\n background-size: cover; }\\nbody.theme-gray {\\n background: #101417 url('background-gray.png') no-repeat center;\\n background-size: cover; }\\nbody.theme-white {\\n background: #eeeeee url('background-white.png') no-repeat center;\\n background-size: cover; }\\nbody app-root {\\n display: flex;\\n width: 100%;\\n height: 100%; }\\n.update-tooltip .tooltip-inner .icon {\\n -webkit-mask: url('update-alert.svg') no-repeat center;\\n mask: url('update-alert.svg') no-repeat center; }\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxiYXNlXFxfbWl4aW5zLnNjc3MiLCJzcmMvc3R5bGVzLnNjc3MiLCJub2RlX21vZHVsZXMvQG5nLXNlbGVjdC9uZy1zZWxlY3QvdGhlbWVzL2RlZmF1bHQudGhlbWUuY3NzIiwic3JjL0Q6XFxQcm9qZWN0c1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXGJhc2VcXF9udWxsLnNjc3MiLCJzcmMvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcYmFzZVxcX2Jhc2Uuc2NzcyIsInNyYy9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxiYXNlXFxfdGhlbWUuc2NzcyIsInNyYy9EOlxcUHJvamVjdHNcXHphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxsYXlvdXRcXF9tYWluLnNjc3MiLCJzcmMvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcbGF5b3V0XFxfc2lkZWJhci5zY3NzIiwic3JjL0Q6XFxQcm9qZWN0c1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXGxheW91dFxcX3dhbGxldC5zY3NzIiwic3JjL0Q6XFxQcm9qZWN0c1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXG1vZHVsZXNcXF9oZWFkLnNjc3MiLCJzcmMvRDpcXFByb2plY3RzXFx6YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcbW9kdWxlc1xcX3Njcm9sbC5zY3NzIiwic3JjL0Q6XFxQcm9qZWN0c1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXG1vZHVsZXNcXF90YWJsZS5zY3NzIiwic3JjL0Q6XFxQcm9qZWN0c1xcemFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxzdHlsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4RUE7O0NDNUVDO0FDRkQsaURBQWlELGVBQWUsQ0FBQyxpQ0FBaUM7QUFBQyx1REFBdUQsZUFBZTtBQUFDLDJEQUEyRCxRQUFRLENBQUMseUNBQXlDLENBQUMsc0JBQXNCO0FBQUMsaUVBQWlFLHlDQUF5QztBQUFDLGtFQUFrRSw0QkFBNEIsQ0FBQywyQkFBMkI7QUFBQywrREFBK0QseUJBQXlCLENBQUMsd0JBQXdCO0FBQUMseUVBQXlFLG9CQUFvQixDQUFDLDBFQUEwRTtBQUFDLG1EQUFtRCx3QkFBd0I7QUFBQyx5Q0FBeUMsWUFBWTtBQUFDLGdDQUFnQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsa0JBQWtCO0FBQUMsc0NBQXNDLG1DQUFtQztBQUFDLG9EQUFvRCxrQkFBa0IsQ0FBQyxpQkFBaUI7QUFBQyxnRUFBZ0Usa0JBQWtCLENBQUMsY0FBYztBQUFDLG9FQUFvRSxVQUFVO0FBQUMsaURBQWlELFdBQVc7QUFBQywrRUFBK0UsT0FBTyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0I7QUFBQywyRkFBMkYsa0JBQWtCLENBQUMsaUJBQWlCO0FBQUMsb0dBQW9HLHdCQUF3QixDQUFDLHdCQUF3QjtBQUFDLG9IQUFvSCxhQUFhO0FBQUMsdUVBQXVFLGVBQWUsQ0FBQyxnQkFBZ0I7QUFBQyxtRkFBbUYsaUJBQWlCLENBQUMsY0FBYztBQUFDLGlG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d0JnQztJRHZCaEMsY0NpQjJCLEVBQUE7QUxrQjdCO0lJcENFLHlCQ2dGZ0M7SUQvRWhDLGNDeUUyQixFQUFBO0FMdEM3QjtJSTdCSSx5QkN0Q3lCLEVBQUE7QUxtRTdCO0lJN0JJLHlCQ2tCeUIsRUFBQTtBTFc3QjtJSTdCSSx5QkMwRXlCLEVBQUE7QUw3QzdCO0lJdEJJLHlCQzVDeUIsRUFBQTtBTGtFN0I7SUl0QkkseUJDWXlCLEVBQUE7QUxVN0I7SUl0QkkseUJDb0V5QixFQUFBO0FMOUM3QjtJSWRFLHlCQ2hEaUM7SURpRGpDLGNDN0QyQixFQUFBO0FMMEU3QjtJSWRFLHlCQ1FpQztJRFBqQyxjQ0wyQixFQUFBO0FMa0I3QjtJSWRFLHlCQ2dFaUM7SUQvRGpDLGNDbUQyQixFQUFBO0FMdEM3QjtJSVBJLHlCQ3REMEIsRUFBQTtBTDZEOUI7SUlQSSx5QkNFMEIsRUFBQTtBTEs5QjtJSVBJLHlCQzBEMEIsRUFBQTtBTG5EOUI7SUlBSSx5QkM1RDBCLEVBQUE7QUw0RDlCO0lJQUkseUJDSjBCLEVBQUE7QUxJOUI7SUlBSSx5QkNvRDBCLEVBQUE7QUxwRDlCO0lJUUUseUJDbkVxQztJRG9FckMsY0NuRjJCLEVBQUE7QUwwRTdCO0lJUUUseUJDWHFDO0lEWXJDLGNDM0IyQixFQUFBO0FMa0I3QjtJSVFFLHlCQzZDcUM7SUQ1Q3JDLGNDNkIyQixFQUFBO0FMdEM3QjtJSWVJLHlCQ3pFOEIsRUFBQTtBTDBEbEM7SUllSSx5QkNqQjhCLEVBQUE7QUxFbEM7SUllSSx5QkN1QzhCLEVBQUE7QUx0RGxDO0lJc0JJLHlCQy9FOEIsRUFBQTtBTHlEbEM7SUlzQkkseUJDdkI4QixFQUFBO0FMQ2xDO0lJc0JJLHlCQ2lDOEIsRUFBQTtBRDdIdEM7SUFrR0ksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUIsRUFBQTtBSjlCdkI7TUlpQ0UsNkJBQTZCO01BQzdCLDRCQzFGbUM7TUQyRm5DLGNDOUdvQixFQUFBO0FMMkV0QjtNSWlDRSw2QkFBNkI7TUFDN0IsNEJDbENtQztNRG1DbkMsY0N0RG9CLEVBQUE7QUxt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cUIyQjtJRG9xQjNCLGNDM3NCa0IsRUFBQTtBTG1CdEI7SUl1ckJJLHlCQzNtQjJCO0lENG1CM0IsY0NucEJrQixFQUFBO0FEeXBCMUI7RUFHSSxXQUFXLEVBQUE7QUFIZjtJQU1NLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsZUFBZTtJQUNmLGNBQWMsRUFBQTtBSjFzQmhCO01JNnNCSSx5QkNwd0J5QjtNRHF3QnpCLGNDenhCa0IsRUFBQTtBTDJFdEI7TUk2c0JJLHlCQzVzQnlCO01ENnNCekIsY0NqdUJrQixFQUFBO0FMbUJ0QjtNSTZzQkkseUJDcHBCeUI7TURxcEJ6QixjQ3pxQmtCLEVBQUE7QUR5cEIxQjtNQW9CUSxVQUFVLEVBQUE7QUFwQmxCO1FBdUJVLFNBQVMsRUFBQTtBQXZCbkI7SUE2Qk0sWUFBWSxFQUFBO0FKM3RCZDtNSTh0QkkseUJDcnhCeUIsRUFBQTtBTHVEN0I7TUk4dEJJLHlCQzd0QnlCLEVBQUE7QUxEN0I7TUk4dEJJLHlCQ3JxQnlCLEVBQUE7QURxb0JqQztNQXNDVSxpQkFBaUI7TUFDakIsYUFBYSxFQUFBO0FKcnVCbkI7UUl3dUJRLHlCQy94QnFCO1FEZ3lCckIsY0NwekJjLEVBQUE7QUwyRXRCO1FJd3VCUSx5QkN2dUJxQjtRRHd1QnJCLGNDNXZCYyxFQUFBO0FMbUJ0QjtRSXd1QlEseUJDL3FCcUI7UURnckJyQixjQ3BzQmMsRUFBQTtBTHJDdEI7UUkrdUJVLHVDQ3J5QjZCO1FEc3lCN0IsY0MzekJZLEVBQUE7QUwyRXRCO1FJK3VCVSx1Q0M3dUI2QjtRRDh1QjdCLGNDbndCWSxFQUFBO0FMbUJ0QjtRSSt1QlUsMENDcnJCZ0M7UURzckJoQyxjQzNzQlksRUFBQTtBTHJDdEI7UUl1dkJVLHVDQzV5QmdDO1FENnlCaEMsY0NuMEJZLEVBQUE7QUwyRXRCO1FJdXZCVSx1Q0NwdkJnQztRRHF2QmhDLGNDM3dCWSxFQUFBO0FMbUJ0QjtRSXV2QlUsMENDNXJCbUM7UUQ2ckJuQyxjQ250QlksRUFBQTtBRHlwQjFCO01BZ0VVLDZCQUE2QjtNQUM3QixlQUFlO01BQ2YsV0FBVztNQUNYLFlBQVksRUFBQTtBQW5FdEI7TUF1RVUsdUJBQXVCLEVBQUE7QUF2RWpDO01BMkVVLHlCQUF5QjtNQUN6Qiw0QkFBNEI7TUFDNUIsaUNBQWlDO01BQ2pDLHFCQUFxQixFQUFBO0FBOUUvQjtNQWtGVSx5QkFBeUIsRUFBQTtBSmh4Qi9CO0VJNHhCRSxzQ0N6ekIwRDtFRDB6QjFELGNDeDJCb0IsRUFBQTtBTDJFdEI7RUk0eEJFLHNDQ2p3QjBEO0VEa3dCMUQsY0NoekJvQixFQUFBO0FMbUJ0QjtFSTR4QkUsdUNDenNCMkQ7RUQwc0IzRCxjQ3h2Qm9CLEVBQUE7QUxyQ3RCO0VJcXlCTSx5QkMxMkJlLEVBQUE7QUxxRXJCO0VJcXlCTSx5QkNsekJlLEVBQUE7QUxhckI7RUlxeUJNLHlCQzF2QmUsRUFBQTtBTDNDckI7RUk0eUJNLHlCQ24zQmlCLEVBQUE7QUx1RXZCO0VJNHlCTSx5QkMzekJpQixFQUFBO0FMZXZCO0VJNHlCTSx5QkNud0JpQixFQUFBO0FMekN2QjtFSW16Qk0seUJDMzNCZ0IsRUFBQTtBTHdFdEI7RUltekJNLHlCQ24wQmdCLEVBQUE7QUxnQnRCO0VJbXpCTSx5QkMzd0JnQixFQUFBO0FMeEN0QjtFSTJ6QkkseUJDbjRCa0I7RURvNEJsQixjQ3Q0QnlCLEVBQUE7QUwwRTdCO0VJMnpCSSx5QkMzMEJrQjtFRDQwQmxCLGNDOTBCeUIsRUFBQTtBTGtCN0I7RUkyekJJLHlCQ254QmtCO0VEb3hCbEIsY0N0eEJ5QixFQUFBO0FMdEM3QjtFSXEwQk0seUJDajJCbUIsRUFBQTtBTDRCekI7RUlxMEJNLHlCQ3p5Qm1CLEVBQUE7QUw1QnpCO0VJcTBCTSx5QkNqdkJtQixFQUFBO0FMcEZ6QjtFSWkxQkUsZ0NDejRCbUMsRUFBQTtBTHdEckM7RUlpMUJFLGdDQ2oxQm1DLEVBQUE7QUxBckM7RUlpMUJFLGdDQ3p4Qm1DLEVBQUE7QUx4RHJDO0VJMjFCUSxjQ3A2QmtCLEVBQUE7QUx5RTFCO0VJMjFCUSxjQzUyQmtCLEVBQUE7QUxpQjFCO0VJMjFCUSxjQ3B6QmtCLEVBQUE7QUx2QzFCO0VJazJCUSxjQzc2QmMsRUFBQTtBTDJFdEI7RUlrMkJRLGNDcjNCYyxFQUFBO0FMbUJ0QjtFSWsyQlEsY0M3ekJjLEVBQUE7QUxyQ3RCO0VJeTJCUSxjQ2o3QmMsRUFBQTtBTHdFdEI7RUl5MkJRLGNDejNCYyxFQUFBO0FMZ0J0QjtFSXkyQlEsY0NqMEJjLEVBQUE7QUx4Q3RCO0VJczNCRSxjQ2o4Qm9CLEVBQUE7QUwyRXRCO0VJczNCRSxjQ3o0Qm9CLEVBQUE7QUxtQnRCO0VJczNCRSxjQ2oxQm9CLEVBQUE7QUxyQ3RCO0VJNDNCSSx5QkNuNkIrQixFQUFBO0FMdUNuQztFSTQzQkkseUJDMzJCK0IsRUFBQTtBTGpCbkM7RUk0M0JJLHlCQ256QitCLEVBQUE7QUx6RW5DO0VJazRCTSx5QkN4NkJpQyxFQUFBO0FMc0N2QztFSWs0Qk0seUJDaDNCaUMsRUFBQTtBTGxCdkM7RUlrNEJNLHlCQ3h6QmlDLEVBQUE7QUwxRXZDO0VJODRCRSxzQ0MzNkIwRDtFRDQ2QjFELGNDMTlCb0IsRUFBQTtBTDJFdEI7RUk4NEJFLHNDQ24zQjBEO0VEbzNCMUQsY0NsNkJvQixFQUFBO0FMbUJ0QjtFSTg0QkUsdUNDM3pCMkQ7RUQ0ekIzRCxjQzEyQm9CLEVBQUE7QUN4SDFCO0VBQ0UsY0FBYztFQUNkLGFBQWE7RUFDYixnQkFBZ0IsRUFBQTtBQUhsQjtJQU1JLGtCQUFrQjtJQUNsQixhQUFhO0lBQ2IsZ0JBQWdCLEVBQUE7QU4yRWhCO01NeEVFLHVDREoyQztNQ0szQyxjREpvQixFQUFBO0FMMkV0QjtNTXhFRSx1Q0RvRDJDO01DbkQzQyxjRG9Eb0IsRUFBQTtBTG1CdEI7TU14RUUsMENENEc4QztNQzNHOUMsY0Q0R29CLEVBQUE7QUN4SDFCO01BZ0JNLGtCQUFrQjtNQUNsQixNQUFNO01BQ04sT0FBTyxFQUFBO0FOaUVUO0VNbkRNLGNEckJnQixFQUFBO0FMd0V0QjtFTW5ETSxjRG1DZ0IsRUFBQTtBTGdCdEI7RU1uRE0sY0QyRmdCLEVBQUE7QUx4Q3RCO0VNN0NRLHlCRDNCYyxFQUFBO0FMd0V0QjtFTTdDUSx5QkQ2QmMsRUFBQTtBTGdCdEI7RU03Q1EseUJEcUZjLEVBQUE7QUx4Q3RCO0VNaENFLHlCRHZCMkI7RUN3QjNCLGNENUNvQixFQUFBO0FMMkV0QjtFTWhDRSx5QkRpQzJCO0VDaEMzQixjRFlvQixFQUFBO0FMbUJ0QjtFTWhDRSx5QkR5RjJCO0VDeEYzQixjRG9Fb0IsRUFBQTtBTHJDdEI7RU1yQkUseUJEbEMyQixFQUFBO0FMdUQ3QjtFTXJCRSx5QkRzQjJCLEVBQUE7QUxEN0I7RU1yQkUseUJEOEUyQixFQUFBO0FDekVqQztFQUdJLFlBQVk7RUFDWixnQkFBZ0I7RUFDaEIsYUFBYTtFQUNiLDhCQUE4QjtFQUM5QixzQkFBc0IsRUFBQTtBTlN0QjtJTUpJLGNEckVzQixFQUFBO0FMeUUxQjtJTUpJLGNEYnNCLEVBQUE7QUxpQjFCO0lNSkksY0QyQ3NCLEVBQUE7QUx2QzFCO0lNS00sdUNEakQyQyxFQUFBO0FMNENqRDtJTUtNLHVDRE8yQyxFQUFBO0FMWmpEO0lNS00sMENEK0Q4QyxFQUFBO0FMcEVwRDtJTVdRLGNEcEZrQixFQUFBO0FMeUUxQjtJTVdRLGNENUJrQixFQUFBO0FMaUIxQjtJTVdRLGNENEJrQixFQUFBO0FMdkMxQjtJTWtCUSx5QkQxRmMsRUFBQTtBTHdFdEI7SU1rQlEseUJEbENjLEVBQUE7QUxnQnRCO0lNa0JRLHlCRHNCYyxFQUFBO0FMeEN0QjtJTXdCVSxjRGhHWSxFQUFBO0FMd0V0QjtJTXdCVSxjRHhDWSxFQUFBO0FMZ0J0QjtJTXdCVSxjRGdCWSxFQUFBO0FDUDFCO0VBQ0Usa0JBQWtCLEVBQUE7QU5sQ2hCO0VPaEZBLHlCRkEyQyxFQUFBO0FMZ0YzQztFT2hGQSx5QkZ3RDJDLEVBQUE7QUx3QjNDO0VPaEZBLHVCRmdIOEMsRUFBQTtBTGhDOUM7RU90RU0sY0ZMZ0IsRUFBQTtBTDJFdEI7RU90RU0sY0ZtRGdCLEVBQUE7QUxtQnRCO0VPdEVNLGNGMkdnQixFQUFBO0FMckN0QjtFTy9ETSxjRlRnQixFQUFBO0FMd0V0QjtFTy9ETSxjRitDZ0IsRUFBQTtBTGdCdEI7RU8vRE0sY0Z1R2dCLEVBQUE7QUx4Q3RCO0VPckRNLDZCQUE2QjtFQUM3QixjRnZCZ0IsRUFBQTtBTDJFdEI7RU9yRE0sNkJBQTZCO0VBQzdCLGNGaUNnQixFQUFBO0FMbUJ0QjtFT3JETSw2QkFBNkI7RUFDN0IsY0Z5RmdCLEVBQUE7QUxyQ3RCO0VPNUNVLGNGN0JnQixFQUFBO0FMeUUxQjtFTzVDVSxjRjJCZ0IsRUFBQTtBTGlCMUI7RU81Q1UsY0ZtRmdCLEVBQUE7QUx2QzFCO0VPckNVLHlCRm5DWSxFQUFBO0FMd0V0QjtFT3JDVSx5QkZxQlksRUFBQTtBTGdCdEI7RU9yQ1UseUJGNkVZLEVBQUE7QUx4Q3RCO0VPOUJVLHlCRnRDd0I7RUV1Q3hCLGNGN0NtQixFQUFBO0FMMEU3QjtFTzlCVSx5QkZrQndCO0VFakJ4QixjRldtQixFQUFBO0FMa0I3QjtFTzlCVSx5QkYwRXdCO0VFekV4QixjRm1FbUIsRUFBQTtBTHRDN0I7RU9wQlkseUJGbkJ1QixFQUFBO0FMdUNuQztFT3BCWSx5QkZxQ3VCLEVBQUE7QUxqQm5DO0VPcEJZLHlCRjZGdUIsRUFBQTtBTHpFbkM7RU9kYyx5QkYxRFEsRUFBQTtBTHdFdEI7RU9kYyx5QkZGUSxFQUFBO0FMZ0J0QjtFT2RjLHlCRnNEUSxFQUFBO0FMeEN0QjtFT0xVLGNGcEVnQixFQUFBO0FMeUUxQjtFT0xVLGNGWmdCLEVBQUE7QUxpQjFCO0VPTFUsY0Y0Q2dCLEVBQUE7QUx2QzFCO0VPR1EsdUNGdERxQztFRXVEckMsY0ZyRHFCLEVBQUE7QUxpRDdCO0VPR1EsdUNGRXFDO0VFRHJDLGNGR3FCLEVBQUE7QUxQN0I7RU9HUSx5QkYwRHFDO0VFekRyQyxjRjJEcUIsRUFBQTtBTC9EN0I7RU9ZWSxjRjVEcUIsRUFBQTtBTGdEakM7RU9ZWSxjRkpxQixFQUFBO0FMUmpDO0VPWVksY0ZvRHFCLEVBQUE7QUxoRWpDO0VPbUJZLHlCRmhFNEI7RUVpRTVCLGNGbkVzQixFQUFBO0FMK0NsQztFT21CWSx5QkZSNEI7RUVTNUIsY0ZYc0IsRUFBQTtBTFRsQztFT21CWSx5QkZnRDRCO0VFL0M1QixjRjZDc0IsRUFBQTtBTGpFbEM7RU8yQlkseUJGekV5QjtFRTBFekIsY0Z2R1UsRUFBQTtBTDJFdEI7RU8yQlkseUJGakJ5QjtFRWtCekIsY0YvQ1UsRUFBQTtBTG1CdEI7RU8yQlkseUJGdUN5QjtFRXRDekIsY0ZTVSxFQUFBO0FMckN0QjtFT21DWSxjRm5GcUIsRUFBQTtBTGdEakM7RU9tQ1ksY0YzQnFCLEVBQUE7QUxSakM7RU9tQ1ksY0Y2QnFCLEVBQUE7QUxoRWpDO0VPNENRLHVDRjlGMEMsRUFBQTtBTGtEbEQ7RU80Q1EsdUNGdEMwQyxFQUFBO0FMTmxEO0VPNENRLDBDRmtCNkMsRUFBQTtBTDlEckQ7RU9xREksb0VBQTJGLEVBQUE7QVByRC9GO0VPcURJLG9FQUEyRixFQUFBO0FQckQvRjtFT3FESSxrRUFBMkYsRUFBQTtBUHJEL0Y7RU82REUsbUNGNUl5QixFQUFBO0FMK0UzQjtFTzZERSxtQ0ZwRnlCLEVBQUE7QUx1QjNCO0VPNkRFLG1DRjVCeUIsRUFBQTtBTGpDM0I7RU9xRU0sY0ZoSmdCLEVBQUE7QUwyRXRCO0VPcUVNLGNGeEZnQixFQUFBO0FMbUJ0QjtFT3FFTSxjRmhDZ0IsRUFBQTtBTHJDdEI7RU8yRVEseUJGbkpjLEVBQUE7QUx3RXRCO0VPMkVRLHlCRjNGYyxFQUFBO0FMZ0J0QjtFTzJFUSx5QkZuQ2MsRUFBQTtBTHhDdEI7RU9xRlEsa0RBQTBEO0VBQzFELHlCQUE2QyxFQUFBO0FQdEZyRDtFT3FGUSxrREFBMEQ7RUFDMUQseUJBQTZDLEVBQUE7QVB0RnJEO0VPcUZRLG9DQUEwRDtFQUMxRCx5QkFBNkMsRUFBQTtBUHRGckQ7RU80RlUsb0NBQW1FLEVBQUE7QVA1RjdFO0VPNEZVLG9DQUFtRSxFQUFBO0FQNUY3RTtFTzRGVSxvQ0FBbUUsRUFBQTtBUDVGN0U7RU91R0UsY0ZoTHdCLEVBQUE7QUx5RTFCO0VPdUdFLGNGeEh3QixFQUFBO0FMaUIxQjtFT3VHRSxjRmhFd0IsRUFBQTtBTHZDMUI7RU8rR00seUJGNUxlLEVBQUE7QUw2RXJCO0VPK0dNLHlCRnBJZSxFQUFBO0FMcUJyQjtFTytHTSx5QkY1RWUsRUFBQTtBTG5DckI7RU9zSE0seUJGcE1jLEVBQUE7QUw4RXBCO0VPc0hNLHlCRjVJYyxFQUFBO0FMc0JwQjtFT3NITSx5QkZwRmMsRUFBQTtBTGxDcEI7RU9pSVUseUJGeEt5QixFQUFBO0FMdUNuQztFT2lJVSx5QkZoSHlCLEVBQUE7QUxqQm5DO0VPaUlVLHlCRnhEeUIsRUFBQTtBTHpFbkM7RU91SVkseUJGN0syQixFQUFBO0FMc0N2QztFT3VJWSx5QkZySDJCLEVBQUE7QUxsQnZDO0VPdUlZLHlCRjdEMkIsRUFBQTtBTDFFdkM7RU9nSlEseUJGdEwrQixFQUFBO0FMc0N2QztFT2dKUSx5QkY5SCtCLEVBQUE7QUxsQnZDO0VPZ0pRLHlCRnRFK0IsRUFBQTtBTDFFdkM7RU8ySk0sY0ZuT2dCLEVBQUE7QUx3RXRCO0VPMkpNLGNGM0tnQixFQUFBO0FMZ0J0QjtFTzJKTSxjRm5IZ0IsRUFBQTtBTHhDdEI7RU9rS00sY0Z4T2tCLEVBQUE7QUxzRXhCO0VPa0tNLGNGaExrQixFQUFBO0FMY3hCO0VPa0tNLGNGeEhrQixFQUFBO0FMMUN4QjtFT3lLTSxjRjlPZSxFQUFBO0FMcUVyQjtFT3lLTSxjRnRMZSxFQUFBO0FMYXJCO0VPeUtNLGNGOUhlLEVBQUE7QUwzQ3JCO0VPZ0xNLGNGdFBrQixFQUFBO0FMc0V4QjtFT2dMTSxjRjlMa0IsRUFBQTtBTGN4QjtFT2dMTSxjRnRJa0IsRUFBQTtBTDFDeEI7RU95TFEseUJGalFjLEVBQUE7QUx3RXRCO0VPeUxRLHlCRnpNYyxFQUFBO0FMZ0J0QjtFT3lMUSx5QkZqSmMsRUFBQTtBTHhDdEI7RU9nTVEseUJGdFFnQixFQUFBO0FMc0V4QjtFT2dNUSx5QkY5TWdCLEVBQUE7QUxjeEI7RU9nTVEseUJGdEpnQixFQUFBO0FMMUN4QjtFT3VNUSx5QkY1UWEsRUFBQTtBTHFFckI7RU91TVEseUJGcE5hLEVBQUE7QUxhckI7RU91TVEseUJGNUphLEVBQUE7QUwzQ3JCO0VPOE1RLHlCRnBSZ0IsRUFBQTtBTHNFeEI7RU84TVEseUJGNU5nQixFQUFBO0FMY3hCO0VPOE1RLHlCRnBLZ0IsRUFBQTtBTDFDeEI7RVFoRkEsY0hLc0IsRUFBQTtBTDJFdEI7RVFoRkEsY0g2RHNCLEVBQUE7QUxtQnRCO0VRaEZBLGNIcUhzQixFQUFBO0FMckN0QjtFUXhFSSxjSEhrQixFQUFBO0FMMkV0QjtFUXhFSSxjSHFEa0IsRUFBQTtBTG1CdEI7RVF4RUksY0g2R2tCLEVBQUE7QUxyQ3RCO0VRbEVNLHlCSE5nQixFQUFBO0FMd0V0QjtFUWxFTSx5QkhrRGdCLEVBQUE7QUxnQnRCO0VRbEVNLHlCSDBHZ0IsRUFBQTtBTHhDdEI7RVF4RE0seUJIaEJnQixFQUFBO0FMd0V0QjtFUXhETSx5Qkh3Q2dCLEVBQUE7QUxnQnRCO0VReERNLHlCSGdHZ0IsRUFBQTtBTHhDdEI7RVEvQ0UsY0h6Qm9CLEVBQUE7QUx3RXRCO0VRL0NFLGNIK0JvQixFQUFBO0FMZ0J0QjtFUS9DRSxjSHVGb0IsRUFBQTtBTHhDdEI7RVF6Q0kseUJIL0JrQixFQUFBO0FMd0V0QjtFUXpDSSx5Qkh5QmtCLEVBQUE7QUxnQnRCO0VRekNJLHlCSGlGa0IsRUFBQTtBTHhDdEI7RVE3Qk0sdUNIZjJDLEVBQUE7QUw0Q2pEO0VRN0JNLHVDSHlDMkMsRUFBQTtBTFpqRDtFUTdCTSwwQ0hpRzhDLEVBQUE7QUxwRXBEO0VRdkJRLHlCSGpEYyxFQUFBO0FMd0V0QjtFUXZCUSx5QkhPYyxFQUFBO0FMZ0J0QjtFUXZCUSx5QkgrRGMsRUFBQTtBTHhDdEI7RVFoQlEseUJIN0JnQztFRzhCaEMsY0hoQzBCLEVBQUE7QUwrQ2xDO0VRaEJRLHlCSDJCZ0M7RUcxQmhDLGNId0IwQixFQUFBO0FMVGxDO0VRaEJRLHlCSG1GZ0M7RUdsRmhDLGNIZ0YwQixFQUFBO0FMakVsQztFUVJRLHVDSHBFcUMsRUFBQTtBTDRFN0M7RVFSUSx1Q0hacUMsRUFBQTtBTG9CN0M7RVFSUSwwQ0g0Q3dDLEVBQUE7QUxwQ2hEO0VRRFEsdUNIMUNzQyxFQUFBO0FMMkM5QztFUURRLHVDSGNzQyxFQUFBO0FMYjlDO0VRRFEseUJIc0V3QixFQUFBO0FMckVoQztFUVFJLHVDSHBGeUMsRUFBQTtBTDRFN0M7RVFRSSx1Q0g1QnlDLEVBQUE7QUxvQjdDO0VRUUksMENINEI0QyxFQUFBO0FMcENoRDtFUXFCSSxjSGhHa0IsRUFBQTtBTDJFdEI7RVFxQkksY0h4Q2tCLEVBQUE7QUxtQnRCO0VRcUJJLGNIZ0JrQixFQUFBO0FMckN0QjtFUTJCTSx5QkhuR2dCLEVBQUE7QUx3RXRCO0VRMkJNLHlCSDNDZ0IsRUFBQTtBTGdCdEI7RVEyQk0seUJIYWdCLEVBQUE7QUx4Q3RCO0VRbUNJLDRCSDNGaUMsRUFBQTtBTHdEckM7RVFtQ0ksNEJIbkNpQyxFQUFBO0FMQXJDO0VRbUNJLDRCSHFCaUMsRUFBQTtBTHhEckM7RVE4Q0UseUJIdEhvQixFQUFBO0FMd0V0QjtFUThDRSx5Qkg5RG9CLEVBQUE7QUxnQnRCO0VROENFLHlCSE5vQixFQUFBO0FMeEN0QjtFUThEUSxjSHZJa0IsRUFBQTtBTHlFMUI7RVE4RFEsY0gvRWtCLEVBQUE7QUxpQjFCO0VROERRLGNIdkJrQixFQUFBO0FMdkMxQjtFUXFFUSx5QkgvR3FCLEVBQUE7QUwwQzdCO0VRcUVRLHlCSHZEcUIsRUFBQTtBTGQ3QjtFUXFFUSx5QkhDcUIsRUFBQTtBTHRFN0I7RVE0RVEseUJIdEhxQixFQUFBO0FMMEM3QjtFUTRFUSx5Qkg5RHFCLEVBQUE7QUxkN0I7RVE0RVEseUJITnFCLEVBQUE7QUx0RTdCO0VRbUZRLDZCQUE2QixFQUFBO0FSbkZyQztFUW1GUSw2QkFBNkIsRUFBQTtBUm5GckM7RVFtRlEsNkJBQTZCLEVBQUE7QVJuRnJDO0VRMEZRLDZCQUE2QixFQUFBO0FSMUZyQztFUTBGUSw2QkFBNkIsRUFBQTtBUjFGckM7RVEwRlEsNkJBQTZCLEVBQUE7QVIxRnJDO0VRbUdVLHlCSDFJeUIsRUFBQTtBTHVDbkM7RVFtR1UseUJIbEZ5QixFQUFBO0FMakJuQztFUW1HVSx5QkgxQnlCLEVBQUE7QUx6RW5DO0VReUdZLHlCSC9JMkIsRUFBQTtBTHNDdkM7RVF5R1kseUJIdkYyQixFQUFBO0FMbEJ2QztFUXlHWSx5QkgvQjJCLEVBQUE7QUwxRXZDO0VRa0hRLHlCSHhMZ0IsRUFBQTtBTHNFeEI7RVFrSFEseUJIaElnQixFQUFBO0FMY3hCO0VRa0hRLHlCSHhFZ0IsRUFBQTtBTDFDeEI7RVEySFUseUJIaE1XLEVBQUE7QUxxRXJCO0VRMkhVLHlCSHhJVyxFQUFBO0FMYXJCO0VRMkhVLHlCSGhGVyxFQUFBO0FMM0NyQjtFUXFJVSx5Qkg1TWEsRUFBQTtBTHVFdkI7RVFxSVUseUJIcEphLEVBQUE7QUxldkI7RVFxSVUseUJINUZhLEVBQUE7QUx6Q3ZCO0VReUpRLHlCSDlOYSxFQUFBO0FMcUVyQjtFUXlKUSx5Qkh0S2EsRUFBQTtBTGFyQjtFUXlKUSx5Qkg5R2EsRUFBQTtBTDNDckI7RVFnS1EseUJIeE9jLEVBQUE7QUx3RXRCO0VRZ0tRLHlCSGhMYyxFQUFBO0FMZ0J0QjtFUWdLUSx5Qkh4SGMsRUFBQTtBTHhDdEI7RVErS0ksY0gxUGtCLEVBQUE7QUwyRXRCO0VRK0tJLGNIbE1rQixFQUFBO0FMbUJ0QjtFUStLSSxjSDFJa0IsRUFBQTtBTHJDdEI7RVFxTE0seUJIN1BnQixFQUFBO0FMd0V0QjtFUXFMTSx5QkhyTWdCLEVBQUE7QUxnQnRCO0VRcUxNLHlCSDdJZ0IsRUFBQTtBTHhDdEI7RVE2TEksY0hyUWtCLEVBQUE7QUx3RXRCO0VRNkxJLGNIN01rQixFQUFBO0FMZ0J0QjtFUTZMSSxjSHJKa0IsRUFBQTtBTHhDdEI7RVFvTUksNEJINVBpQyxFQUFBO0FMd0RyQztFUW9NSSw0QkhwTWlDLEVBQUE7QUxBckM7RVFvTUksNEJINUlpQyxFQUFBO0FMeERyQztFUThNSSx5QkhyUCtCLEVBQUE7QUx1Q25DO0VROE1JLHlCSDdMK0IsRUFBQTtBTGpCbkM7RVE4TUkseUJIckkrQixFQUFBO0FMekVuQztFUW9OTSx5QkgxUGlDLEVBQUE7QUxzQ3ZDO0VRb05NLHlCSGxNaUMsRUFBQTtBTGxCdkM7RVFvTk0seUJIMUlpQyxFQUFBO0FHaUozQztFUjdTRSxnQkFBZ0I7RUFDaEIsdUJBQXVCO0VBQ3ZCLG1CQUFtQixFQUFBO0FBZ0ZqQjtFUTRPVSx5QkhqVFcsRUFBQTtBTHFFckI7RVE0T1UseUJIelBXLEVBQUE7QUxhckI7RVE0T1UseUJIak1XLEVBQUE7QUwzQ3JCO0VRNFBJLGNIcFVrQixFQUFBO0FMd0V0QjtFUTRQSSxjSDVRa0IsRUFBQTtBTGdCdEI7RVE0UEksY0hwTmtCLEVBQUE7QUx4Q3RCO0VRMFFRLGNIblZrQixFQUFBO0FMeUUxQjtFUTBRUSxjSDNSa0IsRUFBQTtBTGlCMUI7RVEwUVEsY0huT2tCLEVBQUE7QUx2QzFCO0VRaVJRLHlCSDFUeUIsRUFBQTtBTHlDakM7RVFpUlEseUJIbFF5QixFQUFBO0FMZmpDO0VRaVJRLHNCSDFNc0IsRUFBQTtBRzhLbEM7RVIvUEUsV0FEMEQ7RUFFMUQsY0FGNEI7RUFHNUIsa0JBSDRDO0VRa1NsQyxNQUFNO0VBQ04sYUFBYTtFQUNiLGdDQUFnQyxFQUFBO0FSelJ4QztJUTRSVSx5QkhyVXVCLEVBQUE7QUx5Q2pDO0lRNFJVLHlCSDdRdUIsRUFBQTtBTGZqQztJUTRSVSxzQkhyTm9CLEVBQUE7QUx2RTlCO0VRb1NRLHlCSDVVNEIsRUFBQTtBTHdDcEM7RVFvU1EseUJIcFI0QixFQUFBO0FMaEJwQztFUW9TUSx5Qkg1TjRCLEVBQUE7QUc2S3hDO0VSL1BFLFdBRDBEO0VBRTFELGNBRjRCO0VBRzVCLGtCQUg0QztFUXFUbEMsY0FBYztFQUNkLE1BQU07RUFDTixnQ0FBZ0MsRUFBQTtBUjVTeEM7SVErU1UseUJIdlYwQixFQUFBO0FMd0NwQztJUStTVSx5QkgvUjBCLEVBQUE7QUxoQnBDO0lRK1NVLHlCSHZPMEIsRUFBQTtBTHhFcEM7RVFpVU0sY0gxWW9CLEVBQUE7QUx5RTFCO0VRaVVNLGNIbFZvQixFQUFBO0FMaUIxQjtFUWlVTSxjSDFSb0IsRUFBQTtBTHZDMUI7RVF3VU0sY0huWmdCLEVBQUE7QUwyRXRCO0VRd1VNLGNIM1ZnQixFQUFBO0FMbUJ0QjtFUXdVTSxjSG5TZ0IsRUFBQTtBR21SMUI7RUFzQk0sYUFBYTtFQUNiLG1CQUFtQjtFQUNuQix5QkFBeUI7RUFDekIsWUFBWTtFQUNaLGlCQUFpQixFQUFBO0FSbFZuQjtFUTJWSSxjSHBhc0IsRUFBQTtBTHlFMUI7RVEyVkksY0g1V3NCLEVBQUE7QUxpQjFCO0VRMlZJLGNIcFRzQixFQUFBO0FMdkMxQjtFUW9XTSxjSC9hZ0I7RUdnYmhCLHlCSDFZOEIsRUFBQTtBTHFDcEM7RVFvV00sY0h2WGdCO0VHd1hoQix5QkhsVjhCLEVBQUE7QUxuQnBDO0VRb1dNLGNIL1RnQjtFR2dVaEIseUJIMVI4QixFQUFBO0FMM0VwQztFUTJXUSx5QkgvWXVCLEVBQUE7QUxvQy9CO0VRMldRLHlCSHZWdUIsRUFBQTtBTHBCL0I7RVEyV1EseUJIL1J1QixFQUFBO0FHdVNuQztFQUNFLGtCQUFrQixFQUFBO0FBRHBCO0lBSUksa0JBQWtCO0lBQ2xCLFdBQVc7SUFDWCxpQkFBaUI7SUFDakIsY0FBYztJQUNkLFdBQVcsRUFBQTtBUjNYWDtNUThYRSx5QkhyYjJCO01Hc2IzQixjSDFjb0IsRUFBQTtBTDJFdEI7TVE4WEUseUJIN1gyQjtNRzhYM0IsY0hsWm9CLEVBQUE7QUxtQnRCO01ROFhFLHlCSHJVMkI7TUdzVTNCLGNIMVZvQixFQUFBO0FHOFUxQjtNQWdCTSxpQkFBaUI7TUFDakIsYUFBYSxFQUFBO0FScFlmO1FRd1lNLHVDSDliaUMsRUFBQTtBTHNEdkM7UVF3WU0sdUNIdFlpQyxFQUFBO0FMRnZDO1FRd1lNLDBDSDlVb0MsRUFBQTtBSTdJOUM7RUFDRSxhQUFhO0VBQ2IscUJBQXFCO0VBQ3JCLDhCQUE4QjtFQUM5QixpQkFBaUI7RUFDakIsZUFBZTtFQUNmLFdBQVc7RUFDWCxZQUFZLEVBQUE7QVQ0RVY7SVN6RUEsY0pDc0IsRUFBQTtBTHdFdEI7SVN6RUEsY0p5RHNCLEVBQUE7QUxnQnRCO0lTekVBLGNKaUhzQixFQUFBO0FJM0gxQjtJQWtCUSxrQkFBa0I7SUFDbEIsZUFBZTtJQUNmLGtCQUFrQjtJQUNsQixtQkFBbUIsRUFBQTtBQXJCM0I7TVR5RUUsV0FEMEQ7TUFFMUQsY0FGNEI7TUFHNUIsa0JBSDRDO01TOUNwQyxXQUFXO01BQ1gsY0FBYztNQUNkLGFBQWE7TUFDYixjQUFjO01BQ2QscURBQTZEO2NBQTdELDZDQUE2RDtNQUM3RCx3QkFBZ0I7Y0FBaEIsZ0JBQWdCLEVBQUE7QVRvRHRCO1FTakRRLHlCSnZCYyxFQUFBO0FMd0V0QjtRU2pEUSx5QkppQ2MsRUFBQTtBTGdCdEI7UVNqRFEseUJKeUZjLEVBQUE7QUkzSDFCO0lBMENJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsNkJBQTZCO0lBQzdCLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsZ0JBQWdCO0lBQ2hCLG1CQUFtQjtJQUNuQixVQUFVO0lBQ1YsWUFBWSxFQUFBO0FBbERoQjtNQXFETSxvQkFBb0I7TUFDcEIsOENBQXNEO2NBQXRELHNDQUFzRDtNQUN0RCxhQUFhO01BQ2IsY0FBYyxFQUFBO0FUMkJoQjtRU3hCSSx5QkpoRGtCLEVBQUE7QUx3RXRCO1FTeEJJLHlCSlFrQixFQUFBO0FMZ0J0QjtRU3hCSSx5QkpnRWtCLEVBQUE7QUszSDFCO0VBR0ksNkJBQTZCO0VBQzdCLGVBQWU7RUFDZixXQUFXO0VBQ1gsWUFBWSxFQUFBO0FBTmhCO0VBVUksdUJBQXVCLEVBQUE7QUFWM0I7RUFjSSx5QkFBeUI7RUFDekIsNEJBQTRCO0VBQzVCLGlDQUFpQztFQUNqQyxxQkFBcUIsRUFBQTtBQWpCekI7RUFxQkkseUJBQXlCLEVBQUE7QUNyQjdCO0VBQ0UsaUJBQWlCO0VBQ2pCLFdBQVcsRUFBQTtBQUZiO0lBS0ksZ0JBQWdCLEVBQUE7QVg4RWhCO01XM0VFLGNORXdCLEVBQUE7QUx5RTFCO01XM0VFLGNOMER3QixFQUFBO0FMaUIxQjtNVzNFRSxjTmtId0IsRUFBQTtBTTFIOUI7TUFZTSxZQUFZLEVBQUE7QUFabEI7UUFlUSxhQUFhO1FBQ2Isc0JBQXNCLEVBQUE7QUFoQjlCO1VBbUJVLGtCQUFrQixFQUFBO0FBbkI1QjtVQXVCVSxtQkFBbUIsRUFBQTtBQXZCN0I7SUE4QkksZ0JBQWdCLEVBQUE7QVhxRGhCO01XbERFLGNOekJvQixFQUFBO0FMMkV0QjtNV2xERSxjTitCb0IsRUFBQTtBTG1CdEI7TVdsREUsY051Rm9CLEVBQUE7QU14SDFCO01BcUNNLGNBQWMsRUFBQTtBWDhDaEI7UVd6Q00seUJORHVCLEVBQUE7QUwwQzdCO1FXekNNLHlCTnVEdUIsRUFBQTtBTGQ3QjtRV3pDTSx5Qk4rR3VCLEVBQUE7QU16SmpDO1FBK0NRLG1CQUFtQjtRQUNuQixlQUFlO1FBQ2Ysc0JBQXNCO1FBQ3RCLG1CQUFtQjtRQUNuQixnQkFBZ0IsRUFBQTtBQW5EeEI7VUFzRFUsa0JBQWtCLEVBQUE7QUF0RDVCO1VBMERVLG1CQUFtQixFQUFBO0FDdkM3QjtFQUNFLHFCQUFxQjtFQUNyQiw4QkFBOEM7RUFDOUMsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSxxQkFBcUI7RUFDckIsZ0NBQWdEO0VBQ2hELGdCQUFnQixFQUFBO0FBR2xCO0VBQ0UscUJBQXFCO0VBQ3JCLGlDQUFpRDtFQUNqRCxnQkFBZ0IsRUFBQTtBQUdsQjtFQUNFLHFCQUFxQjtFQUNyQiw2QkFBNkM7RUFDN0MsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSxxQkFBcUI7RUFDckIsa0NBQWtEO0VBQ2xELGdCQUFnQixFQUFBO0FBSWxCO0VBQ0UsaUNBQWlDO0VBQ2pDLGVBQWUsRUFBQTtBQUdqQjtFQUNFLGlDQUFpQztFQUNqQyxpQkFBaUI7RUFDakIsWUFBWTtFQUNaLGFBQWEsRUFBQTtBQUpmO0lBT0ksK0RBQTZFO0lBQzdFLHNCQUFzQixFQUFBO0FBUjFCO0lBWUksK0RBQTZFO0lBQzdFLHNCQUFzQixFQUFBO0FBYjFCO0lBaUJJLGdFQUE4RTtJQUM5RSxzQkFBc0IsRUFBQTtBQWxCMUI7SUFzQkksYUFBYTtJQUNiLFdBQVc7SUFDWCxZQUFZLEVBQUE7QUFJaEI7RUFLTSxzREFBeUQ7VUFBekQsOENBQXlELEVBQUEiLCJmaWxlIjoic3JjL3N0eWxlcy5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQG1peGluIHRleHQtdHJ1bmNhdGUge1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxufVxyXG5AbWl4aW4gdGV4dFdyYXAge1xyXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XHJcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcclxuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XHJcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xyXG4gIGxpbmUtYnJlYWs6IHN0cmljdDtcclxuICAtd2Via2l0LWh5cGhlbnM6IGF1dG87XHJcbiAgLW1zLWh5cGhlbnM6IGF1dG87XHJcbiAgaHlwaGVuczogYXV0bztcclxufVxyXG5AbWl4aW4gY292ZXJCb3gge1xyXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHR0b3A6IDA7XHJcblx0bGVmdDogMDtcclxuXHR3aWR0aDogMTAwJTtcclxuXHRoZWlnaHQ6IDEwMCU7XHJcbn1cclxuQG1peGluIGFicyAoJHRvcDogYXV0bywgJHJpZ2h0OiBhdXRvLCAkYm90dG9tOiBhdXRvLCAkbGVmdDogYXV0bykge1xyXG4gIHRvcDogJHRvcDtcclxuICByaWdodDogJHJpZ2h0O1xyXG4gIGJvdHRvbTogJGJvdHRvbTtcclxuICBsZWZ0OiAkbGVmdDtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbn1cclxuQG1peGluIGNvdmVySW1nIHtcclxuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG5cdC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuXHQtby1iYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG5cdGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDUwJTtcclxufVxyXG5AbWl4aW4gdmFsaW5nQm94IHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0dG9wOiAgNTAlO1xyXG5cdGxlZnQ6IDUwJTtcclxuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxufVxyXG5AbWl4aW4gdW5TZWxlY3Qge1xyXG5cdC13ZWJraXQtdG91Y2gtY29sbG91dDogbm9uZTtcclxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcclxuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcclxuICB1c2VyLXNlbGVjdDogbm9uZTtcclxufVxyXG5AbWl4aW4gbWF4MTE5OSB7IC8vIG1ha2V0IDExNzFcclxuICBAbWVkaWEgKG1heC13aWR0aDogMTE5OXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1heDExNzAgeyAvLyBtYWtldHMgOTkyXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDExNzBweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtYXg5OTEgeyAvLyBtYWtldHMgNzYyXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDk5MXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1heDc2MSB7IC8vIG1ha2V0cyA1NzZcclxuICBAbWVkaWEgKG1heC13aWR0aDogNzYxcHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbWF4NTc1IHsgLy8gbWFrZXRzIDQwMFxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA1NzVweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtb2JpbGUge1xyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiAzOTlweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBpY29DZW50ZXIge1xyXG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XHJcbn1cclxuQG1peGluIHBzZXVkbyAoJGRpc3BsYXk6IGJsb2NrLCAkcG9zOiBhYnNvbHV0ZSwgJGNvbnRlbnQ6ICcnKXtcclxuICBjb250ZW50OiAkY29udGVudDtcclxuICBkaXNwbGF5OiAkZGlzcGxheTtcclxuICBwb3NpdGlvbjogJHBvcztcclxufVxyXG5cclxuLypcclxuKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGVtZXNcclxuKi9cclxuQG1peGluIHRoZW1pZnkoJHRoZW1lczogJHRoZW1lcykge1xyXG4gIEBlYWNoICR0aGVtZSwgJG1hcCBpbiAkdGhlbWVzIHtcclxuICAgIC50aGVtZS0jeyR0aGVtZX0gJiB7XHJcbiAgICAgICR0aGVtZS1tYXA6ICgpICFnbG9iYWw7XHJcbiAgICAgIEBlYWNoICRrZXksICRzdWJtYXAgaW4gJG1hcCB7XHJcbiAgICAgICAgJHZhbHVlOiBtYXAtZ2V0KG1hcC1nZXQoJHRoZW1lcywgJHRoZW1lKSwgJyN7JGtleX0nKTtcclxuICAgICAgICAkdGhlbWUtbWFwOiBtYXAtbWVyZ2UoJHRoZW1lLW1hcCwgKCRrZXk6ICR2YWx1ZSkpICFnbG9iYWw7XHJcbiAgICAgIH1cclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICAgICR0aGVtZS1tYXA6IG51bGwgIWdsb2JhbDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBmdW5jdGlvbiB0aGVtZWQoJGtleSkge1xyXG4gIEByZXR1cm4gbWFwLWdldCgkdGhlbWUtbWFwLCAka2V5KTtcclxufVxyXG4iLCIvKlxyXG4qIEltcGxlbWVudGF0aW9uIG9mIHRoZW1lc1xyXG4qL1xuQGltcG9ydCB1cmwofkBuZy1zZWxlY3Qvbmctc2VsZWN0L3RoZW1lcy9kZWZhdWx0LnRoZW1lLmNzcyk7XG5odG1sIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cblxuKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGluaGVyaXQ7XG4gIC1tb3otYm94LXNpemluZzogaW5oZXJpdDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICAtd2Via2l0LXRvdWNoLWNvbGxvdXQ6IG5vbmU7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTsgfVxuXG5odG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG5hLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG5kZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG5zbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuYiwgdSwgaSwgY2VudGVyLFxuZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbmZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxudGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG5hcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbmZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbm1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxudGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgYm9yZGVyOiAwO1xuICBmb250LXNpemU6IDEwMCU7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG5hcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLFxuZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWVudSwgbmF2LCBzZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cblxub2wsIHVsIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG5ibG9ja3F1b3RlLCBxIHtcbiAgcXVvdGVzOiBub25lOyB9XG5cbmJsb2NrcXVvdGU6YmVmb3JlLCBibG9ja3F1b3RlOmFmdGVyLFxucTpiZWZvcmUsIHE6YWZ0ZXIge1xuICBjb250ZW50OiBub25lOyB9XG5cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxudGQsXG50aCB7XG4gIHBhZGRpbmc6IDA7IH1cblxuaW5wdXQge1xuICBvdXRsaW5lOiBub25lOyB9XG4gIGlucHV0Oi13ZWJraXQtYXV0b2ZpbGwge1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMTAwMHB4IHdoaXRlIGluc2V0OyB9XG5cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdXRsaW5lOiBub25lOyB9XG5cbmJ1dHRvbltkaXNhYmxlZF0sXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gIGN1cnNvcjogZGVmYXVsdDsgfVxuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDsgfVxuXG5pbnB1dCB7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7IH1cblxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgfVxuXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgfVxuXG5hIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG4gIGE6YWN0aXZlLCBhOmhvdmVyLCBhOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwOyB9XG5cbmkge1xuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cblxuYiwgc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuXG5pbWcge1xuICB3aWR0aDogYXV0bztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIGJvcmRlcjogMDsgfVxuXG4uaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbi50aGVtZS1kYXJrIC5hcHAtY29udGVudCAucHJlbG9hZGVyIC5sb2FkaW5nLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7IH1cblxuLnRoZW1lLWdyYXkgLmFwcC1jb250ZW50IC5wcmVsb2FkZXIgLmxvYWRpbmctYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDsgfVxuXG4udGhlbWUtd2hpdGUgLmFwcC1jb250ZW50IC5wcmVsb2FkZXIgLmxvYWRpbmctYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG5idXR0b24ge1xuICBib3JkZXI6IG5vbmU7XG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHBhZGRpbmc6IDAgMXJlbTtcbiAgaGVpZ2h0OiA0LjJyZW07IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uOmRpc2FibGVkOm5vdCgudHJhbnNwYXJlbnQtYnV0dG9uKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzljYWRiNztcbiAgICBjb2xvcjogIzExMTkyMTsgfVxuICAudGhlbWUtZ3JheSBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzk4NDhmO1xuICAgIGNvbG9yOiAjMWExYTFhOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBhNGFlO1xuICAgIGNvbG9yOiAjZmVmZWZlOyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbjpkaXNhYmxlZDpub3QoLnRyYW5zcGFyZW50LWJ1dHRvbik6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNiN2QxZTA7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uOmRpc2FibGVkOm5vdCgudHJhbnNwYXJlbnQtYnV0dG9uKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ExYWViYjsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uOmRpc2FibGVkOm5vdCgudHJhbnNwYXJlbnQtYnV0dG9uKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2FlYmVjNjsgfVxuICAudGhlbWUtZGFyayBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTdiOWMyOyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbjpkaXNhYmxlZDpub3QoLnRyYW5zcGFyZW50LWJ1dHRvbik6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM4YTk1OWY7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbjpkaXNhYmxlZDpub3QoLnRyYW5zcGFyZW50LWJ1dHRvbik6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNhN2I5YzI7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uLmJsdWUtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmO1xuICAgIGNvbG9yOiAjMTExOTIxOyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTtcbiAgICBjb2xvcjogIzFhMWExYTsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uLmJsdWUtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxO1xuICAgIGNvbG9yOiAjZmVmZWZlOyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzgyZDdmZjsgfVxuICAudGhlbWUtZ3JheSBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM4NmQ2ZmY7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjNmZjsgfVxuICAudGhlbWUtZGFyayBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1OWI1ZmQ7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLmJsdWUtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWZiNmZjOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzNzlmZmE7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDtcbiAgICBjb2xvcjogIzExMTkyMTsgfVxuICAudGhlbWUtZ3JheSBidXR0b24uZ3JlZW4tYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkO1xuICAgIGNvbG9yOiAjMWExYTFhOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b24uZ3JlZW4tYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyO1xuICAgIGNvbG9yOiAjZmVmZWZlOyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbi5ncmVlbi1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM4ZGZjYzY7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzdiZjZjNjsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzVhZDU4NjsgfVxuICAudGhlbWUtZGFyayBidXR0b24uZ3JlZW4tYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjJlMGIyOyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbi5ncmVlbi1idXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1Y2RjOWU7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbi5ncmVlbi1idXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1M2M3N2M7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0ZGQwZTE7XG4gICAgY29sb3I6ICMxMTE5MjE7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzZWM1ZDc7XG4gICAgY29sb3I6ICMxYTFhMWE7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbi50dXJxdW9pc2UtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZiNmM3O1xuICAgIGNvbG9yOiAjZmVmZWZlOyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbi50dXJxdW9pc2UtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODdmNGY1OyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbi50dXJxdW9pc2UtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzJlZGZlOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b24udHVycXVvaXNlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzUyY2JkOTsgfVxuICAudGhlbWUtZGFyayBidXR0b24udHVycXVvaXNlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQyZDVlODsgfVxuICAudGhlbWUtZ3JheSBidXR0b24udHVycXVvaXNlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzUwZDBlMTsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzMWJlY2Y7IH1cbiAgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XG4gICAgLnRoZW1lLWRhcmsgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlcjogMC4ycmVtIHNvbGlkICMyYjM2NDQ7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS1ncmF5IGJ1dHRvbi50cmFuc3BhcmVudC1idXR0b24ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXI6IDAuMnJlbSBzb2xpZCAjMmYzNDM4O1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtd2hpdGUgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlcjogMC4ycmVtIHNvbGlkICNlYmViZWI7XG4gICAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAgIGJ1dHRvbi50cmFuc3BhcmVudC1idXR0b24gLmljb24ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xuICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2NvbXBsZXRlLXRlc3R3YWxsZXQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xuICAgICAgd2lkdGg6IDEuN3JlbTtcbiAgICAgIGhlaWdodDogMS43cmVtOyB9XG4gICAgICAudGhlbWUtZGFyayBidXR0b24udHJhbnNwYXJlbnQtYnV0dG9uIC5pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLWdyYXkgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiAuaWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7IH1cbiAgICAgIC50aGVtZS13aGl0ZSBidXR0b24udHJhbnNwYXJlbnQtYnV0dG9uIC5pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQzNDU0YjsgfVxuXG4uaW5wdXQtYmxvY2sge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgbWFyZ2luLWJvdHRvbTogMC40cmVtOyB9XG4gIC5pbnB1dC1ibG9jayAud3JhcC1sYWJlbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBtaW4taGVpZ2h0OiAyLjRyZW07IH1cbiAgLmlucHV0LWJsb2NrIGxhYmVsIHtcbiAgICBmb250LXNpemU6IDEuM3JlbTtcbiAgICBsaW5lLWhlaWdodDogMi40cmVtOyB9XG4gICAgLnRoZW1lLWRhcmsgLmlucHV0LWJsb2NrIGxhYmVsIHtcbiAgICAgIGNvbG9yOiAjNTU2NTc2OyB9XG4gICAgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrIGxhYmVsIHtcbiAgICAgIGNvbG9yOiAjNTY1YzYyOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jayBsYWJlbCB7XG4gICAgICBjb2xvcjogI2EwYTVhYjsgfVxuICAuaW5wdXQtYmxvY2sgaW5wdXRbdHlwZT0ndGV4dCddLCAuaW5wdXQtYmxvY2sgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSwgLmlucHV0LWJsb2NrIHNlbGVjdCB7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgcGFkZGluZzogMCAxcmVtO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNC4ycmVtOyB9XG4gICAgLnRoZW1lLWRhcmsgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3RleHQnXSwgLnRoZW1lLWRhcmsgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sIC50aGVtZS1kYXJrIC5pbnB1dC1ibG9jayBzZWxlY3Qge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzE3MWUyNztcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3RleHQnXSwgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sIC50aGVtZS1ncmF5IC5pbnB1dC1ibG9jayBzZWxlY3Qge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jayBpbnB1dFt0eXBlPSd0ZXh0J10sIC50aGVtZS13aGl0ZSAuaW5wdXQtYmxvY2sgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSwgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jayBzZWxlY3Qge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjtcbiAgICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gIC5pbnB1dC1ibG9jay50ZXh0YXJlYSB7XG4gICAgaGVpZ2h0OiBhdXRvOyB9XG4gICAgLmlucHV0LWJsb2NrLnRleHRhcmVhIHRleHRhcmVhIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIG1pbi1oZWlnaHQ6IDcuNXJlbTtcbiAgICAgIG1heC1oZWlnaHQ6IDcuNXJlbTtcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgcmVzaXplOiBub25lOyB9XG4gICAgICAudGhlbWUtZGFyayAuaW5wdXQtYmxvY2sudGV4dGFyZWEgdGV4dGFyZWEge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZTI3O1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrLnRleHRhcmVhIHRleHRhcmVhIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAuaW5wdXQtYmxvY2sudGV4dGFyZWEgdGV4dGFyZWEge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xuICAgICAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAuaW5wdXQtYmxvY2sgLmVycm9yLWJsb2NrIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNHJlbTtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDsgfVxuICAgIC50aGVtZS1kYXJrIC5pbnB1dC1ibG9jayAuZXJyb3ItYmxvY2sge1xuICAgICAgY29sb3I6ICNmZjUyNTI7IH1cbiAgICAudGhlbWUtZ3JheSAuaW5wdXQtYmxvY2sgLmVycm9yLWJsb2NrIHtcbiAgICAgIGNvbG9yOiAjZmY1MjUyOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jayAuZXJyb3ItYmxvY2sge1xuICAgICAgY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWRhcmsgLmVycm9yLXRleHQge1xuICBjb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZ3JheSAuZXJyb3ItdGV4dCB7XG4gIGNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS13aGl0ZSAuZXJyb3ItdGV4dCB7XG4gIGNvbG9yOiAjZmY1MjUyOyB9XG5cbmlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW8gKyBsYWJlbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgcGFkZGluZy1sZWZ0OiAyLjRyZW07XG4gIC13ZWJraXQtdG91Y2gtY29sbG91dDogbm9uZTtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lOyB9XG4gIC50aGVtZS1kYXJrIGlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW8gKyBsYWJlbCB7XG4gICAgY29sb3I6ICM1NTY1NzY7IH1cbiAgLnRoZW1lLWdyYXkgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbyArIGxhYmVsIHtcbiAgICBjb2xvcjogIzU2NWM2MjsgfVxuICAudGhlbWUtd2hpdGUgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbyArIGxhYmVsIHtcbiAgICBjb2xvcjogI2EwYTVhYjsgfVxuXG5pbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgb3BhY2l0eTogMDsgfVxuICBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDAuN3JlbTtcbiAgICBsZWZ0OiAwO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB3aWR0aDogMS40cmVtO1xuICAgIGhlaWdodDogMS40cmVtOyB9XG4gICAgLnRoZW1lLWRhcmsgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgICAgYm9yZGVyOiAwLjFyZW0gc29saWQgIzRkYjFmZjsgfVxuICAgIC50aGVtZS1ncmF5IGlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86bm90KGNoZWNrZWQpICsgbGFiZWw6YmVmb3JlIHtcbiAgICAgIGJvcmRlcjogMC4xcmVtIHNvbGlkICM0MmE1ZjU7IH1cbiAgICAudGhlbWUtd2hpdGUgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgICAgYm9yZGVyOiAwLjFyZW0gc29saWQgIzJjOTVmMTsgfVxuICBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxcmVtO1xuICAgIGxlZnQ6IDAuM3JlbTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb3BhY2l0eTogMDtcbiAgICB3aWR0aDogMC44cmVtO1xuICAgIGhlaWdodDogMC44cmVtOyB9XG4gICAgLnRoZW1lLWRhcmsgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG4gICAgLnRoZW1lLWdyYXkgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG4gICAgLnRoZW1lLXdoaXRlIGlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86bm90KGNoZWNrZWQpICsgbGFiZWw6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG5pbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOmNoZWNrZWQgKyBsYWJlbDphZnRlciB7XG4gIG9wYWNpdHk6IDE7IH1cblxuaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveCArIGxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXdlaWdodDogNDAwO1xuICBwYWRkaW5nLWxlZnQ6IDMuNnJlbTtcbiAgLXdlYmtpdC10b3VjaC1jb2xsb3V0OiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7IH1cbiAgLnRoZW1lLWRhcmsgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveCArIGxhYmVsIHtcbiAgICBjb2xvcjogIzU1NjU3NjsgfVxuICAudGhlbWUtZ3JheSBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94ICsgbGFiZWwge1xuICAgIGNvbG9yOiAjNTY1YzYyOyB9XG4gIC50aGVtZS13aGl0ZSBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94ICsgbGFiZWwge1xuICAgIGNvbG9yOiAjYTBhNWFiOyB9XG5cbmlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6bm90KGNoZWNrZWQpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogMS42cmVtO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuICBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94Om5vdChjaGVja2VkKSArIGxhYmVsIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiAxLjZyZW07XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIHdpZHRoOiAxLjRyZW07XG4gICAgaGVpZ2h0OiAxLjRyZW07IH1cbiAgICAudGhlbWUtZGFyayBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94Om5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCAjNGRiMWZmOyB9XG4gICAgLnRoZW1lLWdyYXkgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgICAgYm9yZGVyOiAwLjFyZW0gc29saWQgIzQyYTVmNTsgfVxuICAgIC50aGVtZS13aGl0ZSBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94Om5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCAjMmM5NWYxOyB9XG5cbmlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7XG4gIGJhY2tncm91bmQ6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9jb21wbGV0ZS10ZXN0d2FsbGV0LnN2Zyk7IH1cbiAgLnRoZW1lLWRhcmsgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG4gIC50aGVtZS1ncmF5IGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuICAudGhlbWUtd2hpdGUgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIC5zd2l0Y2gge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyB9XG5cbi50aGVtZS1ncmF5IC5zd2l0Y2gge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyB9XG5cbi50aGVtZS13aGl0ZSAuc3dpdGNoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZGFyayAuc3dpdGNoIC5jaXJjbGUub24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IC5zd2l0Y2ggLmNpcmNsZS5vbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIC5zd2l0Y2ggLmNpcmNsZS5vbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgLnN3aXRjaCAuY2lyY2xlLm9mZiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgLnN3aXRjaCAuY2lyY2xlLm9mZiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIC5zd2l0Y2ggLmNpcmNsZS5vZmYge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTBhNWFiOyB9XG5cbi50YWJsZS10b29sdGlwIHtcbiAgcGFkZGluZzogMXJlbSAycmVtOyB9XG4gIC50aGVtZS1kYXJrIC50YWJsZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjNDI1MDVmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcCB7XG4gICAgYmFja2dyb3VuZDogIzNlNDY0YztcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMTIwLCAxMjAsIDEyMCwgMC41KTtcbiAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAudGFibGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciB7XG4gICAgZm9udC1zaXplOiAxLjNyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuOHJlbTtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3Age1xuICAgIG1hcmdpbi10b3A6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3A6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogLTFyZW07XG4gICAgICBsZWZ0OiBjYWxjKDUwJSAtIDAuNXJlbSk7XG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7IH1cbiAgICAgIC50aGVtZS1kYXJrIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wOmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjNDI1MDVmIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcDphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNlNDY0YyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wOmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZmZmZmZmIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wLWxlZnQge1xuICAgIG1hcmdpbi10b3A6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtbGVmdDphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAtMXJlbTtcbiAgICAgIGxlZnQ6IDAuN3JlbTtcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtbGVmdDphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzQyNTA1ZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNDI1MDVmOyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcC1sZWZ0OmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjM2U0NjRjIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICMzZTQ2NGM7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcC1sZWZ0OmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZmZmZmZmIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmY7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQge1xuICAgIG1hcmdpbi10b3A6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQ6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogLTFyZW07XG4gICAgICByaWdodDogMC43cmVtO1xuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkOyB9XG4gICAgICAudGhlbWUtZGFyayAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcC1yaWdodDphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzQyNTA1ZiAjNDI1MDVmIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcC1yaWdodDphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNlNDY0YyAjM2U0NjRjIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQ6YWZ0ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6ICNmZmZmZmYgI2ZmZmZmZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbSB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAtMXJlbTtcbiAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMC41cmVtKTtcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b206YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNDI1MDVmIHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICMzZTQ2NGMgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmYgdHJhbnNwYXJlbnQ7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b20tbGVmdCB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLWxlZnQ6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IC0xcmVtO1xuICAgICAgbGVmdDogMC43cmVtO1xuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkOyB9XG4gICAgICAudGhlbWUtZGFyayAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzQyNTA1ZiAjNDI1MDVmOyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzNlNDY0YyAjM2U0NjRjOyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b20tbGVmdDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmYgI2ZmZmZmZjsgfVxuICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1yaWdodCB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAtMXJlbTtcbiAgICAgIHJpZ2h0OiAwLjdyZW07XG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7IH1cbiAgICAgIC50aGVtZS1kYXJrIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIzQyNTA1ZiAjNDI1MDVmIHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1yaWdodDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICMzZTQ2NGMgIzNlNDY0YyB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgI2ZmZmZmZiAjZmZmZmZmIHRyYW5zcGFyZW50OyB9XG4gIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtbGVmdCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IGNhbGMoNTAlIC0gMC41cmVtKTtcbiAgICAgIHJpZ2h0OiAtMXJlbTtcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0OmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNDI1MDVmOyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWxlZnQ6YWZ0ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICMzZTQ2NGM7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWxlZnQ6YWZ0ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmY7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodCB7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07IH1cbiAgICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiBjYWxjKDUwJSAtIDAuNXJlbSk7XG4gICAgICBsZWZ0OiAtMXJlbTtcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICM0MjUwNWYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS1ncmF5IC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtcmlnaHQ6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAjM2U0NjRjIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICNmZmZmZmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cblxuLnRhYmxlLXRvb2x0aXAtZGltZW5zaW9ucyAudG9vbHRpcC1pbm5lciB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICBtYXgtd2lkdGg6IDIwcmVtO1xuICBtYXgtaGVpZ2h0OiAxMHJlbTsgfVxuXG4uYmFsYW5jZS10b29sdGlwIHtcbiAgcGFkZGluZzogMS4zcmVtOyB9XG4gIC50aGVtZS1kYXJrIC5iYWxhbmNlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICM0MjUwNWY7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS1ncmF5IC5iYWxhbmNlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICMzZTQ2NGM7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS13aGl0ZSAuYmFsYW5jZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMTIwLCAxMjAsIDEyMCwgMC41KTtcbiAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZm9udC1zaXplOiAxLjNyZW07IH1cbiAgICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5hdmFpbGFibGUge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMS43cmVtOyB9XG4gICAgICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5hdmFpbGFibGUgYiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7IH1cbiAgICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5sb2NrZWQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMC43cmVtOyB9XG4gICAgICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5sb2NrZWQgYiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7IH1cbiAgICAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5saW5rIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjsgfVxuICAgICAgLnRoZW1lLWRhcmsgLmJhbGFuY2UtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAubGluayB7XG4gICAgICAgIGNvbG9yOiAjNGRiMWZmOyB9XG4gICAgICAudGhlbWUtZ3JheSAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5saW5rIHtcbiAgICAgICAgY29sb3I6ICM0MmE1ZjU7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAuYmFsYW5jZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5saW5rIHtcbiAgICAgICAgY29sb3I6ICMyYzk1ZjE7IH1cbiAgLmJhbGFuY2UtdG9vbHRpcC5uZy10b29sdGlwLXRvcCB7XG4gICAgbWFyZ2luLXRvcDogLTFyZW07IH1cbiAgLmJhbGFuY2UtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbSB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAuYmFsYW5jZS10b29sdGlwLm5nLXRvb2x0aXAtbGVmdCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtOyB9XG4gIC5iYWxhbmNlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodCB7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07IH1cblxuLmFjY291bnQtdG9vbHRpcCAudG9vbHRpcC1pbm5lciB7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIG1heC13aWR0aDogMThyZW07IH1cblxuLmNvbW1lbnQtdG9vbHRpcCAudG9vbHRpcC1pbm5lciB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICBtYXgtd2lkdGg6IDUwcmVtO1xuICBtYXgtaGVpZ2h0OiAyNXJlbTsgfVxuXG4udXBkYXRlLXRvb2x0aXAge1xuICBwYWRkaW5nOiAxLjVyZW07IH1cbiAgLnRoZW1lLWRhcmsgLnVwZGF0ZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjNDI1MDVmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAudXBkYXRlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICMzZTQ2NGM7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS13aGl0ZSAudXBkYXRlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgxMjAsIDEyMCwgMTIwLCAwLjUpO1xuICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gIC50aGVtZS1kYXJrIC51cGRhdGUtdG9vbHRpcC5pbXBvcnRhbnQge1xuICAgIGJhY2tncm91bmQ6ICM1ZjJiMTE7XG4gICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgLnRoZW1lLWdyYXkgLnVwZGF0ZS10b29sdGlwLmltcG9ydGFudCB7XG4gICAgYmFja2dyb3VuZDogIzU1MjQwZDtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwLmltcG9ydGFudCB7XG4gICAgYmFja2dyb3VuZDogI2VmNmMwMDtcbiAgICBjb2xvcjogI2ZmZmZmZjsgfVxuICAudGhlbWUtZGFyayAudXBkYXRlLXRvb2x0aXAuaW1wb3J0YW50Lm5nLXRvb2x0aXAtbGVmdC1ib3R0b206YWZ0ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzVmMmIxMSAjNWYyYjExOyB9XG4gIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5pbXBvcnRhbnQubmctdG9vbHRpcC1sZWZ0LWJvdHRvbTphZnRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNTUyNDBkICM1NTI0MGQ7IH1cbiAgLnRoZW1lLXdoaXRlIC51cGRhdGUtdG9vbHRpcC5pbXBvcnRhbnQubmctdG9vbHRpcC1sZWZ0LWJvdHRvbTphZnRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjZWY2YzAwICNlZjZjMDA7IH1cbiAgLnRoZW1lLWRhcmsgLnVwZGF0ZS10b29sdGlwLmltcG9ydGFudC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbTpiZWZvcmUge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIzVmMmIxMSAjNWYyYjExIHRyYW5zcGFyZW50OyB9XG4gIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5pbXBvcnRhbnQubmctdG9vbHRpcC1yaWdodC1ib3R0b206YmVmb3JlIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICM1NTI0MGQgIzU1MjQwZCB0cmFuc3BhcmVudDsgfVxuICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwLmltcG9ydGFudC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbTpiZWZvcmUge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgI2VmNmMwMCAjZWY2YzAwIHRyYW5zcGFyZW50OyB9XG4gIC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbCB7XG4gICAgcGFkZGluZzogMi41cmVtOyB9XG4gICAgLnRoZW1lLWRhcmsgLnVwZGF0ZS10b29sdGlwLmNyaXRpY2FsIHtcbiAgICAgIGJhY2tncm91bmQ6ICM1ZjFkMWQ7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbCB7XG4gICAgICBiYWNrZ3JvdW5kOiAjNGMxOTE5O1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwLmNyaXRpY2FsIHtcbiAgICAgIGJhY2tncm91bmQ6ICNlNTM5MzU7XG4gICAgICBjb2xvcjogI2ZmZmZmZjsgfVxuICAgIC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbCAudG9vbHRpcC1pbm5lciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cbiAgICAudGhlbWUtZGFyayAudXBkYXRlLXRvb2x0aXAuY3JpdGljYWwubmctdG9vbHRpcC1sZWZ0LWJvdHRvbTphZnRlciB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM1ZjFkMWQgIzVmMWQxZDsgfVxuICAgIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbC5uZy10b29sdGlwLWxlZnQtYm90dG9tOmFmdGVyIHtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzRjMTkxOSAjNGMxOTE5OyB9XG4gICAgLnRoZW1lLXdoaXRlIC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbC5uZy10b29sdGlwLWxlZnQtYm90dG9tOmFmdGVyIHtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2U1MzkzNSAjZTUzOTM1OyB9XG4gICAgLnRoZW1lLWRhcmsgLnVwZGF0ZS10b29sdGlwLmNyaXRpY2FsLm5nLXRvb2x0aXAtcmlnaHQtYm90dG9tOmJlZm9yZSB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICM1ZjFkMWQgIzVmMWQxZCB0cmFuc3BhcmVudDsgfVxuICAgIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5jcml0aWNhbC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbTpiZWZvcmUge1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAjNGMxOTE5ICM0YzE5MTkgdHJhbnNwYXJlbnQ7IH1cbiAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwLmNyaXRpY2FsLm5nLXRvb2x0aXAtcmlnaHQtYm90dG9tOmJlZm9yZSB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICNlNTM5MzUgI2U1MzkzNSB0cmFuc3BhcmVudDsgfVxuICAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIge1xuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjhyZW07XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB9XG4gICAgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5zdGFuZGFyZC11cGRhdGUge1xuICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICBsaW5lLWhlaWdodDogMi43cmVtOyB9XG4gICAgICAudGhlbWUtZGFyayAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLnN0YW5kYXJkLXVwZGF0ZSB7XG4gICAgICAgIGNvbG9yOiAjNGRiMWZmOyB9XG4gICAgICAudGhlbWUtZ3JheSAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLnN0YW5kYXJkLXVwZGF0ZSB7XG4gICAgICAgIGNvbG9yOiAjNDJhNWY1OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5zdGFuZGFyZC11cGRhdGUge1xuICAgICAgICBjb2xvcjogIzJjOTVmMTsgfVxuICAgIC51cGRhdGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAuaW1wb3J0YW50LXVwZGF0ZSB7XG4gICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjdyZW07IH1cbiAgICAgIC50aGVtZS1kYXJrIC51cGRhdGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAuaW1wb3J0YW50LXVwZGF0ZSB7XG4gICAgICAgIGNvbG9yOiAjZmY2ZjAwOyB9XG4gICAgICAudGhlbWUtZ3JheSAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLmltcG9ydGFudC11cGRhdGUge1xuICAgICAgICBjb2xvcjogI2ZmNmYwMDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC51cGRhdGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAuaW1wb3J0YW50LXVwZGF0ZSB7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmOyB9XG4gICAgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5jcml0aWNhbC11cGRhdGUge1xuICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICBsaW5lLWhlaWdodDogMi43cmVtO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gICAgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC53cm9uZy10aW1lIHtcbiAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDIuN3JlbTsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC53cm9uZy10aW1lIHtcbiAgICAgICAgY29sb3I6ICNmZjZmMDA7IH1cbiAgICAgIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAud3JvbmctdGltZSB7XG4gICAgICAgIGNvbG9yOiAjZmY2ZjAwOyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC53cm9uZy10aW1lIHtcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7IH1cbiAgICAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLmljb24ge1xuICAgICAgbWFyZ2luOiAxLjVyZW0gMDtcbiAgICAgIHdpZHRoOiA1cmVtO1xuICAgICAgaGVpZ2h0OiA1cmVtOyB9XG4gICAgICAudGhlbWUtZGFyayAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLmljb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG4gICAgICAudGhlbWUtZ3JheSAudXBkYXRlLXRvb2x0aXAgLnRvb2x0aXAtaW5uZXIgLmljb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwIC50b29sdGlwLWlubmVyIC5pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxuICAudXBkYXRlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0LWJvdHRvbSB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xLjVyZW07IH1cbiAgICAudXBkYXRlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0LWJvdHRvbTphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAwLjZyZW07XG4gICAgICByaWdodDogLTFyZW07XG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7IH1cbiAgICAgIC50aGVtZS1kYXJrIC51cGRhdGUtdG9vbHRpcC5uZy10b29sdGlwLWxlZnQtYm90dG9tOmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNDI1MDVmICM0MjUwNWY7IH1cbiAgICAgIC50aGVtZS1ncmF5IC51cGRhdGUtdG9vbHRpcC5uZy10b29sdGlwLWxlZnQtYm90dG9tOmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjM2U0NjRjICMzZTQ2NGM7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudXBkYXRlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0LWJvdHRvbTphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2ZmZmZmZiAjZmZmZmZmOyB9XG4gIC51cGRhdGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbSB7XG4gICAgbWFyZ2luLWxlZnQ6IDEuNXJlbTsgfVxuICAgIC51cGRhdGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbTpiZWZvcmUge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogMC42cmVtO1xuICAgICAgbGVmdDogLTFyZW07XG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7IH1cbiAgICAgIC50aGVtZS1kYXJrIC51cGRhdGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbTpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICM0MjUwNWYgIzQyNTA1ZiB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLnVwZGF0ZS10b29sdGlwLm5nLXRvb2x0aXAtcmlnaHQtYm90dG9tOmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIzNlNDY0YyAjM2U0NjRjIHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnVwZGF0ZS10b29sdGlwLm5nLXRvb2x0aXAtcmlnaHQtYm90dG9tOmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgI2ZmZmZmZiAjZmZmZmZmIHRyYW5zcGFyZW50OyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgLmRyb3Bkb3duLW1lbnUge1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDA7IH1cbiAgLnRoZW1lLWRhcmsgLm5neC1jb250ZXh0bWVudSAuZHJvcGRvd24tbWVudSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJiMzY0NDtcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSk7IH1cbiAgLnRoZW1lLWdyYXkgLm5neC1jb250ZXh0bWVudSAuZHJvcGRvd24tbWVudSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSk7IH1cbiAgLnRoZW1lLXdoaXRlIC5uZ3gtY29udGV4dG1lbnUgLmRyb3Bkb3duLW1lbnUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgxMjAsIDEyMCwgMTIwLCAwLjUpOyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgbGkge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEuM3JlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwLjVlbSAxZW07IH1cbiAgLnRoZW1lLWRhcmsgLm5neC1jb250ZXh0bWVudSBhIHtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAubmd4LWNvbnRleHRtZW51IGEge1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS13aGl0ZSAubmd4LWNvbnRleHRtZW51IGEge1xuICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gIC50aGVtZS1kYXJrIC5uZ3gtY29udGV4dG1lbnUgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAubmd4LWNvbnRleHRtZW51IGE6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1MTU5NjA7XG4gICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgLnRoZW1lLXdoaXRlIC5uZ3gtY29udGV4dG1lbnUgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICBjb2xvcjogIzQzNDU0YjsgfVxuXG4ubmctc2VsZWN0LmN1c3RvbS1zZWxlY3Qge1xuICB3aWR0aDogMTAwJTsgfVxuICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICBoZWlnaHQ6IDQuMnJlbTsgfVxuICAgIC50aGVtZS1kYXJrIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctc2VsZWN0LWNvbnRhaW5lciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZTI3O1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtZ3JheSAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctc2VsZWN0LWNvbnRhaW5lciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xuICAgICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciB7XG4gICAgICBwYWRkaW5nOiAwOyB9XG4gICAgICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctaW5wdXQge1xuICAgICAgICB0b3A6IGF1dG87IH1cbiAgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCB7XG4gICAgYm9yZGVyOiBub25lOyB9XG4gICAgLnRoZW1lLWRhcmsgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZTI3OyB9XG4gICAgLnRoZW1lLWdyYXkgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjkyZDMxOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjsgfVxuICAgIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ge1xuICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICBwYWRkaW5nOiAxcmVtOyB9XG4gICAgICAudGhlbWUtZGFyayAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzE3MWUyNztcbiAgICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAgIC50aGVtZS1ncmF5IC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjkyZDMxO1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xuICAgICAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAgICAgLnRoZW1lLWRhcmsgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tbWFya2VkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg1OCwgNjksIDg1LCAwLjUpO1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tbWFya2VkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg1OCwgNjIsIDY2LCAwLjUpO1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ubmctb3B0aW9uLW1hcmtlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjQwLCAyNDAsIDI0MCwgMC41KTtcbiAgICAgICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgICAgIC50aGVtZS1kYXJrIC5uZy1zZWxlY3QuY3VzdG9tLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ubmctb3B0aW9uLXNlbGVjdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpO1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSk7XG4gICAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgICAudGhlbWUtd2hpdGUgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIyNCwgMjI0LCAyMjQsIDAuNSk7XG4gICAgICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gICAgLm5nLXNlbGVjdC5jdXN0b20tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXM6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgd2lkdGg6IDFyZW07XG4gICAgICBoZWlnaHQ6IDFyZW07IH1cbiAgICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtczo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH1cbiAgICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjtcbiAgICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gICAgICBib3JkZXI6IDAuMjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07IH1cbiAgICAubmctc2VsZWN0LmN1c3RvbS1zZWxlY3QgLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZGFyayBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCB7XG4gIGJhY2tncm91bmQ6IHVybCh+c3JjL2Fzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC1kYXJrLnBuZyk7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIHtcbiAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWdyYXkucG5nKTtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIHtcbiAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLXdoaXRlLnBuZyk7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLmVycm9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5lcnJvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLmVycm9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uc3VjY2VzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NmMxNzI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uaW5mbyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uaW5mbyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLmluZm8ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5hY3Rpb24tYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjtcbiAgY29sb3I6ICMxMTE5MjE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmFjdGlvbi1idXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1O1xuICBjb2xvcjogIzFhMWExYTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmFjdGlvbi1idXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxO1xuICBjb2xvcjogI2ZlZmVmZTsgfVxuXG4udGhlbWUtZGFyayBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY2xvc2UtYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY2xvc2UtYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUxNTk2MDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNsb3NlLWJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIHtcbiAgYm9yZGVyLXRvcDogMC4ycmVtIHNvbGlkICMyYjM2NDQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIHtcbiAgYm9yZGVyLXRvcDogMC4ycmVtIHNvbGlkICMyZjM0Mzg7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSB7XG4gIGJvcmRlci10b3A6IDAuMnJlbSBzb2xpZCAjZWJlYmViOyB9XG5cbi50aGVtZS1kYXJrIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLmxhYmVsIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwubGFiZWwge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwubGFiZWwge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtdHJhbnNhY3Rpb24tZGV0YWlscyAudGFibGUgLnJvdyAuY2VsbC52YWx1ZSB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLnZhbHVlIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLnZhbHVlIHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwua2V5LXZhbHVlIHtcbiAgY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwua2V5LXZhbHVlIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLmtleS12YWx1ZSB7XG4gIGNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1wcm9ncmVzcy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtcHJvZ3Jlc3MtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wcm9ncmVzcy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtcHJvZ3Jlc3MtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzZjRhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wcm9ncmVzcy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNjNhM2U7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wcm9ncmVzcy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2RjZGM7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXByb2dyZXNzLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5wcm9ncmVzcy1iYXItZnVsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXByb2dyZXNzLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5wcm9ncmVzcy1iYXItZnVsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0N2NmOGQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wcm9ncmVzcy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciAucHJvZ3Jlc3MtYmFyLWZ1bGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1vcGVuLXdhbGxldC1tb2RhbCAubW9kYWwge1xuICBiYWNrZ3JvdW5kOiB1cmwofnNyYy9hc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtZGFyay5wbmcpO1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtb3Blbi13YWxsZXQtbW9kYWwgLm1vZGFsIHtcbiAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWdyYXkucG5nKTtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1vcGVuLXdhbGxldC1tb2RhbCAubW9kYWwge1xuICBiYWNrZ3JvdW5kOiB1cmwofnNyYy9hc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtd2hpdGUucG5nKTtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuYXBwLW1haW4sIGFwcC1jcmVhdGUtd2FsbGV0LCBhcHAtb3Blbi13YWxsZXQsIGFwcC1yZXN0b3JlLXdhbGxldCwgYXBwLXNlZWQtcGhyYXNlLCBhcHAtd2FsbGV0LWRldGFpbHMsIGFwcC1hc3NpZ24tYWxpYXMsIGFwcC1lZGl0LWFsaWFzLCBhcHAtdHJhbnNmZXItYWxpYXMsIGFwcC1zZXR0aW5ncywgYXBwLWxvZ2luIHtcbiAgZmxleDogMSAxIGF1dG87XG4gIHBhZGRpbmc6IDNyZW07XG4gIG1pbi13aWR0aDogODVyZW07IH1cbiAgYXBwLW1haW4gLmNvbnRlbnQsIGFwcC1jcmVhdGUtd2FsbGV0IC5jb250ZW50LCBhcHAtb3Blbi13YWxsZXQgLmNvbnRlbnQsIGFwcC1yZXN0b3JlLXdhbGxldCAuY29udGVudCwgYXBwLXNlZWQtcGhyYXNlIC5jb250ZW50LCBhcHAtd2FsbGV0LWRldGFpbHMgLmNvbnRlbnQsIGFwcC1hc3NpZ24tYWxpYXMgLmNvbnRlbnQsIGFwcC1lZGl0LWFsaWFzIC5jb250ZW50LCBhcHAtdHJhbnNmZXItYWxpYXMgLmNvbnRlbnQsIGFwcC1zZXR0aW5ncyAuY29udGVudCwgYXBwLWxvZ2luIC5jb250ZW50IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogM3JlbTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlOyB9XG4gICAgLnRoZW1lLWRhcmsgYXBwLW1haW4gLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1jcmVhdGUtd2FsbGV0IC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtb3Blbi13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1yZXN0b3JlLXdhbGxldCAuY29udGVudCwgLnRoZW1lLWRhcmsgYXBwLXNlZWQtcGhyYXNlIC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtd2FsbGV0LWRldGFpbHMgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1hc3NpZ24tYWxpYXMgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1lZGl0LWFsaWFzIC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtdHJhbnNmZXItYWxpYXMgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1zZXR0aW5ncyAuY29udGVudCwgLnRoZW1lLWRhcmsgYXBwLWxvZ2luIC5jb250ZW50IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KTtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLWdyYXkgYXBwLW1haW4gLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1jcmVhdGUtd2FsbGV0IC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtb3Blbi13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1yZXN0b3JlLXdhbGxldCAuY29udGVudCwgLnRoZW1lLWdyYXkgYXBwLXNlZWQtcGhyYXNlIC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtd2FsbGV0LWRldGFpbHMgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1hc3NpZ24tYWxpYXMgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1lZGl0LWFsaWFzIC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtdHJhbnNmZXItYWxpYXMgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1zZXR0aW5ncyAuY29udGVudCwgLnRoZW1lLWdyYXkgYXBwLWxvZ2luIC5jb250ZW50IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzcsIDQwLCA0MywgMC41KTtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLXdoaXRlIGFwcC1tYWluIC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLWNyZWF0ZS13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtb3Blbi13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtcmVzdG9yZS13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtc2VlZC1waHJhc2UgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtd2FsbGV0LWRldGFpbHMgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtYXNzaWduLWFsaWFzIC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLWVkaXQtYWxpYXMgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtdHJhbnNmZXItYWxpYXMgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtc2V0dGluZ3MgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtbG9naW4gLmNvbnRlbnQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAgICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgICBhcHAtbWFpbiAuY29udGVudCAuaGVhZCwgYXBwLWNyZWF0ZS13YWxsZXQgLmNvbnRlbnQgLmhlYWQsIGFwcC1vcGVuLXdhbGxldCAuY29udGVudCAuaGVhZCwgYXBwLXJlc3RvcmUtd2FsbGV0IC5jb250ZW50IC5oZWFkLCBhcHAtc2VlZC1waHJhc2UgLmNvbnRlbnQgLmhlYWQsIGFwcC13YWxsZXQtZGV0YWlscyAuY29udGVudCAuaGVhZCwgYXBwLWFzc2lnbi1hbGlhcyAuY29udGVudCAuaGVhZCwgYXBwLWVkaXQtYWxpYXMgLmNvbnRlbnQgLmhlYWQsIGFwcC10cmFuc2Zlci1hbGlhcyAuY29udGVudCAuaGVhZCwgYXBwLXNldHRpbmdzIC5jb250ZW50IC5oZWFkLCBhcHAtbG9naW4gLmNvbnRlbnQgLmhlYWQge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMDsgfVxuXG4udGhlbWUtZGFyayBhcHAtbWFpbiAuY29udGVudCAuYWRkLXdhbGxldCAuYWRkLXdhbGxldC1oZWxwIHtcbiAgY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1haW4gLmNvbnRlbnQgLmFkZC13YWxsZXQgLmFkZC13YWxsZXQtaGVscCB7XG4gIGNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtbWFpbiAuY29udGVudCAuYWRkLXdhbGxldCAuYWRkLXdhbGxldC1oZWxwIHtcbiAgY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLW1haW4gLmNvbnRlbnQgLmFkZC13YWxsZXQgLmFkZC13YWxsZXQtaGVscCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1haW4gLmNvbnRlbnQgLmFkZC13YWxsZXQgLmFkZC13YWxsZXQtaGVscCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tYWluIC5jb250ZW50IC5hZGQtd2FsbGV0IC5hZGQtd2FsbGV0LWhlbHAgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zZWVkLXBocmFzZSAuc2VlZC1waHJhc2UtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxNzFlMjc7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zZWVkLXBocmFzZSAuc2VlZC1waHJhc2UtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOTJkMzE7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2VlZC1waHJhc2UgLnNlZWQtcGhyYXNlLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0LWRldGFpbHMgLnNlZWQtcGhyYXNlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE3MWUyNzsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0LWRldGFpbHMgLnNlZWQtcGhyYXNlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldC1kZXRhaWxzIC5zZWVkLXBocmFzZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7IH1cblxuYXBwLXNldHRpbmdzIC5jb250ZW50IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH1cbiAgLnRoZW1lLWRhcmsgYXBwLXNldHRpbmdzIC5jb250ZW50IC50aGVtZS1zZWxlY3Rpb24ge1xuICAgIGNvbG9yOiAjNTU2NTc2OyB9XG4gIC50aGVtZS1ncmF5IGFwcC1zZXR0aW5ncyAuY29udGVudCAudGhlbWUtc2VsZWN0aW9uIHtcbiAgICBjb2xvcjogIzU2NWM2MjsgfVxuICAudGhlbWUtd2hpdGUgYXBwLXNldHRpbmdzIC5jb250ZW50IC50aGVtZS1zZWxlY3Rpb24ge1xuICAgIGNvbG9yOiAjYTBhNWFiOyB9XG4gIC50aGVtZS1kYXJrIGFwcC1zZXR0aW5ncyAuY29udGVudCAuc2NhbGUtc2VsZWN0aW9uIC5idXR0b24tYmxvY2sge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjMsIDMxLCAzOSwgMC41KTsgfVxuICAudGhlbWUtZ3JheSBhcHAtc2V0dGluZ3MgLmNvbnRlbnQgLnNjYWxlLXNlbGVjdGlvbiAuYnV0dG9uLWJsb2NrIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI4LCAzMCwgMzMsIDAuNSk7IH1cbiAgLnRoZW1lLXdoaXRlIGFwcC1zZXR0aW5ncyAuY29udGVudCAuc2NhbGUtc2VsZWN0aW9uIC5idXR0b24tYmxvY2sge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjI0LCAyMjQsIDIyNCwgMC41KTsgfVxuICAudGhlbWUtZGFyayBhcHAtc2V0dGluZ3MgLmNvbnRlbnQgLnNjYWxlLXNlbGVjdGlvbiAuYnV0dG9uLWJsb2NrIC5sYWJlbCB7XG4gICAgY29sb3I6ICM1NTY1NzY7IH1cbiAgLnRoZW1lLWdyYXkgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jayAubGFiZWwge1xuICAgIGNvbG9yOiAjNTY1YzYyOyB9XG4gIC50aGVtZS13aGl0ZSBhcHAtc2V0dGluZ3MgLmNvbnRlbnQgLnNjYWxlLXNlbGVjdGlvbiAuYnV0dG9uLWJsb2NrIC5sYWJlbCB7XG4gICAgY29sb3I6ICNhMGE1YWI7IH1cbiAgLnRoZW1lLWRhcmsgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jay5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cbiAgLnRoZW1lLWdyYXkgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jay5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cbiAgLnRoZW1lLXdoaXRlIGFwcC1zZXR0aW5ncyAuY29udGVudCAuc2NhbGUtc2VsZWN0aW9uIC5idXR0b24tYmxvY2suYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG4gIC50aGVtZS1kYXJrIGFwcC1zZXR0aW5ncyAuY29udGVudCAuc2NhbGUtc2VsZWN0aW9uIC5idXR0b24tYmxvY2suYWN0aXZlIC5sYWJlbCB7XG4gICAgY29sb3I6ICM0ZGIxZmY7IH1cbiAgLnRoZW1lLWdyYXkgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jay5hY3RpdmUgLmxhYmVsIHtcbiAgICBjb2xvcjogIzQyYTVmNTsgfVxuICAudGhlbWUtd2hpdGUgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jay5hY3RpdmUgLmxhYmVsIHtcbiAgICBjb2xvcjogIzJjOTVmMTsgfVxuXG5hcHAtbG9naW4ge1xuICBtaW4td2lkdGg6IGluaGVyaXQ7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZjI3OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFjMWUyMTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1oZWFkZXIgaDMge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1oZWFkZXIgaDMge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtaGVhZGVyIGgzIHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtaGVhZGVyIGJ1dHRvbiB7XG4gIGNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWhlYWRlciBidXR0b24ge1xuICBjb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtaGVhZGVyIGJ1dHRvbiB7XG4gIGNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnRleHQge1xuICBjb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnRleHQge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC50ZXh0IHtcbiAgY29sb3I6ICNhMGE1YWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjtcbiAgY29sb3I6ICMxMTE5MjE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1O1xuICBjb2xvcjogIzFhMWExYTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxO1xuICBjb2xvcjogI2ZlZmVmZTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDNmNGE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzYzYTNlOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2RjZGM7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIgLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIgLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdy5hY2NvdW50LXN5bmNocm9uaXphdGlvbiB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdy5hY2NvdW50LXN5bmNocm9uaXphdGlvbiB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpO1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzNywgNDAsIDQzLCAwLjUpO1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZTg4ZTU7XG4gIGNvbG9yOiAjZmZmZmZmOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLnRleHQge1xuICBjb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC50ZXh0IHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLnRleHQge1xuICBjb2xvcjogIzkxYmFmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmO1xuICBjb2xvcjogIzExMTkyMTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1O1xuICBjb2xvcjogIzFhMWExYTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAuc3dpdGNoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAuc3dpdGNoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLnN3aXRjaCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xuICBjb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93LmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xuICBjb2xvcjogIzkxYmFmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQ6aG92ZXI6bm90KC5hY3RpdmUpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg1OCwgNjksIDg1LCAwLjUpOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudDpob3Zlcjpub3QoLmFjdGl2ZSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDU4LCA2MiwgNjYsIDAuNSk7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudDpob3Zlcjpub3QoLmFjdGl2ZSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0MCwgMjQwLCAyNDAsIDAuNSk7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHM6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB0cmFuc3BhcmVudCAwJSwgIzE3MWYyNyAxMDAlKTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50czphZnRlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50IDAlLCAjMWMxZTIxIDEwMCUpOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50czphZnRlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50IDAlLCB3aGl0ZSAxMDAlKTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zZXR0aW5ncyB7XG4gIGJvcmRlci1ib3R0b206IDAuMnJlbSBzb2xpZCAjMWYyODMzOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIHtcbiAgYm9yZGVyLWJvdHRvbTogMC4ycmVtIHNvbGlkICMyZTMzMzc7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIHtcbiAgYm9yZGVyLWJvdHRvbTogMC4ycmVtIHNvbGlkICNlYmViZWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgLndyYXAtYnV0dG9uIGJ1dHRvbiB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbiBidXR0b24ge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgLndyYXAtYnV0dG9uIGJ1dHRvbiB7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbiBidXR0b24gLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbiBidXR0b24gLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zZXR0aW5ncyAud3JhcC1idXR0b24gYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zZXR0aW5ncyAud3JhcC1idXR0b24uYWN0aXZlIGJ1dHRvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KSAhaW1wb3J0YW50O1xuICBjb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbi5hY3RpdmUgYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzNywgNDAsIDQzLCAwLjUpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbi5hY3RpdmUgYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFlODhlNSAhaW1wb3J0YW50O1xuICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbi5hY3RpdmUgYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZiAhaW1wb3J0YW50OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbi5hY3RpdmUgYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNSAhaW1wb3J0YW50OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zZXR0aW5ncyAud3JhcC1idXR0b24uYWN0aXZlIGJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIHtcbiAgY29sb3I6ICNhMGE1YWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAub2ZmbGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLm9mZmxpbmU6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAub2ZmbGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLm9ubGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNkYTlkOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLm9ubGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5vbmxpbmU6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5zeW5jaW5nIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzZjRhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnN5bmNpbmcgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNjNhM2U7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnN5bmNpbmcgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2RjZGM7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAuc3luY2luZyAucHJvZ3Jlc3MtYmFyIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5zeW5jaW5nIC5wcm9ncmVzcy1iYXIgLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5zeW5jaW5nIC5wcm9ncmVzcy1iYXIgLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLmxvYWRpbmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNkYTlkOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLmxvYWRpbmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5sb2FkaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5zdGFuZGFyZCB7XG4gIGNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLnN0YW5kYXJkIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLnN0YW5kYXJkIHtcbiAgY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaW1wb3J0YW50IHtcbiAgY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaW1wb3J0YW50IHtcbiAgY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLmltcG9ydGFudCB7XG4gIGNvbG9yOiAjZmY2ZjAwOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLmNyaXRpY2FsIHtcbiAgY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuY3JpdGljYWwge1xuICBjb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuY3JpdGljYWwge1xuICBjb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC50aW1lIHtcbiAgY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAudGltZSB7XG4gIGNvbG9yOiAjZmY2ZjAwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC50aW1lIHtcbiAgY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaWNvbi5zdGFuZGFyZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaWNvbi5zdGFuZGFyZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLmljb24uc3RhbmRhcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLmljb24uaW1wb3J0YW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5pY29uLmltcG9ydGFudCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnVwZGF0ZS1jb250YWluZXIgLmljb24uaW1wb3J0YW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5pY29uLmNyaXRpY2FsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5pY29uLmNyaXRpY2FsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaWNvbi5jcml0aWNhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAudXBkYXRlLWNvbnRhaW5lciAuaWNvbi50aW1lIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5pY29uLnRpbWUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC51cGRhdGUtY29udGFpbmVyIC5pY29uLnRpbWUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQge1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC5oZWFkZXIgYnV0dG9uIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAuaGVhZGVyIGJ1dHRvbiB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC5oZWFkZXIgYnV0dG9uIHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAuaGVhZGVyIGJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAuaGVhZGVyIGJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLmhlYWRlciBidXR0b24gLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLmhlYWRlciAuYWxpYXMgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQgLmhlYWRlciAuYWxpYXMgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC5oZWFkZXIgLmFsaWFzIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC5hZGRyZXNzIHtcbiAgY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAuYWRkcmVzcyB7XG4gIGNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC5hZGRyZXNzIHtcbiAgY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAuYWRkcmVzcyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAuYWRkcmVzcyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLmFkZHJlc3MgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzLCAzMSwgMzksIDAuNSk7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjgsIDMwLCAzMywgMC41KTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjI0LCAyMjQsIDIyNCwgMC41KTsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjtcbiAgY29sb3I6ICMxMTE5MjE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTtcbiAgY29sb3I6ICMxYTFhMWE7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIgLmluZGljYXRvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpOyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzNywgNDAsIDQzLCAwLjUpOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiOmhvdmVyOm5vdCguYWN0aXZlKTpub3QoLmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTgsIDY5LCA4NSwgMC41KTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiOmhvdmVyOm5vdCguYWN0aXZlKTpub3QoLmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTgsIDYyLCA2NiwgMC41KTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYjpob3Zlcjpub3QoLmFjdGl2ZSk6bm90KC5kaXNhYmxlZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSk7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2VuZCAuZm9ybS1zZW5kIC5zZW5kLXNlbGVjdCB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zZW5kIC5mb3JtLXNlbmQgLnNlbmQtc2VsZWN0IHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zZW5kIC5mb3JtLXNlbmQgLnNlbmQtc2VsZWN0IHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNlbmQgLmZvcm0tc2VuZCAuc2VuZC1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zZW5kIC5mb3JtLXNlbmQgLnNlbmQtc2VsZWN0IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNlbmQgLmZvcm0tc2VuZCAuc2VuZC1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zZW5kIC5mb3JtLXNlbmQgLmFkZGl0aW9uYWwtZGV0YWlscyB7XG4gIGJvcmRlcjogMC4ycmVtIHNvbGlkICMyYjM2NDQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNlbmQgLmZvcm0tc2VuZCAuYWRkaXRpb25hbC1kZXRhaWxzIHtcbiAgYm9yZGVyOiAwLjJyZW0gc29saWQgIzJmMzQzODsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNlbmQgLmZvcm0tc2VuZCAuYWRkaXRpb25hbC1kZXRhaWxzIHtcbiAgYm9yZGVyOiAwLjJyZW0gc29saWQgI2ViZWJlYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtcmVjZWl2ZSAuYnRuLWNvcHktYWRkcmVzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXJlY2VpdmUgLmJ0bi1jb3B5LWFkZHJlc3Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtcmVjZWl2ZSAuYnRuLWNvcHktYWRkcmVzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIubG9ja2VkLXRyYW5zYWN0aW9uIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIubG9ja2VkLXRyYW5zYWN0aW9uIHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyLmxvY2tlZC10cmFuc2FjdGlvbiB7XG4gIGNvbG9yOiAjYTBhNWFiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bisxKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxODIwMmE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzEpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI1MjkyZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzEpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxuXG4udGhlbWUtZGFyayBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rMikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTgyMDJhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bisyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNTI5MmQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bisyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzMpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzMpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0biszKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi50aGVtZS1kYXJrIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bis0KSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bis0KSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rNCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4udGhlbWUtZGFyayBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzIC5jb25maXJtYXRpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzZjRhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5zdGF0dXMgLmNvbmZpcm1hdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNjNhM2U7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5zdGF0dXMgLmNvbmZpcm1hdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2RjZGM7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cyAuY29uZmlybWF0aW9uIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzIC5jb25maXJtYXRpb24gLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzIC5jb25maXJtYXRpb24gLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5sb2NrLXRyYW5zYWN0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAubG9jay10cmFuc2FjdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5sb2NrLXRyYW5zYWN0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDsgfVxuXG4udGhlbWUtZGFyayBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzLnNlbmQgLnN0YXR1cy10cmFuc2FjdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cy5zZW5kIC5zdGF0dXMtdHJhbnNhY3Rpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzLnNlbmQgLnN0YXR1cy10cmFuc2FjdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cy5yZWNlaXZlZCAuc3RhdHVzLXRyYW5zYWN0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzLnJlY2VpdmVkIC5zdGF0dXMtdHJhbnNhY3Rpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzLnJlY2VpdmVkIC5zdGF0dXMtdHJhbnNhY3Rpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLm5ldywgLnRoZW1lLWRhcmsgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24uYWxlcnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLm5ldywgLnRoZW1lLWdyYXkgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24uYWxlcnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5uZXcsIC50aGVtZS13aGl0ZSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5hbGVydCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24ucHVyY2hhc2UsIC50aGVtZS1kYXJrIGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLnNlbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLnB1cmNoYXNlLCAudGhlbWUtZ3JheSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5zZWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24ucHVyY2hhc2UsIC50aGVtZS13aGl0ZSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5zZWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLnB1cmNoYXNlLXNlbGVjdCB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc2VsZWN0IHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc2VsZWN0IHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc2VsZWN0IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc3RhdGVzIHtcbiAgY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zdGF0ZXMge1xuICBjb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zdGF0ZXMge1xuICBjb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLmFkZGl0aW9uYWwtZGV0YWlscyB7XG4gIGJvcmRlcjogMC4ycmVtIHNvbGlkICMyYjM2NDQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5hZGRpdGlvbmFsLWRldGFpbHMge1xuICBib3JkZXI6IDAuMnJlbSBzb2xpZCAjMmYzNDM4OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLmFkZGl0aW9uYWwtZGV0YWlscyB7XG4gIGJvcmRlcjogMC4ycmVtIHNvbGlkICNlYmViZWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXB1cmNoYXNlIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzZjRhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM2M2EzZTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNkY2RjOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1wdXJjaGFzZSAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5wcm9ncmVzcy1iYXItZnVsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXB1cmNoYXNlIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIgLnByb2dyZXNzLWJhci1mdWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIgLnByb2dyZXNzLWJhci1mdWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG5hcHAtbWVzc2FnZXMgdGFibGUgdGJvZHkgdHIgdGQ6Zmlyc3QtY2hpbGQgc3BhbiB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tZXNzYWdlcyB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1lc3NhZ2VzIHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1lc3NhZ2VzIHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtdHlwaW5nLW1lc3NhZ2UgLmhlYWQgLmludGVybG9jdXRvciB7XG4gIGNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC10eXBpbmctbWVzc2FnZSAuaGVhZCAuaW50ZXJsb2N1dG9yIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10eXBpbmctbWVzc2FnZSAuaGVhZCAuaW50ZXJsb2N1dG9yIHtcbiAgY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5kYXRlIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5kYXRlIHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuZGF0ZSB7XG4gIGNvbG9yOiAjYTBhNWFiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYubXkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmEzNTQ0OyB9XG5cbi50aGVtZS1ncmF5IGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYubXkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzAzNjNjOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2Lm15IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfVxuXG5hcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2Lm15OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogLTEuMXJlbTtcbiAgYm9yZGVyOiAxLjJyZW0gc29saWQgdHJhbnNwYXJlbnQ7IH1cbiAgLnRoZW1lLWRhcmsgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5teTpiZWZvcmUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICMyYTM1NDQ7IH1cbiAgLnRoZW1lLWdyYXkgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5teTpiZWZvcmUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICMzMDM2M2M7IH1cbiAgLnRoZW1lLXdoaXRlIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYubXk6YmVmb3JlIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjZmZmOyB9XG5cbi50aGVtZS1kYXJrIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuYnVkZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTgyMDJhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuYnVkZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjUyOTJkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VkZWRlZDsgfVxuXG5hcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IC0xLjFyZW07XG4gIHRvcDogMDtcbiAgYm9yZGVyOiAxLjJyZW0gc29saWQgdHJhbnNwYXJlbnQ7IH1cbiAgLnRoZW1lLWRhcmsgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5idWRkeTphZnRlciB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogIzE4MjAyYTsgfVxuICAudGhlbWUtZ3JheSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5OmFmdGVyIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjMjUyOTJkOyB9XG4gIC50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5OmFmdGVyIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjZWRlZGVkOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zdGFraW5nIC5jaGFydC1oZWFkZXIgLmdlbmVyYWwgLmxhYmVsIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuZ2VuZXJhbCAubGFiZWwge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuZ2VuZXJhbCAubGFiZWwge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc3Rha2luZyAuY2hhcnQtaGVhZGVyIC5nZW5lcmFsIC5vcHRpb25zIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuZ2VuZXJhbCAub3B0aW9ucyB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc3Rha2luZyAuY2hhcnQtaGVhZGVyIC5nZW5lcmFsIC5vcHRpb25zIHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuc2VsZWN0ZWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBmbGV4LWdyb3c6IDE7XG4gIGZvbnQtc2l6ZTogMS42cmVtOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC50aXRsZSB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC50aXRsZSB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAudGl0bGUge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAub3B0aW9ucyBidXR0b24ge1xuICBjb2xvcjogI2UwZTBlMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJiMzY0NDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAub3B0aW9ucyBidXR0b24ge1xuICBjb2xvcjogI2UwZTBlMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLm9wdGlvbnMgYnV0dG9uIHtcbiAgY29sb3I6ICM0MzQ1NGI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLm9wdGlvbnMgYnV0dG9uLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLm9wdGlvbnMgYnV0dG9uLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MTU5NjA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC5vcHRpb25zIGJ1dHRvbi5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB9XG5cbi5pbnB1dC1ibG9jay1hbGlhcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICAuaW5wdXQtYmxvY2stYWxpYXMgLmFsaWFzLWRyb3Bkb3duIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA2LjVyZW07XG4gICAgbWF4LWhlaWdodDogMTByZW07XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgd2lkdGg6IDEwMCU7IH1cbiAgICAudGhlbWUtZGFyayAuaW5wdXQtYmxvY2stYWxpYXMgLmFsaWFzLWRyb3Bkb3duIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxNzFlMjc7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS1ncmF5IC5pbnB1dC1ibG9jay1hbGlhcyAuYWxpYXMtZHJvcGRvd24ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jay1hbGlhcyAuYWxpYXMtZHJvcGRvd24ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjtcbiAgICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gICAgLmlucHV0LWJsb2NrLWFsaWFzIC5hbGlhcy1kcm9wZG93biBkaXYge1xuICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICBwYWRkaW5nOiAxcmVtOyB9XG4gICAgICAudGhlbWUtZGFyayAuaW5wdXQtYmxvY2stYWxpYXMgLmFsaWFzLWRyb3Bkb3duIGRpdjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTgsIDY5LCA4NSwgMC41KTsgfVxuICAgICAgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrLWFsaWFzIC5hbGlhcy1kcm9wZG93biBkaXY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDU4LCA2MiwgNjYsIDAuNSk7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAuaW5wdXQtYmxvY2stYWxpYXMgLmFsaWFzLWRyb3Bkb3duIGRpdjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjQwLCAyNDAsIDI0MCwgMC41KTsgfVxuXG4uaGVhZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBmb250LXNpemU6IDEuM3JlbTtcbiAgcGFkZGluZzogMCAzcmVtO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAzcmVtOyB9XG4gIC50aGVtZS1kYXJrIC5oZWFkIHtcbiAgICBjb2xvcjogIzRkYjFmZjsgfVxuICAudGhlbWUtZ3JheSAuaGVhZCB7XG4gICAgY29sb3I6ICM0MmE1ZjU7IH1cbiAgLnRoZW1lLXdoaXRlIC5oZWFkIHtcbiAgICBjb2xvcjogIzJjOTVmMTsgfVxuICAuaGVhZCAuYnJlYWRjcnVtYnMgPiBzcGFuOm5vdCg6bGFzdC1jaGlsZCksIC5oZWFkIC5icmVhZGNydW1icyBhOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuICAgIG91dGxpbmUtc3R5bGU6IG5vbmU7IH1cbiAgICAuaGVhZCAuYnJlYWRjcnVtYnMgPiBzcGFuOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIsIC5oZWFkIC5icmVhZGNydW1icyBhOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwLjVyZW07XG4gICAgICByaWdodDogLTEuNXJlbTtcbiAgICAgIHdpZHRoOiAwLjlyZW07XG4gICAgICBoZWlnaHQ6IDAuOXJlbTtcbiAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9hcnJvdy1yaWdodC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgICBtYXNrLXNpemU6IGNvdmVyOyB9XG4gICAgICAudGhlbWUtZGFyayAuaGVhZCAuYnJlYWRjcnVtYnMgPiBzcGFuOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIsIC50aGVtZS1kYXJrIC5oZWFkIC5icmVhZGNydW1icyBhOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG4gICAgICAudGhlbWUtZ3JheSAuaGVhZCAuYnJlYWRjcnVtYnMgPiBzcGFuOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIsIC50aGVtZS1ncmF5IC5oZWFkIC5icmVhZGNydW1icyBhOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLmhlYWQgLmJyZWFkY3J1bWJzID4gc3Bhbjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyLCAudGhlbWUtd2hpdGUgLmhlYWQgLmJyZWFkY3J1bWJzIGE6bm90KDpsYXN0LWNoaWxkKTphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cbiAgLmhlYWQgLmJhY2stYnRuIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgY29sb3I6ICM0ZGIxZmY7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuM3JlbTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGhlaWdodDogYXV0bzsgfVxuICAgIC5oZWFkIC5iYWNrLWJ0biAuaWNvbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuN3JlbTtcbiAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9iYWNrLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICAgIHdpZHRoOiAwLjlyZW07XG4gICAgICBoZWlnaHQ6IDAuOXJlbTsgfVxuICAgICAgLnRoZW1lLWRhcmsgLmhlYWQgLmJhY2stYnRuIC5pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuICAgICAgLnRoZW1lLWdyYXkgLmhlYWQgLmJhY2stYnRuIC5pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC5oZWFkIC5iYWNrLWJ0biAuaWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnNjcm9sbGVkLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTsgfVxuXG4uc2Nyb2xsZWQtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfVxuXG4uc2Nyb2xsZWQtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU2NTc2O1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6IDAuMjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTsgfVxuXG4uc2Nyb2xsZWQtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU2NTc2OyB9XG5cbnRhYmxlIHtcbiAgZm9udC1zaXplOiAxLjNyZW07XG4gIHdpZHRoOiAxMDAlOyB9XG4gIHRhYmxlIHRoZWFkIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyB9XG4gICAgLnRoZW1lLWRhcmsgdGFibGUgdGhlYWQge1xuICAgICAgY29sb3I6ICM1NTY1NzY7IH1cbiAgICAudGhlbWUtZ3JheSB0YWJsZSB0aGVhZCB7XG4gICAgICBjb2xvcjogIzU2NWM2MjsgfVxuICAgIC50aGVtZS13aGl0ZSB0YWJsZSB0aGVhZCB7XG4gICAgICBjb2xvcjogI2EwYTVhYjsgfVxuICAgIHRhYmxlIHRoZWFkIHRyIHtcbiAgICAgIGhlaWdodDogNHJlbTsgfVxuICAgICAgdGFibGUgdGhlYWQgdHIgdGgge1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOyB9XG4gICAgICAgIHRhYmxlIHRoZWFkIHRyIHRoOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDNyZW07IH1cbiAgICAgICAgdGFibGUgdGhlYWQgdHIgdGg6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogM3JlbTsgfVxuICB0YWJsZSB0Ym9keSB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDsgfVxuICAgIC50aGVtZS1kYXJrIHRhYmxlIHRib2R5IHtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLWdyYXkgdGFibGUgdGJvZHkge1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtd2hpdGUgdGFibGUgdGJvZHkge1xuICAgICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgICB0YWJsZSB0Ym9keSB0ciB7XG4gICAgICBoZWlnaHQ6IDMuNXJlbTsgfVxuICAgICAgLnRoZW1lLWRhcmsgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTgyMDJhOyB9XG4gICAgICAudGhlbWUtZ3JheSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyNTI5MmQ7IH1cbiAgICAgIC50aGVtZS13aGl0ZSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7IH1cbiAgICAgIHRhYmxlIHRib2R5IHRyIHRkIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuN3JlbTtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBtYXgtd2lkdGg6IDIwcmVtOyB9XG4gICAgICAgIHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDNyZW07IH1cbiAgICAgICAgdGFibGUgdGJvZHkgdHIgdGQ6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogM3JlbTsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1MaWdodC50dGYpO1xuICBmb250LXdlaWdodDogMzAwOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogT3BlblNhbnM7XG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLVJlZ3VsYXIudHRmKTtcbiAgZm9udC13ZWlnaHQ6IDQwMDsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1TZW1pQm9sZC50dGYpO1xuICBmb250LXdlaWdodDogNjAwOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogT3BlblNhbnM7XG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLUJvbGQudHRmKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1FeHRyYUJvbGQudHRmKTtcbiAgZm9udC13ZWlnaHQ6IDgwMDsgfVxuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEwcHg7IH1cblxuYm9keSB7XG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxLjZyZW07XG4gIHdpZHRoOiAxMDB2dztcbiAgaGVpZ2h0OiAxMDB2aDsgfVxuICBib2R5LnRoZW1lLWRhcmsge1xuICAgIGJhY2tncm91bmQ6ICMxMzE5MjEgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWRhcmsucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsgfVxuICBib2R5LnRoZW1lLWdyYXkge1xuICAgIGJhY2tncm91bmQ6ICMxMDE0MTcgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWdyYXkucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsgfVxuICBib2R5LnRoZW1lLXdoaXRlIHtcbiAgICBiYWNrZ3JvdW5kOiAjZWVlZWVlIHVybChcImFzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC13aGl0ZS5wbmdcIikgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOyB9XG4gIGJvZHkgYXBwLXJvb3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlOyB9XG5cbi51cGRhdGUtdG9vbHRpcCAudG9vbHRpcC1pbm5lciAuaWNvbiB7XG4gIG1hc2s6IHVybChhc3NldHMvaWNvbnMvdXBkYXRlLWFsZXJ0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjsgfVxuIiwiLm5nLXNlbGVjdC5uZy1zZWxlY3Qtb3BlbmVkPi5uZy1zZWxlY3QtY29udGFpbmVye2JhY2tncm91bmQ6I2ZmZjtib3JkZXItY29sb3I6I2IzYjNiMyAjY2NjICNkOWQ5ZDl9Lm5nLXNlbGVjdC5uZy1zZWxlY3Qtb3BlbmVkPi5uZy1zZWxlY3QtY29udGFpbmVyOmhvdmVye2JveC1zaGFkb3c6bm9uZX0ubmctc2VsZWN0Lm5nLXNlbGVjdC1vcGVuZWQ+Lm5nLXNlbGVjdC1jb250YWluZXIgLm5nLWFycm93e3RvcDotMnB4O2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjOTk5O2JvcmRlci13aWR0aDowIDVweCA1cHh9Lm5nLXNlbGVjdC5uZy1zZWxlY3Qtb3BlbmVkPi5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy1hcnJvdzpob3Zlcntib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzMzM30ubmctc2VsZWN0Lm5nLXNlbGVjdC1vcGVuZWQubmctc2VsZWN0LWJvdHRvbT4ubmctc2VsZWN0LWNvbnRhaW5lcntib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0ubmctc2VsZWN0Lm5nLXNlbGVjdC1vcGVuZWQubmctc2VsZWN0LXRvcD4ubmctc2VsZWN0LWNvbnRhaW5lcntib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0ubmctc2VsZWN0Lm5nLXNlbGVjdC1mb2N1c2VkOm5vdCgubmctc2VsZWN0LW9wZW5lZCk+Lm5nLXNlbGVjdC1jb250YWluZXJ7Ym9yZGVyLWNvbG9yOiMwMDdlZmY7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwwLjA3NSksMCAwIDAgM3B4IHJnYmEoMCwxMjYsMjU1LDAuMSl9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtZGlzYWJsZWQ+Lm5nLXNlbGVjdC1jb250YWluZXJ7YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5fS5uZy1zZWxlY3QgLm5nLWhhcy12YWx1ZSAubmctcGxhY2Vob2xkZXJ7ZGlzcGxheTpub25lfS5uZy1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQgI2NjYzttaW4taGVpZ2h0OjM2cHg7YWxpZ24taXRlbXM6Y2VudGVyfS5uZy1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXI6aG92ZXJ7Ym94LXNoYWRvdzowIDFweCAwIHJnYmEoMCwwLDAsMC4wNil9Lm5nLXNlbGVjdCAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVye2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nLWxlZnQ6MTBweH1bZGlyPVwicnRsXCJdIC5uZy1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lcntwYWRkaW5nLXJpZ2h0OjEwcHg7cGFkZGluZy1sZWZ0OjB9Lm5nLXNlbGVjdCAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy1wbGFjZWhvbGRlcntjb2xvcjojOTk5fS5uZy1zZWxlY3Qubmctc2VsZWN0LXNpbmdsZSAubmctc2VsZWN0LWNvbnRhaW5lcntoZWlnaHQ6MzZweH0ubmctc2VsZWN0Lm5nLXNlbGVjdC1zaW5nbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctaW5wdXR7dG9wOjVweDtsZWZ0OjA7cGFkZGluZy1sZWZ0OjEwcHg7cGFkZGluZy1yaWdodDo1MHB4fVtkaXI9XCJydGxcIl0gLm5nLXNlbGVjdC5uZy1zZWxlY3Qtc2luZ2xlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLWlucHV0e3BhZGRpbmctcmlnaHQ6MTBweDtwYWRkaW5nLWxlZnQ6NTBweH0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZS5uZy1zZWxlY3QtZGlzYWJsZWQ+Lm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWV7YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5O2JvcmRlcjoxcHggc29saWQgI2U2ZTZlNn0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZS5uZy1zZWxlY3QtZGlzYWJsZWQ+Lm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUgLm5nLXZhbHVlLWxhYmVse3BhZGRpbmc6MCA1cHh9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lcntwYWRkaW5nLXRvcDo1cHg7cGFkZGluZy1sZWZ0OjdweH1bZGlyPVwicnRsXCJdIC5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXJ7cGFkZGluZy1yaWdodDo3cHg7cGFkZGluZy1sZWZ0OjB9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWV7Zm9udC1zaXplOi45ZW07bWFyZ2luLWJvdHRvbTo1cHg7YmFja2dyb3VuZC1jb2xvcjojZWJmNWZmO2JvcmRlci1yYWRpdXM6MnB4O21hcmdpbi1yaWdodDo1cHh9W2Rpcj1cInJ0bFwiXSAubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy12YWx1ZXttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDo1cHh9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUubmctdmFsdWUtZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5fS5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVlLm5nLXZhbHVlLWRpc2FibGVkIC5uZy12YWx1ZS1sYWJlbHtwYWRkaW5nLWxlZnQ6NXB4fVtkaXI9XCJydGxcIl0gLm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUubmctdmFsdWUtZGlzYWJsZWQgLm5nLXZhbHVlLWxhYmVse3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6NXB4fS5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVlIC5uZy12YWx1ZS1sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjFweCA1cHh9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUgLm5nLXZhbHVlLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzoxcHggNXB4fS5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVlIC5uZy12YWx1ZS1pY29uOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2QxZThmZn0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy12YWx1ZSAubmctdmFsdWUtaWNvbi5sZWZ0e2JvcmRlci1yaWdodDoxcHggc29saWQgI2I4ZGJmZn1bZGlyPVwicnRsXCJdIC5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVlIC5uZy12YWx1ZS1pY29uLmxlZnR7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNiOGRiZmY7Ym9yZGVyLXJpZ2h0Om5vbmV9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUgLm5nLXZhbHVlLWljb24ucmlnaHR7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNiOGRiZmZ9W2Rpcj1cInJ0bFwiXSAubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy12YWx1ZSAubmctdmFsdWUtaWNvbi5yaWdodHtib3JkZXItbGVmdDowO2JvcmRlci1yaWdodDoxcHggc29saWQgI2I4ZGJmZn0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy1pbnB1dHtwYWRkaW5nOjAgMCAzcHggM3B4fVtkaXI9XCJydGxcIl0gLm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctaW5wdXR7cGFkZGluZzowIDNweCAzcHggMH0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy1wbGFjZWhvbGRlcnt0b3A6NXB4O3BhZGRpbmctYm90dG9tOjVweDtwYWRkaW5nLWxlZnQ6M3B4fVtkaXI9XCJydGxcIl0gLm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctcGxhY2Vob2xkZXJ7cGFkZGluZy1yaWdodDozcHg7cGFkZGluZy1sZWZ0OjB9Lm5nLXNlbGVjdCAubmctY2xlYXItd3JhcHBlcntjb2xvcjojOTk5fS5uZy1zZWxlY3QgLm5nLWNsZWFyLXdyYXBwZXI6aG92ZXIgLm5nLWNsZWFye2NvbG9yOiNEMDAyMUJ9Lm5nLXNlbGVjdCAubmctc3Bpbm5lci16b25le3BhZGRpbmc6NXB4IDVweCAwIDB9W2Rpcj1cInJ0bFwiXSAubmctc2VsZWN0IC5uZy1zcGlubmVyLXpvbmV7cGFkZGluZzo1cHggMCAwIDVweH0ubmctc2VsZWN0IC5uZy1hcnJvdy13cmFwcGVye3dpZHRoOjI1cHg7cGFkZGluZy1yaWdodDo1cHh9W2Rpcj1cInJ0bFwiXSAubmctc2VsZWN0IC5uZy1hcnJvdy13cmFwcGVye3BhZGRpbmctbGVmdDo1cHg7cGFkZGluZy1yaWdodDowfS5uZy1zZWxlY3QgLm5nLWFycm93LXdyYXBwZXI6aG92ZXIgLm5nLWFycm93e2JvcmRlci10b3AtY29sb3I6IzY2Nn0ubmctc2VsZWN0IC5uZy1hcnJvdy13cmFwcGVyIC5uZy1hcnJvd3tib3JkZXItY29sb3I6Izk5OSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjVweCA1cHggMi41cHh9Lm5nLWRyb3Bkb3duLXBhbmVse2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym94LXNoYWRvdzowIDFweCAwIHJnYmEoMCwwLDAsMC4wNik7bGVmdDowfS5uZy1kcm9wZG93bi1wYW5lbC5uZy1zZWxlY3QtYm90dG9te3RvcDoxMDAlO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjRweDtib3JkZXItdG9wLWNvbG9yOiNlNmU2ZTY7bWFyZ2luLXRvcDotMXB4fS5uZy1kcm9wZG93bi1wYW5lbC5uZy1zZWxlY3QtYm90dG9tIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4fS5uZy1kcm9wZG93bi1wYW5lbC5uZy1zZWxlY3QtdG9we2JvdHRvbToxMDAlO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjRweDtib3JkZXItYm90dG9tLWNvbG9yOiNlNmU2ZTY7bWFyZ2luLWJvdHRvbTotMXB4fS5uZy1kcm9wZG93bi1wYW5lbC5uZy1zZWxlY3QtdG9wIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uOmZpcnN0LWNoaWxke2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjRweH0ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLWhlYWRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCAjY2NjO3BhZGRpbmc6NXB4IDdweH0ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLWZvb3Rlcntib3JkZXItdG9wOjFweCBzb2xpZCAjY2NjO3BhZGRpbmc6NXB4IDdweH0ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRncm91cHt1c2VyLXNlbGVjdDpub25lO3BhZGRpbmc6OHB4IDEwcHg7Zm9udC13ZWlnaHQ6NTAwO2NvbG9yOnJnYmEoMCwwLDAsMC41NCk7Y3Vyc29yOnBvaW50ZXJ9Lm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0Z3JvdXAubmctb3B0aW9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGdyb3VwLm5nLW9wdGlvbi1tYXJrZWR7YmFja2dyb3VuZC1jb2xvcjojZjVmYWZmfS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGdyb3VwLm5nLW9wdGlvbi1zZWxlY3RlZCwubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRncm91cC5uZy1vcHRpb24tc2VsZWN0ZWQubmctb3B0aW9uLW1hcmtlZHtiYWNrZ3JvdW5kLWNvbG9yOiNlYmY1ZmY7Zm9udC13ZWlnaHQ6NjAwfS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6cmdiYSgwLDAsMCwwLjg3KTtwYWRkaW5nOjhweCAxMHB4fS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tc2VsZWN0ZWQsLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uLm5nLW9wdGlvbi1zZWxlY3RlZC5uZy1vcHRpb24tbWFya2Vke2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZWJmNWZmfS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tc2VsZWN0ZWQgLm5nLW9wdGlvbi1sYWJlbCwubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ubmctb3B0aW9uLXNlbGVjdGVkLm5nLW9wdGlvbi1tYXJrZWQgLm5nLW9wdGlvbi1sYWJlbHtmb250LXdlaWdodDo2MDB9Lm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uLm5nLW9wdGlvbi1tYXJrZWR7YmFja2dyb3VuZC1jb2xvcjojZjVmYWZmO2NvbG9yOiMzMzN9Lm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uLm5nLW9wdGlvbi1kaXNhYmxlZHtjb2xvcjojY2NjfS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tY2hpbGR7cGFkZGluZy1sZWZ0OjIycHh9W2Rpcj1cInJ0bFwiXSAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ubmctb3B0aW9uLWNoaWxke3BhZGRpbmctcmlnaHQ6MjJweDtwYWRkaW5nLWxlZnQ6MH0ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24gLm5nLXRhZy1sYWJlbHtmb250LXNpemU6ODAlO2ZvbnQtd2VpZ2h0OjQwMDtwYWRkaW5nLXJpZ2h0OjVweH1bZGlyPVwicnRsXCJdIC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbiAubmctdGFnLWxhYmVse3BhZGRpbmctbGVmdDo1cHg7cGFkZGluZy1yaWdodDowfVtkaXI9XCJydGxcIl0gLm5nLWRyb3Bkb3duLXBhbmVse2RpcmVjdGlvbjpydGw7dGV4dC1hbGlnbjpyaWdodH1cbiIsIi8vKiAqKioqKioqIHJlc2V0ICYgbm9ybWFsaXplICoqKioqKiogICovL1xyXG5cclxuLy8gYm94LXNpemluZyB0aGUgc2FtZSBmb3IgYWxsIGVsZW1lbnRzXHJcbmh0bWwge1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG4qLCAqOmJlZm9yZSwgKjphZnRlciB7XHJcbiAgYm94LXNpemluZzogaW5oZXJpdDtcclxuICAtd2Via2l0LWJveC1zaXppbmc6IGluaGVyaXQ7XHJcbiAgLW1vei1ib3gtc2l6aW5nOiBpbmhlcml0O1xyXG4gIG1hcmdpbjogMDtcclxuICBwYWRkaW5nOiAwO1xyXG4gIEBpbmNsdWRlIHVuU2VsZWN0O1xyXG59XHJcblxyXG5odG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXHJcbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcclxuYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxyXG5kZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXHJcbnNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXHJcbmIsIHUsIGksIGNlbnRlcixcclxuZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcclxuZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXHJcbnRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxyXG5hcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcclxuZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxyXG5tZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcclxudGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcclxuICAgIGJvcmRlcjogMDtcclxuICAgIGZvbnQtc2l6ZTogMTAwJTtcclxuICAgIGZvbnQ6IGluaGVyaXQ7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XHJcbn1cclxuYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSxcclxuZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWVudSwgbmF2LCBzZWN0aW9uIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG5ib2R5IHtcclxuICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxufVxyXG5vbCwgdWwge1xyXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcclxufVxyXG5ibG9ja3F1b3RlLCBxIHtcclxuICAgIHF1b3Rlczogbm9uZTtcclxufVxyXG5ibG9ja3F1b3RlOmJlZm9yZSwgYmxvY2txdW90ZTphZnRlcixcclxucTpiZWZvcmUsIHE6YWZ0ZXIge1xyXG4gICAgY29udGVudDogbm9uZTtcclxufVxyXG5cclxuLy90YWJsZVxyXG50YWJsZSB7XHJcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gICAgYm9yZGVyLXNwYWNpbmc6IDA7XHJcbn1cclxudGQsXHJcbnRoIHtcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcblxyXG4vL2Zvcm1zIGVsZW1lbnRcclxuaW5wdXQge1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgICY6LXdlYmtpdC1hdXRvZmlsbCB7XHJcbiAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMTAwMHB4IHdoaXRlIGluc2V0O1xyXG4gICAgfVxyXG59XHJcblxyXG5idXR0b24sXHJcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcclxuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxyXG5pbnB1dFt0eXBlPVwic3VibWl0XCJdIHtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgb3V0bGluZTogbm9uZTtcclxufVxyXG5idXR0b25bZGlzYWJsZWRdLFxyXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XHJcbiAgY3Vyc29yOiBkZWZhdWx0O1xyXG59XHJcbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcclxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xyXG4gIGJvcmRlcjogMDtcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcbmlucHV0IHtcclxuICBsaW5lLWhlaWdodDogbm9ybWFsO1xyXG59XHJcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xyXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xyXG59XHJcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXHJcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcclxufVxyXG5cclxuXHJcbi8vbGlua1xyXG5hIHtcclxuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcblx0JjphY3RpdmUsXHJcblx0Jjpob3ZlcixcclxuXHQmOmZvY3VzIHtcclxuXHRcdG91dGxpbmU6IDA7XHJcblx0fVxyXG59XHJcblxyXG5pIHsgZm9udC1zdHlsZTogaXRhbGljOyB9XHJcbmIsIHN0cm9uZyB7IGZvbnQtd2VpZ2h0OiA3MDA7ICAgfVxyXG5cclxuLy8gaW1hZ2VzXHJcbmltZyB7XHJcblx0d2lkdGg6IGF1dG87XHJcblx0bWF4LXdpZHRoOiAxMDAlO1xyXG5cdGhlaWdodDogYXV0bztcclxuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG5cdGJvcmRlcjogMDtcclxufVxyXG5cclxuLmhpZGRlbiB7XHJcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG59XHJcbiIsIi5hcHAtY29udGVudCB7XHJcblxyXG4gIC5wcmVsb2FkZXIge1xyXG5cclxuICAgIC5sb2FkaW5nLWJhciB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYnV0dG9uIHtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xyXG4gIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBwYWRkaW5nOiAwIDFyZW07XHJcbiAgaGVpZ2h0OiA0LjJyZW07XHJcblxyXG4gICY6ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGRpc2FibGVkQnV0dG9uQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChhbHRlcm5hdGl2ZVRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoZGlzYWJsZWRCdXR0b25Ib3ZlckNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICY6Zm9jdXMge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGRpc2FibGVkQnV0dG9uRm9jdXNDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYuYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZUJ1dHRvbkJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYWx0ZXJuYXRpdmVUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVCdXR0b25Ib3ZlckNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICY6Zm9jdXMge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVCdXR0b25Gb2N1c0NvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5ncmVlbi1idXR0b246bm90KDpkaXNhYmxlZCkge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoZ3JlZW5CdXR0b25CYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICBjb2xvcjogdGhlbWVkKGFsdGVybmF0aXZlVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChncmVlbkJ1dHRvbkhvdmVyQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjpmb2N1cyB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoZ3JlZW5CdXR0b25Gb2N1c0NvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi50dXJxdW9pc2UtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHR1cnF1b2lzZUJ1dHRvbkJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYWx0ZXJuYXRpdmVUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHR1cnF1b2lzZUJ1dHRvbkhvdmVyQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjpmb2N1cyB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodHVycXVvaXNlQnV0dG9uRm9jdXNDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYudHJhbnNwYXJlbnQtYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXI6IDAuMnJlbSBzb2xpZCB0aGVtZWQodHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLmljb24ge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XHJcbiAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9jb21wbGV0ZS10ZXN0d2FsbGV0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgd2lkdGg6IDEuN3JlbTtcclxuICAgICAgaGVpZ2h0OiAxLjdyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLmlucHV0LWJsb2NrIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcbiAgbWFyZ2luLWJvdHRvbTogMC40cmVtO1xyXG5cclxuICAud3JhcC1sYWJlbCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgIG1pbi1oZWlnaHQ6IDIuNHJlbTtcclxuICB9XHJcblxyXG4gIGxhYmVsIHtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuNHJlbTtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnB1dFt0eXBlPSd0ZXh0J10sIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sIHNlbGVjdCB7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBmb250LXNpemU6IDEuNHJlbTtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICBwYWRkaW5nOiAwIDFyZW07XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogNC4ycmVtO1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoaW5wdXRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi50ZXh0YXJlYSB7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcblxyXG4gICAgdGV4dGFyZWEge1xyXG4gICAgICBmb250LWZhbWlseTogT3BlblNhbnMsIHNhbnMtc2VyaWY7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgZm9udC1zaXplOiAxLjRyZW07XHJcbiAgICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICAgIHBhZGRpbmc6IDFyZW07XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBtaW4td2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgbWluLWhlaWdodDogNy41cmVtO1xyXG4gICAgICBtYXgtaGVpZ2h0OiA3LjVyZW07XHJcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgICByZXNpemU6IG5vbmU7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoaW5wdXRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5lcnJvci1ibG9jayB7XHJcbiAgICBmb250LXNpemU6IDFyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS40cmVtO1xyXG4gICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XHJcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChyZWRUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmVycm9yLXRleHQge1xyXG4gIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgY29sb3I6IHRoZW1lZChyZWRUZXh0Q29sb3IpO1xyXG4gIH1cclxufVxyXG5cclxuaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbyB7XHJcblxyXG4gICYgKyBsYWJlbCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDIuNHJlbTtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgdW5TZWxlY3Q7XHJcbiAgfVxyXG5cclxuICAmOm5vdChjaGVja2VkKSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG5cclxuICAgICYgKyBsYWJlbCB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIH1cclxuXHJcbiAgICAmICsgbGFiZWw6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogJyc7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAwLjdyZW07XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgIHdpZHRoOiAxLjRyZW07XHJcbiAgICAgIGhlaWdodDogMS40cmVtO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyOiAwLjFyZW0gc29saWQgdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJiArIGxhYmVsOmFmdGVyIHtcclxuICAgICAgY29udGVudDogJyc7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAxcmVtO1xyXG4gICAgICBsZWZ0OiAwLjNyZW07XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgd2lkdGg6IDAuOHJlbTtcclxuICAgICAgaGVpZ2h0OiAwLjhyZW07XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICY6Y2hlY2tlZCB7XHJcblxyXG4gICAgJiArIGxhYmVsOmFmdGVyIHtcclxuICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3gge1xyXG5cclxuICAmICsgbGFiZWwge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgcGFkZGluZy1sZWZ0OiAzLjZyZW07XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIHVuU2VsZWN0O1xyXG4gIH1cclxuXHJcbiAgJjpub3QoY2hlY2tlZCkge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICBsZWZ0OiAxLjZyZW07XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcblxyXG4gICAgJiArIGxhYmVsIHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgfVxyXG5cclxuICAgICYgKyBsYWJlbDpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiAnJztcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgbGVmdDogMS42cmVtO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICB3aWR0aDogMS40cmVtO1xyXG4gICAgICBoZWlnaHQ6IDEuNHJlbTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlcjogMC4xcmVtIHNvbGlkIHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjpjaGVja2VkIHtcclxuXHJcbiAgICAmICsgbGFiZWw6YmVmb3JlIHtcclxuICAgICAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2NvbXBsZXRlLXRlc3R3YWxsZXQuc3ZnKTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnN3aXRjaCB7XHJcblxyXG4gIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHN3aXRjaEJhY2tncm91bmRDb2xvcik7XHJcbiAgfVxyXG5cclxuICAuY2lyY2xlIHtcclxuXHJcbiAgICAmLm9uIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYub2ZmIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi50YWJsZS10b29sdGlwIHtcclxuICBwYWRkaW5nOiAxcmVtIDJyZW07XHJcblxyXG4gIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgYmFja2dyb3VuZDogdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgYm94LXNoYWRvdzogdGhlbWVkKHRvb2x0aXBTaGFkb3cpO1xyXG4gICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICB9XHJcblxyXG4gIC50b29sdGlwLWlubmVyIHtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuOHJlbTtcclxuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC10b3Age1xyXG4gICAgbWFyZ2luLXRvcDogLTFyZW07XHJcblxyXG4gICAgJjphZnRlciB7XHJcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgYm90dG9tOiAtMXJlbTtcclxuICAgICAgbGVmdDogY2FsYyg1MCUgLSAwLjVyZW0pO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcclxuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtdG9wLWxlZnQge1xyXG4gICAgbWFyZ2luLXRvcDogLTFyZW07XHJcblxyXG4gICAgJjphZnRlciB7XHJcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgYm90dG9tOiAtMXJlbTtcclxuICAgICAgbGVmdDogMC43cmVtO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcclxuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXRvcC1yaWdodCB7XHJcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTtcclxuXHJcbiAgICAmOmFmdGVyIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IC0xcmVtO1xyXG4gICAgICByaWdodDogMC43cmVtO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcclxuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLWJvdHRvbSB7XHJcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IC0xcmVtO1xyXG4gICAgICBsZWZ0OiBjYWxjKDUwJSAtIDAuNXJlbSk7XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1ib3R0b20tbGVmdCB7XHJcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IC0xcmVtO1xyXG4gICAgICBsZWZ0OiAwLjdyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0IHtcclxuICAgIG1hcmdpbi10b3A6IDFyZW07XHJcblxyXG4gICAgJjpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogLTFyZW07XHJcbiAgICAgIHJpZ2h0OiAwLjdyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRyYW5zcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtbGVmdCB7XHJcbiAgICBtYXJnaW4tbGVmdDogLTFyZW07XHJcblxyXG4gICAgJjphZnRlciB7XHJcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiBjYWxjKDUwJSAtIDAuNXJlbSk7XHJcbiAgICAgIHJpZ2h0OiAtMXJlbTtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXJpZ2h0IHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IGNhbGMoNTAlIC0gMC41cmVtKTtcclxuICAgICAgbGVmdDogLTFyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi50YWJsZS10b29sdGlwLWRpbWVuc2lvbnMge1xyXG5cclxuICAudG9vbHRpcC1pbm5lciB7XHJcbiAgICBvdmVyZmxvdzogYXV0bztcclxuICAgIG1heC13aWR0aDogMjByZW07XHJcbiAgICBtYXgtaGVpZ2h0OiAxMHJlbTtcclxuICB9XHJcbn1cclxuXHJcbi5iYWxhbmNlLXRvb2x0aXAge1xyXG4gIHBhZGRpbmc6IDEuM3JlbTtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBiYWNrZ3JvdW5kOiB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcik7XHJcbiAgICBib3gtc2hhZG93OiB0aGVtZWQodG9vbHRpcFNoYWRvdyk7XHJcbiAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLnRvb2x0aXAtaW5uZXIge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuXHJcbiAgICAuYXZhaWxhYmxlIHtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMS43cmVtO1xyXG5cclxuICAgICAgYiB7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5sb2NrZWQge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwLjdyZW07XHJcblxyXG4gICAgICBiIHtcclxuICAgICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmxpbmsge1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtdG9wIHtcclxuICAgIG1hcmdpbi10b3A6IC0xcmVtO1xyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLWJvdHRvbSB7XHJcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLWxlZnQge1xyXG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtO1xyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXJpZ2h0IHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmFjY291bnQtdG9vbHRpcCB7XHJcblxyXG4gIC50b29sdGlwLWlubmVyIHtcclxuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XHJcbiAgICBtYXgtd2lkdGg6IDE4cmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmNvbW1lbnQtdG9vbHRpcCB7XHJcblxyXG4gIC50b29sdGlwLWlubmVyIHtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgd29yZC1icmVhazogYnJlYWstd29yZDtcclxuICAgIG1heC13aWR0aDogNTByZW07XHJcbiAgICBtYXgtaGVpZ2h0OiAyNXJlbTtcclxuICB9XHJcbn1cclxuXHJcbi51cGRhdGUtdG9vbHRpcCB7XHJcbiAgcGFkZGluZzogMS41cmVtO1xyXG5cclxuICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgIGJhY2tncm91bmQ6IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKTtcclxuICAgIGJveC1zaGFkb3c6IHRoZW1lZCh0b29sdGlwU2hhZG93KTtcclxuICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgfVxyXG5cclxuICAmLmltcG9ydGFudCB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1lZCh0b29sdGlwSW1wb3J0YW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChhY2NvdW50TWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgJi5uZy10b29sdGlwLWxlZnQtYm90dG9tIHtcclxuXHJcbiAgICAgICY6YWZ0ZXIge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdGhlbWVkKHRvb2x0aXBJbXBvcnRhbnRCYWNrZ3JvdW5kQ29sb3IpIHRoZW1lZCh0b29sdGlwSW1wb3J0YW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLm5nLXRvb2x0aXAtcmlnaHQtYm90dG9tIHtcclxuXHJcbiAgICAgICY6YmVmb3JlIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRoZW1lZCh0b29sdGlwSW1wb3J0YW50QmFja2dyb3VuZENvbG9yKSB0aGVtZWQodG9vbHRpcEltcG9ydGFudEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmNyaXRpY2FsIHtcclxuICAgIHBhZGRpbmc6IDIuNXJlbTtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZDogdGhlbWVkKHRvb2x0aXBDcml0aWNhbEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYWNjb3VudE1haW5UZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC50b29sdGlwLWlubmVyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAmLm5nLXRvb2x0aXAtbGVmdC1ib3R0b20ge1xyXG5cclxuICAgICAgJjphZnRlciB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcENyaXRpY2FsQmFja2dyb3VuZENvbG9yKSB0aGVtZWQodG9vbHRpcENyaXRpY2FsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLm5nLXRvb2x0aXAtcmlnaHQtYm90dG9tIHtcclxuXHJcbiAgICAgICY6YmVmb3JlIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRoZW1lZCh0b29sdGlwQ3JpdGljYWxCYWNrZ3JvdW5kQ29sb3IpIHRoZW1lZCh0b29sdGlwQ3JpdGljYWxCYWNrZ3JvdW5kQ29sb3IpIHRyYW5zcGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnRvb2x0aXAtaW5uZXIge1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS44cmVtO1xyXG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xyXG5cclxuICAgIC5zdGFuZGFyZC11cGRhdGUge1xyXG4gICAgICBmb250LXNpemU6IDEuNXJlbTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDIuN3JlbTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuaW1wb3J0YW50LXVwZGF0ZSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gICAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZCh0b29sdGlwSW1wb3J0YW50VGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5jcml0aWNhbC11cGRhdGUge1xyXG4gICAgICBmb250LXNpemU6IDEuNXJlbTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDIuN3JlbTtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgfVxyXG5cclxuICAgIC53cm9uZy10aW1lIHtcclxuICAgICAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjdyZW07XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKHRvb2x0aXBJbXBvcnRhbnRUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBtYXJnaW46IDEuNXJlbSAwO1xyXG4gICAgICB3aWR0aDogNXJlbTtcclxuICAgICAgaGVpZ2h0OiA1cmVtO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHRvb2x0aXBDcml0aWNhbFRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1sZWZ0LWJvdHRvbSB7XHJcbiAgICBtYXJnaW4tbGVmdDogLTEuNXJlbTtcclxuXHJcbiAgICAmOmFmdGVyIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IDAuNnJlbTtcclxuICAgICAgcmlnaHQ6IC0xcmVtO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcclxuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXJpZ2h0LWJvdHRvbSB7XHJcbiAgICBtYXJnaW4tbGVmdDogMS41cmVtO1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IDAuNnJlbTtcclxuICAgICAgbGVmdDogLTFyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRyYW5zcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ubmd4LWNvbnRleHRtZW51IHtcclxuXHJcbiAgLmRyb3Bkb3duLW1lbnUge1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgcGFkZGluZzogMDtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGNoYXJ0T3B0aW9uc0JhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGJveC1zaGFkb3c6IHRoZW1lZCh0b29sdGlwU2hhZG93KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxpIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIH1cclxuXHJcbiAgYSB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBhZGRpbmc6IDAuNWVtIDFlbTtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjaGFydE9wdGlvbnNIb3ZlckNvbG9yKTtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ubmctc2VsZWN0IHtcclxuXHJcbiAgJi5jdXN0b20tc2VsZWN0IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgIC5uZy1zZWxlY3QtY29udGFpbmVyIHtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gICAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgICBwYWRkaW5nOiAwIDFyZW07XHJcbiAgICAgIGhlaWdodDogNC4ycmVtO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGlucHV0QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAubmctdmFsdWUtY29udGFpbmVyIHtcclxuICAgICAgICBwYWRkaW5nOiAwO1xyXG5cclxuICAgICAgICAubmctaW5wdXQge1xyXG4gICAgICAgICAgdG9wOiBhdXRvO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5uZy1kcm9wZG93bi1wYW5lbCB7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChpbnB1dEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyB7XHJcblxyXG4gICAgICAgIC5uZy1vcHRpb24ge1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XHJcbiAgICAgICAgICBwYWRkaW5nOiAxcmVtO1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoaW5wdXRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICYubmctb3B0aW9uLW1hcmtlZCB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoc2VsZWN0SG92ZXJDb2xvcik7XHJcbiAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICYubmctb3B0aW9uLXNlbGVjdGVkIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChzZWxlY3RTZWxlY3RlZENvbG9yKTtcclxuICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcclxuICAgICAgICAgIHdpZHRoOiAxcmVtO1xyXG4gICAgICAgICAgaGVpZ2h0OiAxcmVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xyXG4gICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU2NTc2O1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcclxuICAgICAgICAgIGJvcmRlcjogMC4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtbW9kYWwtY29udGFpbmVyIHtcclxuXHJcbiAgLm1vZGFsIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZDogdGhlbWVkKG1vZGFsQmFja2dyb3VuZCk7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLmNvbnRlbnQge1xyXG5cclxuICAgICAgLmljb24uZXJyb3Ige1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChyZWRUZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmljb24uc3VjY2VzcyB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGdyZWVuVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5pY29uLmluZm8ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuYWN0aW9uLWJ1dHRvbiB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZChhbHRlcm5hdGl2ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuY2xvc2UtYnV0dG9uIHtcclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoY2xvc2VCdXR0b25Db2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtdHJhbnNhY3Rpb24tZGV0YWlscyB7XHJcblxyXG4gIC50YWJsZSB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJvcmRlci10b3A6IDAuMnJlbSBzb2xpZCB0aGVtZWQodHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLnJvdyB7XHJcblxyXG4gICAgICAuY2VsbCB7XHJcblxyXG4gICAgICAgICYubGFiZWwge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYudmFsdWUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5rZXktdmFsdWUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXByb2dyZXNzLWNvbnRhaW5lciB7XHJcblxyXG4gIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAucHJvZ3Jlc3MtYmFyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5wcm9ncmVzcy1iYXItZnVsbCB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtb3Blbi13YWxsZXQtbW9kYWwge1xyXG5cclxuICAubW9kYWwge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtZWQobW9kYWxCYWNrZ3JvdW5kKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiJHRoZW1lczogKFxyXG4gIGRhcms6IChcclxuICAgIGJvZHlCYWNrZ3JvdW5kQ29sb3I6ICMxMzE5MjEsXHJcbiAgICBzaWRlYmFyQmFja2dyb3VuZENvbG9yOiByZ2JhKDIzLCAzMSwgMzksIDEpLFxyXG4gICAgc2lkZWJhckJvcmRlckNvbG9yOiAjMWYyODMzLFxyXG4gICAgb25saW5lQ29sb3I6ICM1Y2RhOWQsXHJcbiAgICBvZmZsaW5lQ29sb3I6ICNmZjUyNTIsXHJcbiAgICBjb250ZW50QmFja2dyb3VuZENvbG9yOiByZ2JhKDQzLCA1NCwgNjgsIDAuNSksXHJcbiAgICBtYWluVGV4dENvbG9yOiAjZTBlMGUwLFxyXG4gICAgYWx0ZXJuYXRpdmVUZXh0Q29sb3I6ICMxMTE5MjEsXHJcbiAgICBvcHRpb25hbFRleHRDb2xvcjogIzU1NjU3NixcclxuICAgIGJsdWVUZXh0Q29sb3I6ICM0ZGIxZmYsXHJcbiAgICBncmVlblRleHRDb2xvcjogIzVjZGE5ZCxcclxuICAgIG9yYW5nZVRleHRDb2xvcjogI2ZmNmYwMCxcclxuICAgIHJlZFRleHRDb2xvcjogI2ZmNTI1MixcclxuICAgIGJsdWVCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICM0ZGIxZmYsXHJcbiAgICBibHVlQnV0dG9uSG92ZXJDb2xvcjogIzgyZDdmZixcclxuICAgIGJsdWVCdXR0b25Gb2N1c0NvbG9yOiAjNTliNWZkLFxyXG4gICAgZGlzYWJsZWRCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICM5Y2FkYjcsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkhvdmVyQ29sb3I6ICNiN2QxZTAsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkZvY3VzQ29sb3I6ICNhN2I5YzIsXHJcbiAgICBncmVlbkJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzVjZGE5ZCxcclxuICAgIGdyZWVuQnV0dG9uSG92ZXJDb2xvcjogIzhkZmNjNixcclxuICAgIGdyZWVuQnV0dG9uRm9jdXNDb2xvcjogIzYyZTBiMixcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzRkZDBlMSxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkhvdmVyQ29sb3I6ICM4N2Y0ZjUsXHJcbiAgICB0dXJxdW9pc2VCdXR0b25Gb2N1c0NvbG9yOiAjNDJkNWU4LFxyXG4gICAgdHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcjogIzJiMzY0NCxcclxuICAgIGlucHV0QmFja2dyb3VuZENvbG9yOiAjMTcxZTI3LFxyXG4gICAgc2VsZWN0SG92ZXJDb2xvcjogcmdiYSg1OCwgNjksIDg1LCAwLjUpLFxyXG4gICAgc2VsZWN0U2VsZWN0ZWRDb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpLFxyXG4gICAgc3dpdGNoQmFja2dyb3VuZENvbG9yOiAjMDAwMDAwLFxyXG4gICAgYWNjb3VudEJhY2tncm91bmRDb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpLFxyXG4gICAgYWNjb3VudEhvdmVyQmFja2dyb3VuZENvbG9yOiByZ2JhKDU4LCA2OSwgODUsIDAuNSksXHJcbiAgICBhY2NvdW50TWFpblRleHRDb2xvcjogI2UwZTBlMCxcclxuICAgIGFjY291bnRPcHRpb25hbFRleHRDb2xvcjogIzU1NjU3NixcclxuICAgIGFjY291bnRJbmRpY2F0b3JUZXh0Q29sb3I6ICMxMTE5MjEsXHJcbiAgICBhY2NvdW50U3dpdGNoQmFja2dyb3VuZENvbG9yOiAjMDAwMDAwLFxyXG4gICAgYWNjb3VudEluZGljYXRvckJhY2tncm91bmRDb2xvcjogIzRkYjFmZixcclxuICAgIHRhYkluYWN0aXZlQmFja2dyb3VuZENvbG9yOiByZ2JhKDIzLCAzMSwgMzksIDAuNSksXHJcbiAgICB0YWJIb3ZlckJhY2tncm91bmRDb2xvcjogcmdiYSg1OCwgNjksIDg1LCAwLjUpLFxyXG4gICAgdGFibGVCYWNrZ3JvdW5kQ29sb3I6ICMxODIwMmEsXHJcbiAgICBtZXNzYWdlTXlCYWNrZ3JvdW5kQ29sb3I6ICMyYTM1NDQsXHJcbiAgICBtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3I6ICMxODIwMmEsXHJcbiAgICBwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcjogIzM0M2Y0YSxcclxuICAgIHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcjogIzVjZGE5ZCxcclxuICAgIGNoYXJ0T3B0aW9uc0JhY2tncm91bmRDb2xvcjogIzJiMzY0NCxcclxuICAgIGNoYXJ0T3B0aW9uc0hvdmVyQ29sb3I6ICM1NTY1NzYsXHJcbiAgICB0b29sdGlwQmFja2dyb3VuZENvbG9yOiAjNDI1MDVmLFxyXG4gICAgdG9vbHRpcEltcG9ydGFudFRleHRDb2xvcjogI2ZmNmYwMCxcclxuICAgIHRvb2x0aXBJbXBvcnRhbnRCYWNrZ3JvdW5kQ29sb3I6ICM1ZjJiMTEsXHJcbiAgICB0b29sdGlwQ3JpdGljYWxUZXh0Q29sb3I6ICNmZjUyNTIsXHJcbiAgICB0b29sdGlwQ3JpdGljYWxCYWNrZ3JvdW5kQ29sb3I6ICM1ZjFkMWQsXHJcbiAgICB0b29sdGlwU2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSksXHJcbiAgICBtb2RhbEJhY2tncm91bmQ6IHVybCh+c3JjL2Fzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC1kYXJrLnBuZyksXHJcbiAgICBjbG9zZUJ1dHRvbkNvbG9yOiAjNTU2NTc2XHJcbiAgKSxcclxuICBncmF5OiAoXHJcbiAgICBib2R5QmFja2dyb3VuZENvbG9yOiAjMTAxNDE3LFxyXG4gICAgc2lkZWJhckJhY2tncm91bmRDb2xvcjogcmdiYSgyOCwgMzAsIDMzLCAxKSxcclxuICAgIHNpZGViYXJCb3JkZXJDb2xvcjogIzJlMzMzNyxcclxuICAgIG9ubGluZUNvbG9yOiAjNDdjZjhkLFxyXG4gICAgb2ZmbGluZUNvbG9yOiAjZmY1MjUyLFxyXG4gICAgY29udGVudEJhY2tncm91bmRDb2xvcjogcmdiYSgzNywgNDAsIDQzLCAwLjUpLFxyXG4gICAgbWFpblRleHRDb2xvcjogI2UwZTBlMCxcclxuICAgIGFsdGVybmF0aXZlVGV4dENvbG9yOiAjMWExYTFhLFxyXG4gICAgb3B0aW9uYWxUZXh0Q29sb3I6ICM1NjVjNjIsXHJcbiAgICBibHVlVGV4dENvbG9yOiAjNDJhNWY1LFxyXG4gICAgZ3JlZW5UZXh0Q29sb3I6ICM0N2NmOGQsXHJcbiAgICBvcmFuZ2VUZXh0Q29sb3I6ICNmZjZmMDAsXHJcbiAgICByZWRUZXh0Q29sb3I6ICNmZjUyNTIsXHJcbiAgICBibHVlQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjNDJhNWY1LFxyXG4gICAgYmx1ZUJ1dHRvbkhvdmVyQ29sb3I6ICM4NmQ2ZmYsXHJcbiAgICBibHVlQnV0dG9uRm9jdXNDb2xvcjogIzVmYjZmYyxcclxuICAgIGRpc2FibGVkQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjNzk4NDhmLFxyXG4gICAgZGlzYWJsZWRCdXR0b25Ib3ZlckNvbG9yOiAjYTFhZWJiLFxyXG4gICAgZGlzYWJsZWRCdXR0b25Gb2N1c0NvbG9yOiAjOGE5NTlmLFxyXG4gICAgZ3JlZW5CdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICM0N2NmOGQsXHJcbiAgICBncmVlbkJ1dHRvbkhvdmVyQ29sb3I6ICM3YmY2YzYsXHJcbiAgICBncmVlbkJ1dHRvbkZvY3VzQ29sb3I6ICM1Y2RjOWUsXHJcbiAgICB0dXJxdW9pc2VCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICMzZWM1ZDcsXHJcbiAgICB0dXJxdW9pc2VCdXR0b25Ib3ZlckNvbG9yOiAjNzJlZGZlLFxyXG4gICAgdHVycXVvaXNlQnV0dG9uRm9jdXNDb2xvcjogIzUwZDBlMSxcclxuICAgIHRyYW5zcGFyZW50QnV0dG9uQm9yZGVyQ29sb3I6ICMyZjM0MzgsXHJcbiAgICBpbnB1dEJhY2tncm91bmRDb2xvcjogIzI5MmQzMSxcclxuICAgIHNlbGVjdEhvdmVyQ29sb3I6IHJnYmEoNTgsIDYyLCA2NiwgMC41KSxcclxuICAgIHNlbGVjdFNlbGVjdGVkQ29sb3I6IHJnYmEoMzcsIDQwLCA0MywgMC41KSxcclxuICAgIHN3aXRjaEJhY2tncm91bmRDb2xvcjogIzAwMDAwMCxcclxuICAgIGFjY291bnRCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMzcsIDQwLCA0MywgMC41KSxcclxuICAgIGFjY291bnRIb3ZlckJhY2tncm91bmRDb2xvcjogcmdiYSg1OCwgNjIsIDY2LCAwLjUpLFxyXG4gICAgYWNjb3VudE1haW5UZXh0Q29sb3I6ICNlMGUwZTAsXHJcbiAgICBhY2NvdW50T3B0aW9uYWxUZXh0Q29sb3I6ICM1NjVjNjIsXHJcbiAgICBhY2NvdW50SW5kaWNhdG9yVGV4dENvbG9yOiAjMWExYTFhLFxyXG4gICAgYWNjb3VudFN3aXRjaEJhY2tncm91bmRDb2xvcjogIzAwMDAwMCxcclxuICAgIGFjY291bnRJbmRpY2F0b3JCYWNrZ3JvdW5kQ29sb3I6ICM0MmE1ZjUsXHJcbiAgICB0YWJJbmFjdGl2ZUJhY2tncm91bmRDb2xvcjogcmdiYSgyOCwgMzAsIDMzLCAwLjUpLFxyXG4gICAgdGFiSG92ZXJCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoNTgsIDYyLCA2NiwgMC41KSxcclxuICAgIHRhYmxlQmFja2dyb3VuZENvbG9yOiAjMjUyOTJkLFxyXG4gICAgbWVzc2FnZU15QmFja2dyb3VuZENvbG9yOiAjMzAzNjNjLFxyXG4gICAgbWVzc2FnZUJ1ZGR5QmFja2dyb3VuZENvbG9yOiAjMjUyOTJkLFxyXG4gICAgcHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3I6ICMzNjNhM2UsXHJcbiAgICBwcm9ncmVzc0JhckZ1bGxCYWNrZ3JvdW5kQ29sb3I6ICM0N2NmOGQsXHJcbiAgICBjaGFydE9wdGlvbnNCYWNrZ3JvdW5kQ29sb3I6ICMyOTJkMzEsXHJcbiAgICBjaGFydE9wdGlvbnNIb3ZlckNvbG9yOiAjNTE1OTYwLFxyXG4gICAgdG9vbHRpcEJhY2tncm91bmRDb2xvcjogIzNlNDY0YyxcclxuICAgIHRvb2x0aXBJbXBvcnRhbnRUZXh0Q29sb3I6ICNmZjZmMDAsXHJcbiAgICB0b29sdGlwSW1wb3J0YW50QmFja2dyb3VuZENvbG9yOiAjNTUyNDBkLFxyXG4gICAgdG9vbHRpcENyaXRpY2FsVGV4dENvbG9yOiAjZmY1MjUyLFxyXG4gICAgdG9vbHRpcENyaXRpY2FsQmFja2dyb3VuZENvbG9yOiAjNGMxOTE5LFxyXG4gICAgdG9vbHRpcFNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpLFxyXG4gICAgbW9kYWxCYWNrZ3JvdW5kOiB1cmwofnNyYy9hc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtZ3JheS5wbmcpLFxyXG4gICAgY2xvc2VCdXR0b25Db2xvcjogIzUxNTk2MFxyXG4gICksXHJcbiAgd2hpdGU6IChcclxuICAgIGJvZHlCYWNrZ3JvdW5kQ29sb3I6ICNlZWVlZWUsXHJcbiAgICBzaWRlYmFyQmFja2dyb3VuZENvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpLFxyXG4gICAgc2lkZWJhckJvcmRlckNvbG9yOiAjZWJlYmViLFxyXG4gICAgb25saW5lQ29sb3I6ICM0NmMxNzIsXHJcbiAgICBvZmZsaW5lQ29sb3I6ICNmZjUyNTIsXHJcbiAgICBjb250ZW50QmFja2dyb3VuZENvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSksXHJcbiAgICBtYWluVGV4dENvbG9yOiAjNDM0NTRiLFxyXG4gICAgYWx0ZXJuYXRpdmVUZXh0Q29sb3I6ICNmZWZlZmUsXHJcbiAgICBvcHRpb25hbFRleHRDb2xvcjogI2EwYTVhYixcclxuICAgIGJsdWVUZXh0Q29sb3I6ICMyYzk1ZjEsXHJcbiAgICBncmVlblRleHRDb2xvcjogIzQ2YzE3MixcclxuICAgIG9yYW5nZVRleHRDb2xvcjogI2ZmNmYwMCxcclxuICAgIHJlZFRleHRDb2xvcjogI2ZmNTI1MixcclxuICAgIGJsdWVCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICMyYzk1ZjEsXHJcbiAgICBibHVlQnV0dG9uSG92ZXJDb2xvcjogIzVjYjNmZixcclxuICAgIGJsdWVCdXR0b25Gb2N1c0NvbG9yOiAjMzc5ZmZhLFxyXG4gICAgZGlzYWJsZWRCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICM5MGE0YWUsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkhvdmVyQ29sb3I6ICNhZWJlYzYsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkZvY3VzQ29sb3I6ICNhN2I5YzIsXHJcbiAgICBncmVlbkJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzQ2YzE3MixcclxuICAgIGdyZWVuQnV0dG9uSG92ZXJDb2xvcjogIzVhZDU4NixcclxuICAgIGdyZWVuQnV0dG9uRm9jdXNDb2xvcjogIzUzYzc3YyxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzI2YjZjNyxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkhvdmVyQ29sb3I6ICM1MmNiZDksXHJcbiAgICB0dXJxdW9pc2VCdXR0b25Gb2N1c0NvbG9yOiAjMzFiZWNmLFxyXG4gICAgdHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcjogI2ViZWJlYixcclxuICAgIGlucHV0QmFja2dyb3VuZENvbG9yOiAjZTZlNmU2LFxyXG4gICAgc2VsZWN0SG92ZXJDb2xvcjogcmdiYSgyNDAsIDI0MCwgMjQwLCAwLjUpLFxyXG4gICAgc2VsZWN0U2VsZWN0ZWRDb2xvcjogcmdiYSgyMjQsIDIyNCwgMjI0LCAwLjUpLFxyXG4gICAgc3dpdGNoQmFja2dyb3VuZENvbG9yOiAjZTBlMGUwLFxyXG4gICAgYWNjb3VudEJhY2tncm91bmRDb2xvcjogcmdiYSgzMCwgMTM2LCAyMjksIDEpLFxyXG4gICAgYWNjb3VudEhvdmVyQmFja2dyb3VuZENvbG9yOiByZ2JhKDI0MCwgMjQwLCAyNDAsIDAuNSksXHJcbiAgICBhY2NvdW50TWFpblRleHRDb2xvcjogI2ZmZmZmZixcclxuICAgIGFjY291bnRPcHRpb25hbFRleHRDb2xvcjogIzkxYmFmMSxcclxuICAgIGFjY291bnRJbmRpY2F0b3JUZXh0Q29sb3I6ICM0MzQ1NGIsXHJcbiAgICBhY2NvdW50U3dpdGNoQmFja2dyb3VuZENvbG9yOiAjZmZmZmZmLFxyXG4gICAgYWNjb3VudEluZGljYXRvckJhY2tncm91bmRDb2xvcjogI2ZmZmZmZixcclxuICAgIHRhYkluYWN0aXZlQmFja2dyb3VuZENvbG9yOiByZ2JhKDIyNCwgMjI0LCAyMjQsIDAuNSksXHJcbiAgICB0YWJIb3ZlckJhY2tncm91bmRDb2xvcjogI2ZmZmZmZixcclxuICAgIHRhYmxlQmFja2dyb3VuZENvbG9yOiAjZmZmZmZmLFxyXG4gICAgbWVzc2FnZU15QmFja2dyb3VuZENvbG9yOiAjZmZmLFxyXG4gICAgbWVzc2FnZUJ1ZGR5QmFja2dyb3VuZENvbG9yOiAjZWRlZGVkLFxyXG4gICAgcHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3I6ICNkY2RjZGMsXHJcbiAgICBwcm9ncmVzc0JhckZ1bGxCYWNrZ3JvdW5kQ29sb3I6ICM0NmMxNzIsXHJcbiAgICBjaGFydE9wdGlvbnNCYWNrZ3JvdW5kQ29sb3I6ICNlMGUwZTAsXHJcbiAgICBjaGFydE9wdGlvbnNIb3ZlckNvbG9yOiAjZmZmZmZmLFxyXG4gICAgdG9vbHRpcEJhY2tncm91bmRDb2xvcjogI2ZmZmZmZixcclxuICAgIHRvb2x0aXBJbXBvcnRhbnRUZXh0Q29sb3I6ICNmZmZmZmYsXHJcbiAgICB0b29sdGlwSW1wb3J0YW50QmFja2dyb3VuZENvbG9yOiAjZWY2YzAwLFxyXG4gICAgdG9vbHRpcENyaXRpY2FsVGV4dENvbG9yOiAjZmZmZmZmLFxyXG4gICAgdG9vbHRpcENyaXRpY2FsQmFja2dyb3VuZENvbG9yOiAjZTUzOTM1LFxyXG4gICAgdG9vbHRpcFNoYWRvdzogMCAwIDFyZW0gcmdiYSgxMjAsIDEyMCwgMTIwLCAwLjUpLFxyXG4gICAgbW9kYWxCYWNrZ3JvdW5kOiB1cmwofnNyYy9hc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtd2hpdGUucG5nKSxcclxuICAgIGNsb3NlQnV0dG9uQ29sb3I6ICM0MzQ1NGJcclxuICApXHJcbik7XHJcblxyXG5cclxuXHJcblxyXG5cclxuIiwiYXBwLW1haW4sIGFwcC1jcmVhdGUtd2FsbGV0LCBhcHAtb3Blbi13YWxsZXQsIGFwcC1yZXN0b3JlLXdhbGxldCwgYXBwLXNlZWQtcGhyYXNlLCBhcHAtd2FsbGV0LWRldGFpbHMsIGFwcC1hc3NpZ24tYWxpYXMsIGFwcC1lZGl0LWFsaWFzLCBhcHAtdHJhbnNmZXItYWxpYXMsIGFwcC1zZXR0aW5ncywgYXBwLWxvZ2luIHtcclxuICBmbGV4OiAxIDEgYXV0bztcclxuICBwYWRkaW5nOiAzcmVtO1xyXG4gIG1pbi13aWR0aDogODVyZW07XHJcblxyXG4gIC5jb250ZW50IHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHBhZGRpbmc6IDNyZW07XHJcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoY29udGVudEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLmhlYWQge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgbGVmdDogMDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1tYWluIHtcclxuXHJcbiAgLmNvbnRlbnQge1xyXG5cclxuICAgIC5hZGQtd2FsbGV0IHtcclxuXHJcbiAgICAgIC5hZGQtd2FsbGV0LWhlbHAge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuaWNvbiB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1zZWVkLXBocmFzZSB7XHJcblxyXG4gIC5zZWVkLXBocmFzZS1jb250ZW50IHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGlucHV0QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXdhbGxldC1kZXRhaWxzIHtcclxuXHJcbiAgLnNlZWQtcGhyYXNlIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGlucHV0QmFja2dyb3VuZENvbG9yKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1zZXR0aW5ncyB7XHJcblxyXG4gIC5jb250ZW50IHtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHJcbiAgICAudGhlbWUtc2VsZWN0aW9uIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnNjYWxlLXNlbGVjdGlvbiB7XHJcblxyXG4gICAgICAuYnV0dG9uLWJsb2NrIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodGFiSW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmxhYmVsIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjdGl2ZSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAubGFiZWwge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLWxvZ2luIHtcclxuICBtaW4td2lkdGg6IGluaGVyaXQ7XHJcbn1cclxuIiwiYXBwLXNpZGViYXIge1xyXG5cclxuICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChzaWRlYmFyQmFja2dyb3VuZENvbG9yKTtcclxuICB9XHJcblxyXG4gIC5zaWRlYmFyLWFjY291bnRzIHtcclxuXHJcbiAgICAuc2lkZWJhci1hY2NvdW50cy1oZWFkZXIge1xyXG5cclxuICAgICAgaDMge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBidXR0b24ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnNpZGViYXItYWNjb3VudHMtbGlzdCB7XHJcblxyXG4gICAgICAuc2lkZWJhci1hY2NvdW50IHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc2lkZWJhci1hY2NvdW50LXJvdyB7XHJcblxyXG4gICAgICAgICAgLnRleHQge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuaWNvbiB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuaW5kaWNhdG9yIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlQnV0dG9uQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKGFsdGVybmF0aXZlVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuXHJcbiAgICAgICAgICAgIC5wcm9ncmVzcy1iYXIge1xyXG5cclxuICAgICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAuZmlsbCB7XHJcblxyXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmLmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjdGl2ZSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChhY2NvdW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgY29sb3I6IHRoZW1lZChhY2NvdW50TWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLnNpZGViYXItYWNjb3VudC1yb3cge1xyXG5cclxuICAgICAgICAgICAgLnRleHQge1xyXG5cclxuICAgICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYWNjb3VudE9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5pbmRpY2F0b3Ige1xyXG5cclxuICAgICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChhY2NvdW50SW5kaWNhdG9yQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYWNjb3VudEluZGljYXRvclRleHRDb2xvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAuc3dpdGNoIHtcclxuXHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYWNjb3VudFN3aXRjaEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJi5hY2NvdW50LXN5bmNocm9uaXphdGlvbiB7XHJcblxyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChhY2NvdW50T3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpob3Zlcjpub3QoLmFjdGl2ZSkge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYWNjb3VudEhvdmVyQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmOmFmdGVyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50IDAlLCB0aGVtZWQoc2lkZWJhckJhY2tncm91bmRDb2xvcikgMTAwJSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zaWRlYmFyLXNldHRpbmdzIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogMC4ycmVtIHNvbGlkIHRoZW1lZChzaWRlYmFyQm9yZGVyQ29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC53cmFwLWJ1dHRvbiB7XHJcblxyXG4gICAgICBidXR0b24ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuaWNvbiB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuYWN0aXZlIHtcclxuXHJcbiAgICAgICAgYnV0dG9uIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGFjY291bnRCYWNrZ3JvdW5kQ29sb3IpIWltcG9ydGFudDtcclxuICAgICAgICAgICAgY29sb3I6IHRoZW1lZChhY2NvdW50TWFpblRleHRDb2xvcikhaW1wb3J0YW50O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChhY2NvdW50SW5kaWNhdG9yQmFja2dyb3VuZENvbG9yKSFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAuc3RhdHVzLWNvbnRhaW5lciB7XHJcblxyXG4gICAgICAub2ZmbGluZTpiZWZvcmUge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChvZmZsaW5lQ29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLm9ubGluZTpiZWZvcmUge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChvbmxpbmVDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciB7XHJcblxyXG4gICAgICAgIC5zeW5jaW5nIHtcclxuXHJcbiAgICAgICAgICAucHJvZ3Jlc3MtYmFyIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5maWxsIHtcclxuXHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5sb2FkaW5nIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnVwZGF0ZS1jb250YWluZXIge1xyXG5cclxuICAgICAgLnN0YW5kYXJkIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmltcG9ydGFudCB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChvcmFuZ2VUZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmNyaXRpY2FsIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBjb2xvcjogdGhlbWVkKHJlZFRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAudGltZSB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChvcmFuZ2VUZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICAmLnN0YW5kYXJkIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5pbXBvcnRhbnQge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQob3JhbmdlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuY3JpdGljYWwge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocmVkVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYudGltZSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChvcmFuZ2VUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJhcHAtd2FsbGV0IHtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLmhlYWRlciB7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmFsaWFzIHtcclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWRkcmVzcyB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLmljb24ge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudGFicyB7XHJcblxyXG4gICAgLnRhYnMtaGVhZGVyIHtcclxuXHJcbiAgICAgIC50YWIge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZCh0YWJJbmFjdGl2ZUJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuaWNvbiB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5pbmRpY2F0b3Ige1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYWNjb3VudEluZGljYXRvckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYWNjb3VudEluZGljYXRvclRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjdGl2ZSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjb250ZW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6aG92ZXI6bm90KC5hY3RpdmUpOm5vdCguZGlzYWJsZWQpIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHRhYkhvdmVyQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAudGFicy1jb250ZW50IHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjb250ZW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXNlbmQge1xyXG5cclxuICAuZm9ybS1zZW5kIHtcclxuXHJcbiAgICAuc2VuZC1zZWxlY3Qge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuYWRkaXRpb25hbC1kZXRhaWxzIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlcjogMC4ycmVtIHNvbGlkIHRoZW1lZCh0cmFuc3BhcmVudEJ1dHRvbkJvcmRlckNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXJlY2VpdmUge1xyXG5cclxuICAuYnRuLWNvcHktYWRkcmVzcyB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1oaXN0b3J5IHtcclxuXHJcbiAgdGFibGUge1xyXG5cclxuICAgIHRib2R5IHtcclxuXHJcbiAgICAgIHRyIHtcclxuXHJcbiAgICAgICAgJi5sb2NrZWQtdHJhbnNhY3Rpb24ge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6bnRoLWNoaWxkKDRuKzEpIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHRhYmxlQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6bnRoLWNoaWxkKDRuKzIpIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHRhYmxlQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6bnRoLWNoaWxkKDRuKzMpIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOm50aC1jaGlsZCg0bis0KSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnN0YXR1cyB7XHJcblxyXG4gICAgICAgICAgLmNvbmZpcm1hdGlvbiB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAuZmlsbCB7XHJcblxyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAubG9jay10cmFuc2FjdGlvbiB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChvcmFuZ2VUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnN0YXR1cy5zZW5kIHtcclxuXHJcbiAgICAgICAgICAuc3RhdHVzLXRyYW5zYWN0aW9uIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChyZWRUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc3RhdHVzLnJlY2VpdmVkIHtcclxuXHJcbiAgICAgICAgICAuc3RhdHVzLXRyYW5zYWN0aW9uIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChncmVlblRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1jb250cmFjdHMge1xyXG5cclxuICAud3JhcC10YWJsZSB7XHJcblxyXG4gICAgLmNvbnRyYWN0IHtcclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgJi5uZXcsICYuYWxlcnQge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocmVkVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYucHVyY2hhc2UsICYuc2VsbCB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1wdXJjaGFzZSB7XHJcblxyXG4gIC5mb3JtLXB1cmNoYXNlIHtcclxuXHJcbiAgICAucHVyY2hhc2Utc2VsZWN0IHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnB1cmNoYXNlLXN0YXRlcyB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmFkZGl0aW9uYWwtZGV0YWlscyB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXI6IDAuMnJlbSBzb2xpZCB0aGVtZWQodHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuXHJcbiAgICAucHJvZ3Jlc3MtYmFyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5wcm9ncmVzcy1iYXItZnVsbCB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtbWVzc2FnZXMge1xyXG5cclxuICB0YWJsZSB7XHJcblxyXG4gICAgdGJvZHkge1xyXG5cclxuICAgICAgdHIge1xyXG5cclxuICAgICAgICB0ZDpmaXJzdC1jaGlsZCB7XHJcblxyXG4gICAgICAgICAgc3BhbiB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtdHJ1bmNhdGU7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHJlZFRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC10eXBpbmctbWVzc2FnZSB7XHJcblxyXG4gIC5oZWFkIHtcclxuXHJcbiAgICAuaW50ZXJsb2N1dG9yIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5tZXNzYWdlcy1jb250ZW50IHtcclxuXHJcbiAgICAubWVzc2FnZXMtbGlzdCB7XHJcblxyXG4gICAgICBkaXYge1xyXG5cclxuICAgICAgICAmLmRhdGUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYubXkge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQobWVzc2FnZU15QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmOmJlZm9yZSB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSBwc2V1ZG87XHJcbiAgICAgICAgICAgIHRvcDogMDtcclxuICAgICAgICAgICAgbGVmdDogLTEuMXJlbTtcclxuICAgICAgICAgICAgYm9yZGVyOiAxLjJyZW0gc29saWQgdHJhbnNwYXJlbnQ7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtZWQobWVzc2FnZU15QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5idWRkeSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICY6YWZ0ZXIge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgcHNldWRvO1xyXG4gICAgICAgICAgICByaWdodDogLTEuMXJlbTtcclxuICAgICAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgICAgICBib3JkZXI6IDEuMnJlbSBzb2xpZCB0cmFuc3BhcmVudDtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6IHRoZW1lZChtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtc3Rha2luZyB7XHJcblxyXG4gIC5jaGFydC1oZWFkZXIge1xyXG5cclxuICAgIC5nZW5lcmFsIHtcclxuXHJcbiAgICAgIC5sYWJlbCB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAub3B0aW9ucyB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuc2VsZWN0ZWQge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG4gICAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS42cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmNoYXJ0LW9wdGlvbnMge1xyXG5cclxuICAgIC50aXRsZSB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5vcHRpb25zIHtcclxuXHJcbiAgICAgIGJ1dHRvbiB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjaGFydE9wdGlvbnNCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5hY3RpdmUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoY2hhcnRPcHRpb25zSG92ZXJDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uaW5wdXQtYmxvY2stYWxpYXMge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgLmFsaWFzLWRyb3Bkb3duIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogNi41cmVtO1xyXG4gICAgbWF4LWhlaWdodDogMTByZW07XHJcbiAgICBvdmVyZmxvdzogYXV0bztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoaW5wdXRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpdiB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gICAgICBwYWRkaW5nOiAxcmVtO1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoc2VsZWN0SG92ZXJDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi5oZWFkIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgcGFkZGluZzogMCAzcmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogM3JlbTtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLmJyZWFkY3J1bWJzIHtcclxuXHJcbiAgICA+IHNwYW4sIGEge1xyXG5cclxuICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMjBweDtcclxuICAgICAgICBvdXRsaW5lLXN0eWxlOiBub25lO1xyXG5cclxuICAgICAgICAmOmFmdGVyIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSBwc2V1ZG87XHJcbiAgICAgICAgICB0b3A6IDAuNXJlbTtcclxuICAgICAgICAgIHJpZ2h0OiAtMS41cmVtO1xyXG4gICAgICAgICAgd2lkdGg6IDAuOXJlbTtcclxuICAgICAgICAgIGhlaWdodDogMC45cmVtO1xyXG4gICAgICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2Fycm93LXJpZ2h0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICAgIG1hc2stc2l6ZTogY292ZXI7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5iYWNrLWJ0biB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgY29sb3I6ICM0ZGIxZmY7XHJcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuM3JlbTtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuN3JlbTtcclxuICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2JhY2suc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB3aWR0aDogMC45cmVtO1xyXG4gICAgICBoZWlnaHQ6IDAuOXJlbTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIuc2Nyb2xsZWQtY29udGVudCB7XHJcblxyXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xyXG4gICAgd2lkdGg6IDFyZW07XHJcbiAgICBoZWlnaHQ6IDFyZW07XHJcbiAgfVxyXG5cclxuICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICB9XHJcblxyXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7XHJcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xyXG4gICAgYm9yZGVyOiAwLjI1cmVtIHNvbGlkIHRyYW5zcGFyZW50O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xyXG4gIH1cclxuXHJcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjtcclxuICB9XHJcbn1cclxuIiwidGFibGUge1xyXG4gIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG5cclxuICB0aGVhZCB7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICB0ciB7XHJcbiAgICAgIGhlaWdodDogNHJlbTtcclxuXHJcbiAgICAgIHRoIHtcclxuICAgICAgICBwYWRkaW5nOiAxcmVtO1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XHJcblxyXG4gICAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0Ym9keSB7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyIHtcclxuICAgICAgaGVpZ2h0OiAzLjVyZW07XHJcblxyXG4gICAgICAmOm50aC1jaGlsZChvZGQpIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodGFibGVCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGQge1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjdyZW07XHJcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgICAgICBtYXgtd2lkdGg6IDIwcmVtO1xyXG5cclxuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICAgIHBhZGRpbmctbGVmdDogM3JlbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBCQVNFXHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL2Jhc2UvbWl4aW5zJztcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvYmFzZS9udWxsJztcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvYmFzZS90aGVtZSc7XHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL2Jhc2UvYmFzZSc7XHJcblxyXG4vLyBMQVlPVVRcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvbGF5b3V0L21haW4nO1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9sYXlvdXQvc2V0dGluZ3MnO1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9sYXlvdXQvc2lkZWJhcic7XHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL2xheW91dC93YWxsZXQnO1xyXG5cclxuLy8gTU9EVUxFU1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9tb2R1bGVzL2hlYWQnO1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9tb2R1bGVzL3Njcm9sbCc7XHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL21vZHVsZXMvdGFibGUnO1xyXG5cclxuQGltcG9ydCBcIn5Abmctc2VsZWN0L25nLXNlbGVjdC90aGVtZXMvZGVmYXVsdC50aGVtZS5jc3NcIjtcclxuXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcclxuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1MaWdodC50dGYpO1xyXG4gIGZvbnQtd2VpZ2h0OiAzMDA7XHJcbn1cclxuXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcclxuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1SZWd1bGFyLnR0Zik7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xyXG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLVNlbWlCb2xkLnR0Zik7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xyXG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLUJvbGQudHRmKTtcclxuICBmb250LXdlaWdodDogNzAwO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICBmb250LWZhbWlseTogT3BlblNhbnM7XHJcbiAgc3JjOiB1cmwofnNyYy9hc3NldHMvZm9udHMvT3BlblNhbnMtRXh0cmFCb2xkLnR0Zik7XHJcbiAgZm9udC13ZWlnaHQ6IDgwMDtcclxufVxyXG5cclxuXHJcbmh0bWwge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcclxuICBmb250LXNpemU6IDEwcHg7XHJcbn1cclxuXHJcbmJvZHkge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcclxuICBmb250LXNpemU6IDEuNnJlbTtcclxuICB3aWR0aDogMTAwdnc7XHJcbiAgaGVpZ2h0OiAxMDB2aDtcclxuXHJcbiAgJi50aGVtZS1kYXJrIHtcclxuICAgIGJhY2tncm91bmQ6ICMxMzE5MjEgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWRhcmsucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG4gIH1cclxuXHJcbiAgJi50aGVtZS1ncmF5IHtcclxuICAgIGJhY2tncm91bmQ6ICMxMDE0MTcgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWdyYXkucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG4gIH1cclxuXHJcbiAgJi50aGVtZS13aGl0ZSB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZWVlZWVlIHVybChcImFzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC13aGl0ZS5wbmdcIikgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcbiAgfVxyXG5cclxuICBhcHAtcm9vdCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgfVxyXG59XHJcblxyXG4udXBkYXRlLXRvb2x0aXAge1xyXG5cclxuICAudG9vbHRpcC1pbm5lciB7XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBtYXNrOiB1cmwoYXNzZXRzL2ljb25zL3VwZGF0ZS1hbGVydC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\", '', '']]","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target, parent) {\n if (parent){\n return parent.querySelector(target);\n }\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target, parent) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target, parent);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of