{
    "_format": "hh-sol-artifact-1",
    "contractName": "LockedNORI",
    "sourceName": "contracts/LockedNORI.sol",
    "abi": [
        {
            "inputs": [],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Approval",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "tokenHolder",
                    "type": "address"
                }
            ],
            "name": "AuthorizedOperator",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "operatorData",
                    "type": "bytes"
                }
            ],
            "name": "Burned",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint8",
                    "name": "version",
                    "type": "uint8"
                }
            ],
            "name": "Initialized",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "operatorData",
                    "type": "bytes"
                }
            ],
            "name": "Minted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "Paused",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "tokenHolder",
                    "type": "address"
                }
            ],
            "name": "RevokedOperator",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "previousAdminRole",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "newAdminRole",
                    "type": "bytes32"
                }
            ],
            "name": "RoleAdminChanged",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "sender",
                    "type": "address"
                }
            ],
            "name": "RoleGranted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "sender",
                    "type": "address"
                }
            ],
            "name": "RoleRevoked",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "operatorData",
                    "type": "bytes"
                }
            ],
            "name": "Sent",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address[]",
                    "name": "recipients",
                    "type": "address[]"
                },
                {
                    "indexed": false,
                    "internalType": "uint256[]",
                    "name": "amounts",
                    "type": "uint256[]"
                },
                {
                    "indexed": false,
                    "internalType": "bytes[]",
                    "name": "userData",
                    "type": "bytes[]"
                },
                {
                    "indexed": false,
                    "internalType": "bytes[]",
                    "name": "operatorData",
                    "type": "bytes[]"
                },
                {
                    "indexed": false,
                    "internalType": "bool[]",
                    "name": "requireReceptionAck",
                    "type": "bool[]"
                }
            ],
            "name": "SentBatch",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "recipient",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "startTime",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "vestEndTime",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "unlockEndTime",
                    "type": "uint256"
                }
            ],
            "name": "TokenGrantCreated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "totalAmount",
                    "type": "uint256"
                }
            ],
            "name": "TokenGrantCreatedBatch",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "quantity",
                    "type": "uint256"
                }
            ],
            "name": "TokensClaimed",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Transfer",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                }
            ],
            "name": "UnderlyingTokenAddressUpdated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "Unpaused",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "atTime",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "quantity",
                    "type": "uint256"
                }
            ],
            "name": "UnvestedTokensRevoked",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "DEFAULT_ADMIN_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "ERC777_TOKENS_RECIPIENT_HASH",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "PAUSER_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "TOKEN_GRANTER_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "holder",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                }
            ],
            "name": "allowance",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "approve",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "authorizeOperator",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "tokenHolder",
                    "type": "address"
                }
            ],
            "name": "balanceOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address[]",
                    "name": "accounts",
                    "type": "address[]"
                }
            ],
            "name": "balanceOfBatch",
            "outputs": [
                {
                    "internalType": "uint256[]",
                    "name": "",
                    "type": "uint256[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256[]",
                    "name": "amounts",
                    "type": "uint256[]"
                },
                {
                    "internalType": "bytes[]",
                    "name": "grantParams",
                    "type": "bytes[]"
                },
                {
                    "internalType": "uint256",
                    "name": "deadline",
                    "type": "uint256"
                },
                {
                    "internalType": "uint8",
                    "name": "v",
                    "type": "uint8"
                },
                {
                    "internalType": "bytes32",
                    "name": "r",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "s",
                    "type": "bytes32"
                }
            ],
            "name": "batchCreateGrants",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address[]",
                    "name": "accounts",
                    "type": "address[]"
                }
            ],
            "name": "batchGetGrant",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "grantAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "recipient",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "startTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestEndTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockEndTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "cliff1Time",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "cliff2Time",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestCliff1Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestCliff2Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockCliff1Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockCliff2Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "claimedAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "originalAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lastRevocationTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lastQuantityRevoked",
                            "type": "uint256"
                        },
                        {
                            "internalType": "bool",
                            "name": "exists",
                            "type": "bool"
                        }
                    ],
                    "internalType": "struct LockedNORI.TokenGrantDetail[]",
                    "name": "",
                    "type": "tuple[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address[]",
                    "name": "fromAccounts",
                    "type": "address[]"
                },
                {
                    "internalType": "address[]",
                    "name": "toAccounts",
                    "type": "address[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "atTimes",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "amounts",
                    "type": "uint256[]"
                }
            ],
            "name": "batchRevokeUnvestedTokenAmounts",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                }
            ],
            "name": "burn",
            "outputs": [],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "decimals",
            "outputs": [
                {
                    "internalType": "uint8",
                    "name": "",
                    "type": "uint8"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "defaultOperators",
            "outputs": [
                {
                    "internalType": "address[]",
                    "name": "",
                    "type": "address[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "getGrant",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "grantAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "recipient",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "startTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestEndTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockEndTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "cliff1Time",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "cliff2Time",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestCliff1Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestCliff2Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockCliff1Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockCliff2Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "claimedAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "originalAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lastRevocationTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lastQuantityRevoked",
                            "type": "uint256"
                        },
                        {
                            "internalType": "bool",
                            "name": "exists",
                            "type": "bool"
                        }
                    ],
                    "internalType": "struct LockedNORI.TokenGrantDetail",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                }
            ],
            "name": "getRoleAdmin",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint256",
                    "name": "index",
                    "type": "uint256"
                }
            ],
            "name": "getRoleMember",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                }
            ],
            "name": "getRoleMemberCount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "grantRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "granularity",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "hasRole",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract IERC20WithPermit",
                    "name": "bridgedPolygonNoriAddress",
                    "type": "address"
                }
            ],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "tokenHolder",
                    "type": "address"
                }
            ],
            "name": "isOperatorFor",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "name",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                }
            ],
            "name": "operatorBurn",
            "outputs": [],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                }
            ],
            "name": "operatorSend",
            "outputs": [],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "pause",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "paused",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "quantityRevokedFrom",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "renounceRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "revokeOperator",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "revokeRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                }
            ],
            "name": "send",
            "outputs": [],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes4",
                    "name": "interfaceId",
                    "type": "bytes4"
                }
            ],
            "name": "supportsInterface",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "symbol",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "totalSupply",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "transfer",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "transferFrom",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "unlockedBalanceOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "unpause",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract IERC20WithPermit",
                    "name": "newUnderlying",
                    "type": "address"
                }
            ],
            "name": "updateUnderlying",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "vestedBalanceOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "recipient",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "withdrawTo",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "bytecode": "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000176565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e49190620001b6565b60405180910390a15b565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60006200015e602783620000ef565b91506200016b8262000100565b604082019050919050565b6000602082019050818103600083015262000191816200014f565b9050919050565b600060ff82169050919050565b620001b08162000198565b82525050565b6000602082019050620001cd6000830184620001a5565b92915050565b6183b380620001e36000396000f3fe608060405234801561001057600080fd5b50600436106102045760003560e01c806301ffc9a71461020957806306e485381461023957806306fdde0314610257578063095ea7b3146102755780630e2d1a2a146102a557806318160ddd146102d5578063205c2878146102f357806323b872dd14610323578063248a9ca3146103535780632f2ff15d14610383578063313ce5671461039f57806336568abe146103bd5780633f4ba83a146103d957806342f82260146103e3578063458c738e146103ff578063521189a91461042f578063556f0dc71461044d5780635c975abb1461046b57806362ad1b8314610489578063633d9be0146104a557806370a08231146104c35780638456cb59146104f357806384955c88146104fd5780639010d07c1461052d57806391d148541461055d578063959b8c3f1461058d57806395d89b41146105a95780639952d6e4146105c75780639bd9bbc6146105e35780639e3f3cac146105ff5780639f916c211461062f578063a217fddf1461065f578063a9059cbb1461067d578063bf31dbf4146106ad578063c4d66de8146106dd578063c884aa58146106f9578063ca15c87314610715578063d547741f14610745578063d95b637114610761578063dd62ed3e14610791578063e63ab1e9146107c1578063fad8b32a146107df578063fc673c4f146107fb578063fe9d930314610817575b600080fd5b610223600480360381019061021e9190614f00565b610833565b6040516102309190614f48565b60405180910390f35b6102416108ad565b60405161024e9190615053565b60405180910390f35b61025f61093b565b60405161026c9190615105565b60405180910390f35b61028f600480360381019061028a9190615189565b6109cd565b60405161029c9190614f48565b60405180910390f35b6102bf60048036038101906102ba91906151c9565b6109f3565b6040516102cc9190615205565b60405180910390f35b6102dd610a06565b6040516102ea9190615205565b60405180910390f35b61030d60048036038101906103089190615189565b610a10565b60405161031a9190614f48565b60405180910390f35b61033d60048036038101906103389190615220565b610c0e565b60405161034a9190614f48565b60405180910390f35b61036d600480360381019061036891906152a9565b610c4b565b60405161037a91906152e5565b60405180910390f35b61039d60048036038101906103989190615300565b610c6b565b005b6103a7610c8c565b6040516103b4919061535c565b60405180910390f35b6103d760048036038101906103d29190615300565b610c95565b005b6103e1610d18565b005b6103fd60048036038101906103f891906153b5565b610d4d565b005b6104196004803603810190610414919061552a565b610e78565b6040516104269190615631565b60405180910390f35b610437610f31565b60405161044491906152e5565b60405180910390f35b610455610f55565b6040516104629190615205565b60405180910390f35b610473610f5e565b6040516104809190614f48565b60405180910390f35b6104a3600480360381019061049e9190615708565b610f75565b005b6104ad610fb0565b6040516104ba91906152e5565b60405180910390f35b6104dd60048036038101906104d891906151c9565b610fd4565b6040516104ea9190615205565b60405180910390f35b6104fb61101d565b005b610517600480360381019061051291906151c9565b611052565b6040516105249190615205565b60405180910390f35b610547600480360381019061054291906157bb565b611065565b604051610554919061580a565b60405180910390f35b61057760048036038101906105729190615300565b611094565b6040516105849190614f48565b60405180910390f35b6105a760048036038101906105a291906151c9565b6110ff565b005b6105b1611116565b6040516105be9190615105565b60405180910390f35b6105e160048036038101906105dc91906158d6565b6111a8565b005b6105fd60048036038101906105f891906159bf565b61136b565b005b610619600480360381019061061491906151c9565b6113a6565b6040516106269190615205565b60405180910390f35b61064960048036038101906106449190615a2e565b611407565b6040516106569190615c84565b60405180910390f35b6106676114de565b60405161067491906152e5565b60405180910390f35b61069760048036038101906106929190615189565b6114e5565b6040516106a49190614f48565b60405180910390f35b6106c760048036038101906106c291906151c9565b611522565b6040516106d49190615df0565b60405180910390f35b6106f760048036038101906106f291906153b5565b6116d7565b005b610713600480360381019061070e9190615e8e565b6119cb565b005b61072f600480360381019061072a91906152a9565b611cff565b60405161073c9190615205565b60405180910390f35b61075f600480360381019061075a9190615300565b611d23565b005b61077b60048036038101906107769190615f5d565b611d44565b6040516107889190614f48565b60405180910390f35b6107ab60048036038101906107a69190615f5d565b611ef5565b6040516107b89190615205565b60405180910390f35b6107c9611f7c565b6040516107d691906152e5565b60405180910390f35b6107f960048036038101906107f491906151c9565b611fa0565b005b61081560048036038101906108109190615f9d565b611fb7565b005b610831600480360381019061082c919061603c565b611ff2565b005b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108a657506108a58261202d565b5b9050919050565b6060603780548060200260200160405190810160405280929190818152602001828054801561093157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116108e7575b5050505050905090565b60606035805461094a906160c7565b80601f0160208091040260200160405190810160405280929190818152602001828054610976906160c7565b80156109c35780601f10610998576101008083540402835291602001916109c3565b820191906000526020600020905b8154815290600101906020018083116109a657829003601f168201915b5050505050905090565b60006109d76120a7565b6109e183836120f1565b6109eb838361212c565b905092915050565b60006109ff824261214f565b9050919050565b6000603454905090565b6000610a1a6120a7565b600061015f6000610a29612293565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610a96610a70612293565b84604051806020016040528060008152506040518060200160405280600081525061229b565b8281600d016000828254610aaa9190616127565b9250508190555061016060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401610b0f92919061615b565b6020604051808303816000875af1158015610b2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5291906161b0565b15610bcd578373ffffffffffffffffffffffffffffffffffffffff16610b76612293565b73ffffffffffffffffffffffffffffffffffffffff167fa86305abc2db271df4609aa86a8d044bc11fb36939841bfdad6c1ab2b26e947185604051610bbb9190615205565b60405180910390a36001915050610c08565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bff9061624f565b60405180910390fd5b92915050565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c42906162bb565b60405180910390fd5b600060c96000838152602001908152602001600020600101549050919050565b610c7482610c4b565b610c7d816124e0565b610c8783836124f4565b505050565b60006012905090565b610c9d612293565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d019061634d565b60405180910390fd5b610d14828261250c565b5050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d42816124e0565b610d4a612524565b50565b610d556120a7565b6000801b610d62816124e0565b600061016060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610def906163df565b60405180910390fd5b8261016060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1fc9b2467a9c193cab5b6f03eefe74f1e3140becc7ff93728101335e77fef6798184604051610e6b9291906163ff565b60405180910390a1505050565b60606000825167ffffffffffffffff811115610e9757610e966153e7565b5b604051908082528060200260200182016040528015610ec55781602001602082028036833780820191505090505b50905060005b8351811015610f2757610ef7848281518110610eea57610ee9616428565b5b6020026020010151610fd4565b828281518110610f0a57610f09616428565b5b60200260200101818152505080610f2090616457565b9050610ecb565b5080915050919050565b7fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b81565b60006001905090565b6000606560009054906101000a900460ff16905090565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa7906164eb565b60405180910390fd5b7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b881565b6000603360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a611047816124e0565b61104f612587565b50565b600061105e82426125ea565b9050919050565b600061108c8260fb600086815260200190815260200160002061274090919063ffffffff16565b905092915050565b600060c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61110a8160006120f1565b6111138161275a565b50565b606060368054611125906160c7565b80601f0160208091040260200160405190810160405280929190818152602001828054611151906160c7565b801561119e5780601f106111735761010080835404028352916020019161119e565b820191906000526020600020905b81548152906001019060200180831161118157829003601f168201915b5050505050905090565b6111b06120a7565b7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b86111da816124e0565b868690508989905014611222576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112199061657d565b60405180910390fd5b84849050878790501461126a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112619061660f565b60405180910390fd5b8282905085859050146112b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a9906166a1565b60405180910390fd5b60005b8989905081101561135f5761134c8a8a838181106112d6576112d5616428565b5b90506020020160208101906112eb91906151c9565b8989848181106112fe576112fd616428565b5b905060200201602081019061131391906151c9565b88888581811061132657611325616428565b5b905060200201358787868181106113405761133f616428565b5b905060200201356129ba565b808061135790616457565b9150506112b5565b50505050505050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139d9061670d565b60405180910390fd5b60008061015f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600c015481600e01546113ff919061672d565b915050919050565b606060008383905067ffffffffffffffff811115611428576114276153e7565b5b60405190808252806020026020018201604052801561146157816020015b61144e614d58565b8152602001906001900390816114465790505b50905060005b848490508110156114d3576114a285858381811061148857611487616428565b5b905060200201602081019061149d91906151c9565b611522565b8282815181106114b5576114b4616428565b5b602002602001018190525080806114cb90616457565b915050611467565b508091505092915050565b6000801b81565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611519906167ad565b60405180910390fd5b61152a614d58565b600061015f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060405180610200016040528082600c015481526020018473ffffffffffffffffffffffffffffffffffffffff16815260200182600601600001548152602001826000016001015481526020018260060160010154815260200182600601600301600080815260200190815260200160002060000154815260200182600601600301600060018152602001908152602001600020600001548152602001826000016003016000808152602001908152602001600020600101548152602001826000016003016000600181526020019081526020016000206001015481526020018260060160030160008081526020019081526020016000206001015481526020018260060160030160006001815260200190815260200160002060010154815260200182600d0154815260200182600e01548152602001826010015481526020018260110154815260200182600f0160009054906101000a900460ff161515815250915050919050565b60008060019054906101000a900460ff161590508080156117085750600160008054906101000a900460ff1660ff16105b80611735575061171730612db0565b1580156117345750600160008054906101000a900460ff1660ff16145b5b611774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176b9061683f565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156117b1576001600060016101000a81548160ff0219169083151502179055505b6000600167ffffffffffffffff8111156117ce576117cd6153e7565b5b6040519080825280602002602001820160405280156117fc5781602001602082028036833780820191505090505b509050611807612293565b8160008151811061181b5761181a616428565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061185d612dd3565b611865612e24565b61186d612e75565b611875612ec6565b61187d612f17565b611885612f83565b6118fa6040518060400160405280600b81526020017f4c6f636b6564204e4f52490000000000000000000000000000000000000000008152506040518060400160405280600581526020017f6c4e4f524900000000000000000000000000000000000000000000000000000081525083613019565b8261016060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061196d7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b8611968612293565b6124f4565b5080156119c75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516119be91906168a4565b60405180910390a15b5050565b6119d36120a7565b7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b86119fd816124e0565b868690508989905014611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c90616931565b60405180910390fd5b6000805b8a8a90508160ff161015611b6f578a8a8260ff16818110611a6d57611a6c616428565b5b9050602002013582611a7f9190616127565b91506000611b138c8c8460ff16818110611a9c57611a9b616428565b5b905060200201358b8b8560ff16818110611ab957611ab8616428565b5b9050602002810190611acb9190616960565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061327c565b9050611b5b818d8d8560ff16818110611b2f57611b2e616428565b5b9050602002013560405180602001604052806000815250604051806020016040528060008152506136ce565b508080611b67906169c3565b915050611a49565b507f1c033d59d233682f5cd21bc9a14d4934157a93bb4e87b1aa1f3ac4394af8a81481604051611b9f9190615205565b60405180910390a161016060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d505accf611bee612293565b30848a8a8a8a6040518863ffffffff1660e01b8152600401611c1697969594939291906169ec565b600060405180830381600087803b158015611c3057600080fd5b505af1158015611c44573d6000803e3d6000fd5b5050505061016060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd611c8f612293565b30846040518463ffffffff1660e01b8152600401611caf93929190616a5b565b6020604051808303816000875af1158015611cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf291906161b0565b5050505050505050505050565b6000611d1c60fb60008481526020019081526020016000206136e2565b9050919050565b611d2c82610c4b565b611d35816124e0565b611d3f838361250c565b505050565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611e5c5750603860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e5b5750603a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b80611eed5750603960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000603b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b611fab8160006120f1565b611fb4816136f7565b50565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe990616ade565b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202490616ade565b60405180910390fd5b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806120a0575061209f82613957565b5b9050919050565b6120af610f5e565b156120ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e690616b4a565b60405180910390fd5b565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212390616bb6565b60405180910390fd5b600080612137612293565b90506121448185856139c1565b600191505092915050565b60008061015f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060003073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016121cf919061580a565b602060405180830381865afa1580156121ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122109190616beb565b905081600f0160009054906101000a900460ff16156122885761223285613b8a565b156122705781600d015461225f6122558685600001613bfc90919063ffffffff16565b84600c0154613c24565b612269919061672d565b9050612287565b81600d015482600c0154612284919061672d565b90505b5b809250505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361230a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230190616c8a565b60405180910390fd5b6000612314612293565b90506123238186600087613c3d565b6000603360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050848110156123aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a190616d1c565b60405180910390fd5b848103603360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508460346000828254612402919061672d565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a409887878760405161246a93929190616d91565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516124d09190615205565b60405180910390a3505050505050565b6124f1816124ec612293565b613de4565b50565b6124fe8282613e69565b6125088282613f30565b5050565b6125168282613e69565b6125208282613f64565b5050565b61252c613f98565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612570612293565b60405161257d919061580a565b60405180910390a1565b61258f6120a7565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586125d3612293565b6040516125e0919061580a565b60405180910390a1565b60008061015f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060003073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161266a919061580a565b602060405180830381865afa158015612687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ab9190616beb565b905081600f0160009054906101000a900460ff16156127355760006126cf86613b8a565b6126dd5782600c01546126f4565b6126f38584600001613bfc90919063ffffffff16565b5b905082600d015461272761271d836127188988600601613bfc90919063ffffffff16565b613c24565b85600c0154613c24565b612731919061672d565b9150505b809250505092915050565b600061274f8360000183613fe1565b60001c905092915050565b8073ffffffffffffffffffffffffffffffffffffffff16612779612293565b73ffffffffffffffffffffffffffffffffffffffff16036127cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c690616e48565b60405180910390fd5b603860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128b957603a600061282d612293565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055612956565b6001603960006128c7612293565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b61295e612293565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b6000821480156129ca5750600081115b806129e157506000821180156129e05750600081145b5b612a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1790616eda565b60405180910390fd5b600061015f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600f0160009054906101000a900460ff16612ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aac90616f46565b60405180910390fd5b612abe85613b8a565b612afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af490616fd8565b60405180910390fd5b60008084148015612b0e5750600083115b612b185783612b1a565b425b905042811015612b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b569061706a565b60405180910390fd5b6000612b778284600001613bfc90919063ffffffff16565b905082600c01548110612bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb6906170d6565b60405180910390fd5b60008184600c0154612bd1919061672d565b9050600080861115612c285781861115612c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1790617142565b60405180910390fd5b859050612c2c565b8190505b8085600c0154612c3c919061672d565b85600c0181905550838560100181905550808560110181905550612c808982604051806020016040528060008152506040518060200160405280600081525061229b565b61016060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb89836040518363ffffffff1660e01b8152600401612cde92919061615b565b6020604051808303816000875af1158015612cfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2191906161b0565b612d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d57906171d4565b60405180910390fd5b808973ffffffffffffffffffffffffffffffffffffffff16857f0bbe3f9ae306d75ae6df08cd4a79ac5c6eae93ffae7d7e52f2859bf27592519d60405160405180910390a4505050505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1990617266565b60405180910390fd5b565b600060019054906101000a900460ff16612e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6a90617266565b60405180910390fd5b565b600060019054906101000a900460ff16612ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebb90617266565b60405180910390fd5b565b600060019054906101000a900460ff16612f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0c90617266565b60405180910390fd5b565b600060019054906101000a900460ff16612f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5d90617266565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b600060019054906101000a900460ff16612fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc990617266565b60405180910390fd5b612fe66000801b612fe1612293565b6124f4565b6130177f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a613012612293565b6124f4565b565b600060019054906101000a900460ff16613068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305f90617266565b60405180910390fd5b82603590816130779190617428565b5081603690816130879190617428565b50806037908051906020019061309e929190614ded565b5060005b8151811015613130576001603860008484815181106130c4576130c3616428565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061312890616457565b9150506130a2565b50731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d307fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce2177054306040518463ffffffff1660e01b81526004016131a2939291906174fa565b600060405180830381600087803b1580156131bc57600080fd5b505af11580156131d0573d6000803e3d6000fd5b50505050731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d307faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a306040518463ffffffff1660e01b8152600401613245939291906174fa565b600060405180830381600087803b15801561325f57600080fd5b505af1158015613273573d6000803e3d6000fd5b50505050505050565b600080828060200190518101906132939190617641565b9050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603613308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ff906176e1565b60405180910390fd5b6133367fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b88260000151611094565b15613376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336d90617773565b60405180910390fd5b80606001518160200151106133c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b790617805565b60405180910390fd5b80606001514210613406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133fd90617897565b60405180910390fd5b61015f6000826000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600f0160009054906101000a900460ff161561349b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349290617903565b60405180910390fd5b600061015f6000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508481600c01819055508481600e0181905550600181600f0160006101000a81548160ff0219169083151502179055508160200151826040015111156135ef578161010001518260c0015110158061354357508161012001518260e0015110155b613582576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135799061796f565b60405180910390fd5b84816000016002018190555081602001518160000160000181905550816040015181600001600101819055506135ce82608001518360c001518360000161400c9092919063ffffffff16565b6135ee8260a001518360e001518360000161400c9092919063ffffffff16565b5b848160060160020181905550816020015181600601600001819055508160600151816006016001018190555061363c82608001518361010001518360060161400c9092919063ffffffff16565b61365d8260a001518361012001518360060161400c9092919063ffffffff16565b816020015185836000015173ffffffffffffffffffffffffffffffffffffffff167f17161516b6ce34594617177a800b150a86ddee02c06993a73ef000a02367d119856040015186606001516040516136b792919061798f565b60405180910390a481600001519250505092915050565b6136dc8484848460016141db565b50505050565b60006136f0826000016143b9565b9050919050565b6136ff612293565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361376c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161376390617a2a565b60405180910390fd5b603860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561385f576001603a60006137cc612293565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506138f3565b6039600061386b612293565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b6138fb612293565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a2790617abc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a9690617b4e565b60405180910390fd5b80603b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051613b7d9190615205565b60405180910390a3505050565b60008061015f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600f0160009054906101000a900460ff168015613bf4575060008160000160000154115b915050919050565b6000613c0883836143ca565b613c12848461449a565b613c1c9190616127565b905092915050565b6000818310613c335781613c35565b825b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905060008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000613ccf7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b888611094565b905060008673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141590506000613d1088610fd4565b8611159050838015613d1f5750815b8015613d285750825b15613d725780613d6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d6490617bba565b60405180910390fd5b613dcd565b84613dcc57808015613d8c5750613d8888611052565b8611155b613dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dc290617bba565b60405180910390fd5b5b5b613dd989898989614527565b505050505050505050565b613dee8282611094565b613e6557613dfb81614541565b613e098360001c602061456e565b604051602001613e1a929190617cae565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e5c9190615105565b60405180910390fd5b5050565b613e7382826147aa565b7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b88203613f2c5761015f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600f0160009054906101000a900460ff1615613f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f2290617d5a565b60405180910390fd5b5b5050565b613f3a82826147b6565b613f5f8160fb600085815260200190815260200160002061489790919063ffffffff16565b505050565b613f6e82826148c7565b613f938160fb60008581526020019081526020016000206149a990919063ffffffff16565b505050565b613fa0610f5e565b613fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fd690617dc6565b60405180910390fd5b565b6000826000018281548110613ff957613ff8616428565b5b9060005260206000200154905092915050565b600083600401549050600084600401540361406d578360000154831015614068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161405f90617e58565b60405180910390fd5b6140d5565b836003016000600183614080919061672d565b8152602001908152602001600020600001548310156140d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140cb90617eea565b60405180910390fd5b5b836001015483111561411c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161411390617f7c565b60405180910390fd5b83600201548285600501546141319190616127565b1115614172576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141699061800e565b60405180910390fd5b6000846003016000838152602001908152602001600020905083816000018190555082816001018190555060018560040160008282546141b29190616127565b92505081905550828560050160008282546141cd9190616127565b925050819055505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361424a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142419061807a565b60405180910390fd5b6000614254612293565b90506142638160008888613c3d565b84603460008282546142759190616127565b9250508190555084603360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142cb9190616127565b925050819055506142e281600088888888886149d9565b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d87878760405161434393929190616d91565b60405180910390a38573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516143a99190615205565b60405180910390a3505050505050565b600081600001805490509050919050565b60008083600501548460020154106143f357836005015484600201546143f0919061672d565b90505b836001015483106144075780915050614494565b6000846000015490506000856004015411156144495784600301600060018760040154614434919061672d565b81526020019081526020016000206000015490505b600081866001015461445b919061672d565b905081851061448b57808286614471919061672d565b8461447c919061809a565b614486919061810b565b61448e565b60005b93505050505b92915050565b6000806000905060008460040154905060005b8181101561450e578560030160008281526020019081526020016000206000015485106144fb5785600301600082815260200190815260200160002060010154836144f89190616127565b92505b808061450690616457565b9150506144ad565b5061451d856002015483613c24565b9250505092915050565b61452f6120a7565b61453b84848484614bab565b50505050565b60606145678273ffffffffffffffffffffffffffffffffffffffff16601460ff1661456e565b9050919050565b606060006002836002614581919061809a565b61458b9190616127565b67ffffffffffffffff8111156145a4576145a36153e7565b5b6040519080825280601f01601f1916602001820160405280156145d65781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061460e5761460d616428565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061467257614671616428565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026146b2919061809a565b6146bc9190616127565b90505b600181111561475c577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106146fe576146fd616428565b5b1a60f81b82828151811061471557614714616428565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806147559061813c565b90506146bf565b50600084146147a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614797906181b1565b60405180910390fd5b8091505092915050565b6147b26120a7565b5050565b6147c08282611094565b61489357600160c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550614838612293565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006148bf836000018373ffffffffffffffffffffffffffffffffffffffff1660001b614bb1565b905092915050565b6148d18282611094565b156149a557600060c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061494a612293565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006149d1836000018373ffffffffffffffffffffffffffffffffffffffff1660001b614c21565b905092915050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6040518363ffffffff1660e01b8152600401614a4a9291906181d1565b602060405180830381865afa158015614a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a8b91906181fa565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614614b3a578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401614b0396959493929190618227565b600060405180830381600087803b158015614b1d57600080fd5b505af1158015614b31573d6000803e3d6000fd5b50505050614ba1565b8115614ba057614b5f8673ffffffffffffffffffffffffffffffffffffffff16612db0565b15614b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614b969061832e565b60405180910390fd5b5b5b5050505050505050565b50505050565b6000614bbd8383614d35565b614c16578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050614c1b565b600090505b92915050565b60008083600101600084815260200190815260200160002054905060008114614d29576000600182614c53919061672d565b9050600060018660000180549050614c6b919061672d565b9050818114614cda576000866000018281548110614c8c57614c8b616428565b5b9060005260206000200154905080876000018481548110614cb057614caf616428565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480614cee57614ced61834e565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050614d2f565b60009150505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b60405180610200016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b828054828255906000526020600020908101928215614e66579160200282015b82811115614e655782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190614e0d565b5b509050614e739190614e77565b5090565b5b80821115614e90576000816000905550600101614e78565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b614edd81614ea8565b8114614ee857600080fd5b50565b600081359050614efa81614ed4565b92915050565b600060208284031215614f1657614f15614e9e565b5b6000614f2484828501614eeb565b91505092915050565b60008115159050919050565b614f4281614f2d565b82525050565b6000602082019050614f5d6000830184614f39565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614fba82614f8f565b9050919050565b614fca81614faf565b82525050565b6000614fdc8383614fc1565b60208301905092915050565b6000602082019050919050565b600061500082614f63565b61500a8185614f6e565b935061501583614f7f565b8060005b8381101561504657815161502d8882614fd0565b975061503883614fe8565b925050600181019050615019565b5085935050505092915050565b6000602082019050818103600083015261506d8184614ff5565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156150af578082015181840152602081019050615094565b60008484015250505050565b6000601f19601f8301169050919050565b60006150d782615075565b6150e18185615080565b93506150f1818560208601615091565b6150fa816150bb565b840191505092915050565b6000602082019050818103600083015261511f81846150cc565b905092915050565b61513081614faf565b811461513b57600080fd5b50565b60008135905061514d81615127565b92915050565b6000819050919050565b61516681615153565b811461517157600080fd5b50565b6000813590506151838161515d565b92915050565b600080604083850312156151a05761519f614e9e565b5b60006151ae8582860161513e565b92505060206151bf85828601615174565b9150509250929050565b6000602082840312156151df576151de614e9e565b5b60006151ed8482850161513e565b91505092915050565b6151ff81615153565b82525050565b600060208201905061521a60008301846151f6565b92915050565b60008060006060848603121561523957615238614e9e565b5b60006152478682870161513e565b93505060206152588682870161513e565b925050604061526986828701615174565b9150509250925092565b6000819050919050565b61528681615273565b811461529157600080fd5b50565b6000813590506152a38161527d565b92915050565b6000602082840312156152bf576152be614e9e565b5b60006152cd84828501615294565b91505092915050565b6152df81615273565b82525050565b60006020820190506152fa60008301846152d6565b92915050565b6000806040838503121561531757615316614e9e565b5b600061532585828601615294565b92505060206153368582860161513e565b9150509250929050565b600060ff82169050919050565b61535681615340565b82525050565b6000602082019050615371600083018461534d565b92915050565b600061538282614faf565b9050919050565b61539281615377565b811461539d57600080fd5b50565b6000813590506153af81615389565b92915050565b6000602082840312156153cb576153ca614e9e565b5b60006153d9848285016153a0565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61541f826150bb565b810181811067ffffffffffffffff8211171561543e5761543d6153e7565b5b80604052505050565b6000615451614e94565b905061545d8282615416565b919050565b600067ffffffffffffffff82111561547d5761547c6153e7565b5b602082029050602081019050919050565b600080fd5b60006154a66154a184615462565b615447565b905080838252602082019050602084028301858111156154c9576154c861548e565b5b835b818110156154f257806154de888261513e565b8452602084019350506020810190506154cb565b5050509392505050565b600082601f830112615511576155106153e2565b5b8135615521848260208601615493565b91505092915050565b6000602082840312156155405761553f614e9e565b5b600082013567ffffffffffffffff81111561555e5761555d614ea3565b5b61556a848285016154fc565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155a881615153565b82525050565b60006155ba838361559f565b60208301905092915050565b6000602082019050919050565b60006155de82615573565b6155e8818561557e565b93506155f38361558f565b8060005b8381101561562457815161560b88826155ae565b9750615616836155c6565b9250506001810190506155f7565b5085935050505092915050565b6000602082019050818103600083015261564b81846155d3565b905092915050565b600080fd5b600067ffffffffffffffff821115615673576156726153e7565b5b61567c826150bb565b9050602081019050919050565b82818337600083830152505050565b60006156ab6156a684615658565b615447565b9050828152602081018484840111156156c7576156c6615653565b5b6156d2848285615689565b509392505050565b600082601f8301126156ef576156ee6153e2565b5b81356156ff848260208601615698565b91505092915050565b600080600080600060a0868803121561572457615723614e9e565b5b60006157328882890161513e565b95505060206157438882890161513e565b945050604061575488828901615174565b935050606086013567ffffffffffffffff81111561577557615774614ea3565b5b615781888289016156da565b925050608086013567ffffffffffffffff8111156157a2576157a1614ea3565b5b6157ae888289016156da565b9150509295509295909350565b600080604083850312156157d2576157d1614e9e565b5b60006157e085828601615294565b92505060206157f185828601615174565b9150509250929050565b61580481614faf565b82525050565b600060208201905061581f60008301846157fb565b92915050565b600080fd5b60008083601f8401126158405761583f6153e2565b5b8235905067ffffffffffffffff81111561585d5761585c615825565b5b6020830191508360208202830111156158795761587861548e565b5b9250929050565b60008083601f840112615896576158956153e2565b5b8235905067ffffffffffffffff8111156158b3576158b2615825565b5b6020830191508360208202830111156158cf576158ce61548e565b5b9250929050565b6000806000806000806000806080898b0312156158f6576158f5614e9e565b5b600089013567ffffffffffffffff81111561591457615913614ea3565b5b6159208b828c0161582a565b9850985050602089013567ffffffffffffffff81111561594357615942614ea3565b5b61594f8b828c0161582a565b9650965050604089013567ffffffffffffffff81111561597257615971614ea3565b5b61597e8b828c01615880565b9450945050606089013567ffffffffffffffff8111156159a1576159a0614ea3565b5b6159ad8b828c01615880565b92509250509295985092959890939650565b6000806000606084860312156159d8576159d7614e9e565b5b60006159e68682870161513e565b93505060206159f786828701615174565b925050604084013567ffffffffffffffff811115615a1857615a17614ea3565b5b615a24868287016156da565b9150509250925092565b60008060208385031215615a4557615a44614e9e565b5b600083013567ffffffffffffffff811115615a6357615a62614ea3565b5b615a6f8582860161582a565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615ab081614f2d565b82525050565b61020082016000820151615acd600085018261559f565b506020820151615ae06020850182614fc1565b506040820151615af3604085018261559f565b506060820151615b06606085018261559f565b506080820151615b19608085018261559f565b5060a0820151615b2c60a085018261559f565b5060c0820151615b3f60c085018261559f565b5060e0820151615b5260e085018261559f565b50610100820151615b6761010085018261559f565b50610120820151615b7c61012085018261559f565b50610140820151615b9161014085018261559f565b50610160820151615ba661016085018261559f565b50610180820151615bbb61018085018261559f565b506101a0820151615bd06101a085018261559f565b506101c0820151615be56101c085018261559f565b506101e0820151615bfa6101e0850182615aa7565b50505050565b6000615c0c8383615ab6565b6102008301905092915050565b6000602082019050919050565b6000615c3182615a7b565b615c3b8185615a86565b9350615c4683615a97565b8060005b83811015615c77578151615c5e8882615c00565b9750615c6983615c19565b925050600181019050615c4a565b5085935050505092915050565b60006020820190508181036000830152615c9e8184615c26565b905092915050565b61020082016000820151615cbd600085018261559f565b506020820151615cd06020850182614fc1565b506040820151615ce3604085018261559f565b506060820151615cf6606085018261559f565b506080820151615d09608085018261559f565b5060a0820151615d1c60a085018261559f565b5060c0820151615d2f60c085018261559f565b5060e0820151615d4260e085018261559f565b50610100820151615d5761010085018261559f565b50610120820151615d6c61012085018261559f565b50610140820151615d8161014085018261559f565b50610160820151615d9661016085018261559f565b50610180820151615dab61018085018261559f565b506101a0820151615dc06101a085018261559f565b506101c0820151615dd56101c085018261559f565b506101e0820151615dea6101e0850182615aa7565b50505050565b600061020082019050615e066000830184615ca6565b92915050565b60008083601f840112615e2257615e216153e2565b5b8235905067ffffffffffffffff811115615e3f57615e3e615825565b5b602083019150836020820283011115615e5b57615e5a61548e565b5b9250929050565b615e6b81615340565b8114615e7657600080fd5b50565b600081359050615e8881615e62565b92915050565b60008060008060008060008060c0898b031215615eae57615ead614e9e565b5b600089013567ffffffffffffffff811115615ecc57615ecb614ea3565b5b615ed88b828c01615880565b9850985050602089013567ffffffffffffffff811115615efb57615efa614ea3565b5b615f078b828c01615e0c565b96509650506040615f1a8b828c01615174565b9450506060615f2b8b828c01615e79565b9350506080615f3c8b828c01615294565b92505060a0615f4d8b828c01615294565b9150509295985092959890939650565b60008060408385031215615f7457615f73614e9e565b5b6000615f828582860161513e565b9250506020615f938582860161513e565b9150509250929050565b60008060008060808587031215615fb757615fb6614e9e565b5b6000615fc58782880161513e565b9450506020615fd687828801615174565b935050604085013567ffffffffffffffff811115615ff757615ff6614ea3565b5b616003878288016156da565b925050606085013567ffffffffffffffff81111561602457616023614ea3565b5b616030878288016156da565b91505092959194509250565b6000806040838503121561605357616052614e9e565b5b600061606185828601615174565b925050602083013567ffffffffffffffff81111561608257616081614ea3565b5b61608e858286016156da565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806160df57607f821691505b6020821081036160f2576160f1616098565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061613282615153565b915061613d83615153565b9250828201905080821115616155576161546160f8565b5b92915050565b600060408201905061617060008301856157fb565b61617d60208301846151f6565b9392505050565b61618d81614f2d565b811461619857600080fd5b50565b6000815190506161aa81616184565b92915050565b6000602082840312156161c6576161c5614e9e565b5b60006161d48482850161619b565b91505092915050565b7f6c4e4f52493a205472616e7366657220746f20756e6465726c79696e6720617360008201527f736574206661696c656400000000000000000000000000000000000000000000602082015250565b6000616239602a83615080565b9150616244826161dd565b604082019050919050565b600060208201905081810360008301526162688161622c565b9050919050565b7f6c4e4f52493a207472616e7366657246726f6d2064697361626c656400000000600082015250565b60006162a5601c83615080565b91506162b08261626f565b602082019050919050565b600060208201905081810360008301526162d481616298565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000616337602f83615080565b9150616342826162db565b604082019050919050565b600060208201905081810360008301526163668161632a565b9050919050565b7f6c4e4f52493a207570646174696e6720756e6465726c79696e6720616464726560008201527f737320746f206578697374696e67206164647265737300000000000000000000602082015250565b60006163c9603683615080565b91506163d48261636d565b604082019050919050565b600060208201905081810360008301526163f8816163bc565b9050919050565b600060408201905061641460008301856157fb565b61642160208301846157fb565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061646282615153565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203616494576164936160f8565b5b600182019050919050565b7f6c4e4f52493a206f70657261746f7253656e642064697361626c656400000000600082015250565b60006164d5601c83615080565b91506164e08261649f565b602082019050919050565b60006020820190508181036000830152616504816164c8565b9050919050565b7f6c4e4f52493a2066726f6d4163636f756e747320616e6420746f4163636f756e60008201527f7473206c656e677468206d69736d617463680000000000000000000000000000602082015250565b6000616567603283615080565b91506165728261650b565b604082019050919050565b600060208201905081810360008301526165968161655a565b9050919050565b7f6c4e4f52493a20746f4163636f756e747320616e6420617454696d6573206c6560008201527f6e677468206d69736d6174636800000000000000000000000000000000000000602082015250565b60006165f9602d83615080565b91506166048261659d565b604082019050919050565b60006020820190508181036000830152616628816165ec565b9050919050565b7f6c4e4f52493a20617454696d657320616e6420616d6f756e7473206c656e677460008201527f68206d69736d6174636800000000000000000000000000000000000000000000602082015250565b600061668b602a83615080565b91506166968261662f565b604082019050919050565b600060208201905081810360008301526166ba8161667e565b9050919050565b7f6c4e4f52493a2073656e642064697361626c6564000000000000000000000000600082015250565b60006166f7601483615080565b9150616702826166c1565b602082019050919050565b60006020820190508181036000830152616726816166ea565b9050919050565b600061673882615153565b915061674383615153565b925082820390508181111561675b5761675a6160f8565b5b92915050565b7f6c4e4f52493a207472616e736665722064697361626c65640000000000000000600082015250565b6000616797601883615080565b91506167a282616761565b602082019050919050565b600060208201905081810360008301526167c68161678a565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000616829602e83615080565b9150616834826167cd565b604082019050919050565b600060208201905081810360008301526168588161681c565b9050919050565b6000819050919050565b6000819050919050565b600061688e6168896168848461685f565b616869565b615340565b9050919050565b61689e81616873565b82525050565b60006020820190506168b96000830184616895565b92915050565b7f6c4e4f52493a205265717569726573206f6e6520616d6f756e7420706572206760008201527f72616e742064657461696c000000000000000000000000000000000000000000602082015250565b600061691b602b83615080565b9150616926826168bf565b604082019050919050565b6000602082019050818103600083015261694a8161690e565b9050919050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261697d5761697c616951565b5b80840192508235915067ffffffffffffffff82111561699f5761699e616956565b5b6020830192506001820236038313156169bb576169ba61695b565b5b509250929050565b60006169ce82615340565b915060ff82036169e1576169e06160f8565b5b600182019050919050565b600060e082019050616a01600083018a6157fb565b616a0e60208301896157fb565b616a1b60408301886151f6565b616a2860608301876151f6565b616a35608083018661534d565b616a4260a08301856152d6565b616a4f60c08301846152d6565b98975050505050505050565b6000606082019050616a7060008301866157fb565b616a7d60208301856157fb565b616a8a60408301846151f6565b949350505050565b7f6c4e4f52493a206275726e696e67206e6f7420737570706f7274656400000000600082015250565b6000616ac8601c83615080565b9150616ad382616a92565b602082019050919050565b60006020820190508181036000830152616af781616abb565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000616b34601083615080565b9150616b3f82616afe565b602082019050919050565b60006020820190508181036000830152616b6381616b27565b9050919050565b7f6c4e4f52493a206f70657261746f7220616374696f6e732064697361626c6564600082015250565b6000616ba0602083615080565b9150616bab82616b6a565b602082019050919050565b60006020820190508181036000830152616bcf81616b93565b9050919050565b600081519050616be58161515d565b92915050565b600060208284031215616c0157616c00614e9e565b5b6000616c0f84828501616bd6565b91505092915050565b7f4552433737373a206275726e2066726f6d20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000616c74602283615080565b9150616c7f82616c18565b604082019050919050565b60006020820190508181036000830152616ca381616c67565b9050919050565b7f4552433737373a206275726e20616d6f756e7420657863656564732062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000616d06602383615080565b9150616d1182616caa565b604082019050919050565b60006020820190508181036000830152616d3581616cf9565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000616d6382616d3c565b616d6d8185616d47565b9350616d7d818560208601615091565b616d86816150bb565b840191505092915050565b6000606082019050616da660008301866151f6565b8181036020830152616db88185616d58565b90508181036040830152616dcc8184616d58565b9050949350505050565b7f4552433737373a20617574686f72697a696e672073656c66206173206f70657260008201527f61746f7200000000000000000000000000000000000000000000000000000000602082015250565b6000616e32602483615080565b9150616e3d82616dd6565b604082019050919050565b60006020820190508181036000830152616e6181616e25565b9050919050565b7f6c4e4f52493a204d75737420737065636966792061207265766f636174696f6e60008201527f2074696d65206f7220616e20616d6f756e74206e6f7420626f74680000000000602082015250565b6000616ec4603b83615080565b9150616ecf82616e68565b604082019050919050565b60006020820190508181036000830152616ef381616eb7565b9050919050565b7f6c4e4f52493a206e6f206772616e742065786973747300000000000000000000600082015250565b6000616f30601683615080565b9150616f3b82616efa565b602082019050919050565b60006020820190508181036000830152616f5f81616f23565b9050919050565b7f6c4e4f52493a206e6f2076657374696e67207363686564756c6520666f72207460008201527f686973206772616e740000000000000000000000000000000000000000000000602082015250565b6000616fc2602983615080565b9150616fcd82616f66565b604082019050919050565b60006020820190508181036000830152616ff181616fb5565b9050919050565b7f6c4e4f52493a205265766f636174696f6e2063616e6e6f7420626520696e207460008201527f6865207061737400000000000000000000000000000000000000000000000000602082015250565b6000617054602783615080565b915061705f82616ff8565b604082019050919050565b6000602082019050818103600083015261708381617047565b9050919050565b7f6c4e4f52493a20746f6b656e7320616c72656164792076657374656400000000600082015250565b60006170c0601c83615080565b91506170cb8261708a565b602082019050919050565b600060208201905081810360008301526170ef816170b3565b9050919050565b7f6c4e4f52493a20746f6f2066657720756e76657374656420746f6b656e730000600082015250565b600061712c601e83615080565b9150617137826170f6565b602082019050919050565b6000602082019050818103600083015261715b8161711f565b9050919050565b7f6c4e4f52493a207472616e73666572206f6620756e6465726c79696e6720617360008201527f736574206661696c65642e000000000000000000000000000000000000000000602082015250565b60006171be602b83615080565b91506171c982617162565b604082019050919050565b600060208201905081810360008301526171ed816171b1565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000617250602b83615080565b915061725b826171f4565b604082019050919050565b6000602082019050818103600083015261727f81617243565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026172e87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826172ab565b6172f286836172ab565b95508019841693508086168417925050509392505050565b600061732561732061731b84615153565b616869565b615153565b9050919050565b6000819050919050565b61733f8361730a565b61735361734b8261732c565b8484546172b8565b825550505050565b600090565b61736861735b565b617373818484617336565b505050565b5b818110156173975761738c600082617360565b600181019050617379565b5050565b601f8211156173dc576173ad81617286565b6173b68461729b565b810160208510156173c5578190505b6173d96173d18561729b565b830182617378565b50505b505050565b600082821c905092915050565b60006173ff600019846008026173e1565b1980831691505092915050565b600061741883836173ee565b9150826002028217905092915050565b61743182615075565b67ffffffffffffffff81111561744a576174496153e7565b5b61745482546160c7565b61745f82828561739b565b600060209050601f8311600181146174925760008415617480578287015190505b61748a858261740c565b8655506174f2565b601f1984166174a086617286565b60005b828110156174c8578489015182556001820191506020850194506020810190506174a3565b868310156174e557848901516174e1601f8916826173ee565b8355505b6001600288020188555050505b505050505050565b600060608201905061750f60008301866157fb565b61751c60208301856152d6565b61752960408301846157fb565b949350505050565b600080fd5b60008151905061754581615127565b92915050565b6000610140828403121561756257617561617531565b5b61756d610140615447565b9050600061757d84828501617536565b600083015250602061759184828501616bd6565b60208301525060406175a584828501616bd6565b60408301525060606175b984828501616bd6565b60608301525060806175cd84828501616bd6565b60808301525060a06175e184828501616bd6565b60a08301525060c06175f584828501616bd6565b60c08301525060e061760984828501616bd6565b60e08301525061010061761e84828501616bd6565b6101008301525061012061763484828501616bd6565b6101208301525092915050565b6000610140828403121561765857617657614e9e565b5b60006176668482850161754b565b91505092915050565b7f6c4e4f52493a20526563697069656e742063616e6e6f74206265207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b60006176cb602783615080565b91506176d68261766f565b604082019050919050565b600060208201905081810360008301526176fa816176be565b9050919050565b7f6c4e4f52493a20526563697069656e742063616e6e6f74206265206772616e7460008201527f2061646d696e0000000000000000000000000000000000000000000000000000602082015250565b600061775d602683615080565b915061776882617701565b604082019050919050565b6000602082019050818103600083015261778c81617750565b9050919050565b7f6c4e4f52493a20756e6c6f636b456e6454696d652063616e6e6f74206265206260008201527f65666f726520737461727454696d650000000000000000000000000000000000602082015250565b60006177ef602f83615080565b91506177fa82617793565b604082019050919050565b6000602082019050818103600083015261781e816177e2565b9050919050565b7f6c4e4f52493a20756e6c6f636b456e6454696d652063616e6e6f74206265206960008201527f6e20746865207061737400000000000000000000000000000000000000000000602082015250565b6000617881602a83615080565b915061788c82617825565b604082019050919050565b600060208201905081810360008301526178b081617874565b9050919050565b7f6c4e4f52493a204772616e7420616c7265616479206578697374730000000000600082015250565b60006178ed601b83615080565b91506178f8826178b7565b602082019050919050565b6000602082019050818103600083015261791c816178e0565b9050919050565b7f6c4e4f52493a20756e6c6f636b20636c696666203e207665737420636c696666600082015250565b6000617959602083615080565b915061796482617923565b602082019050919050565b600060208201905081810360008301526179888161794c565b9050919050565b60006040820190506179a460008301856151f6565b6179b160208301846151f6565b9392505050565b7f4552433737373a207265766f6b696e672073656c66206173206f70657261746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000617a14602183615080565b9150617a1f826179b8565b604082019050919050565b60006020820190508181036000830152617a4381617a07565b9050919050565b7f4552433737373a20617070726f76652066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000617aa6602583615080565b9150617ab182617a4a565b604082019050919050565b60006020820190508181036000830152617ad581617a99565b9050919050565b7f4552433737373a20617070726f766520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000617b38602383615080565b9150617b4382617adc565b604082019050919050565b60006020820190508181036000830152617b6781617b2b565b9050919050565b7f6c4e4f52493a20696e73756666696369656e742062616c616e63650000000000600082015250565b6000617ba4601b83615080565b9150617baf82617b6e565b602082019050919050565b60006020820190508181036000830152617bd381617b97565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000617c1b601783617bda565b9150617c2682617be5565b601782019050919050565b6000617c3c82615075565b617c468185617bda565b9350617c56818560208601615091565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000617c98601183617bda565b9150617ca382617c62565b601182019050919050565b6000617cb982617c0e565b9150617cc58285617c31565b9150617cd082617c8b565b9150617cdc8284617c31565b91508190509392505050565b7f6c4e4f52493a2043616e6e6f742061737369676e20726f6c6520746f2061206760008201527f72616e7420686f6c646572206164647265737300000000000000000000000000602082015250565b6000617d44603383615080565b9150617d4f82617ce8565b604082019050919050565b60006020820190508181036000830152617d7381617d37565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000617db0601483615080565b9150617dbb82617d7a565b602082019050919050565b60006020820190508181036000830152617ddf81617da3565b9050919050565b7f4c6f636b65644e4f52494c69623a20436c696666206265666f7265207363686560008201527f64756c6520737461727400000000000000000000000000000000000000000000602082015250565b6000617e42602a83615080565b9150617e4d82617de6565b604082019050919050565b60006020820190508181036000830152617e7181617e35565b9050919050565b7f4c6f636b65644e4f52494c69623a20436c69666673206e6f74206368726f6e6f60008201527f6c6f676963616c00000000000000000000000000000000000000000000000000602082015250565b6000617ed4602783615080565b9150617edf82617e78565b604082019050919050565b60006020820190508181036000830152617f0381617ec7565b9050919050565b7f4c6f636b65644e4f52494c69623a20436c696666732063616e6e6f7420656e6460008201527f206166746572207363686564756c650000000000000000000000000000000000602082015250565b6000617f66602f83615080565b9150617f7182617f0a565b604082019050919050565b60006020820190508181036000830152617f9581617f59565b9050919050565b7f4c6f636b65644e4f52494c69623a20436c69666620616d6f756e74732065786360008201527f65656420746f74616c0000000000000000000000000000000000000000000000602082015250565b6000617ff8602983615080565b915061800382617f9c565b604082019050919050565b6000602082019050818103600083015261802781617feb565b9050919050565b7f4552433737373a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000618064602083615080565b915061806f8261802e565b602082019050919050565b6000602082019050818103600083015261809381618057565b9050919050565b60006180a582615153565b91506180b083615153565b92508282026180be81615153565b915082820484148315176180d5576180d46160f8565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061811682615153565b915061812183615153565b925082618131576181306180dc565b5b828204905092915050565b600061814782615153565b91506000820361815a576181596160f8565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061819b602083615080565b91506181a682618165565b602082019050919050565b600060208201905081810360008301526181ca8161818e565b9050919050565b60006040820190506181e660008301856157fb565b6181f360208301846152d6565b9392505050565b6000602082840312156182105761820f614e9e565b5b600061821e84828501617536565b91505092915050565b600060c08201905061823c60008301896157fb565b61824960208301886157fb565b61825660408301876157fb565b61826360608301866151f6565b81810360808301526182758185616d58565b905081810360a08301526182898184616d58565b9050979650505050505050565b7f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460008201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60208201527f6b656e73526563697069656e7400000000000000000000000000000000000000604082015250565b6000618318604d83615080565b915061832382618296565b606082019050919050565b600060208201905081810360008301526183478161830b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122012e6ab3c57ff06bf571848a6287008f8e6d405cada625fa2accdb904338b601b64736f6c63430008110033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102045760003560e01c806301ffc9a71461020957806306e485381461023957806306fdde0314610257578063095ea7b3146102755780630e2d1a2a146102a557806318160ddd146102d5578063205c2878146102f357806323b872dd14610323578063248a9ca3146103535780632f2ff15d14610383578063313ce5671461039f57806336568abe146103bd5780633f4ba83a146103d957806342f82260146103e3578063458c738e146103ff578063521189a91461042f578063556f0dc71461044d5780635c975abb1461046b57806362ad1b8314610489578063633d9be0146104a557806370a08231146104c35780638456cb59146104f357806384955c88146104fd5780639010d07c1461052d57806391d148541461055d578063959b8c3f1461058d57806395d89b41146105a95780639952d6e4146105c75780639bd9bbc6146105e35780639e3f3cac146105ff5780639f916c211461062f578063a217fddf1461065f578063a9059cbb1461067d578063bf31dbf4146106ad578063c4d66de8146106dd578063c884aa58146106f9578063ca15c87314610715578063d547741f14610745578063d95b637114610761578063dd62ed3e14610791578063e63ab1e9146107c1578063fad8b32a146107df578063fc673c4f146107fb578063fe9d930314610817575b600080fd5b610223600480360381019061021e9190614f00565b610833565b6040516102309190614f48565b60405180910390f35b6102416108ad565b60405161024e9190615053565b60405180910390f35b61025f61093b565b60405161026c9190615105565b60405180910390f35b61028f600480360381019061028a9190615189565b6109cd565b60405161029c9190614f48565b60405180910390f35b6102bf60048036038101906102ba91906151c9565b6109f3565b6040516102cc9190615205565b60405180910390f35b6102dd610a06565b6040516102ea9190615205565b60405180910390f35b61030d60048036038101906103089190615189565b610a10565b60405161031a9190614f48565b60405180910390f35b61033d60048036038101906103389190615220565b610c0e565b60405161034a9190614f48565b60405180910390f35b61036d600480360381019061036891906152a9565b610c4b565b60405161037a91906152e5565b60405180910390f35b61039d60048036038101906103989190615300565b610c6b565b005b6103a7610c8c565b6040516103b4919061535c565b60405180910390f35b6103d760048036038101906103d29190615300565b610c95565b005b6103e1610d18565b005b6103fd60048036038101906103f891906153b5565b610d4d565b005b6104196004803603810190610414919061552a565b610e78565b6040516104269190615631565b60405180910390f35b610437610f31565b60405161044491906152e5565b60405180910390f35b610455610f55565b6040516104629190615205565b60405180910390f35b610473610f5e565b6040516104809190614f48565b60405180910390f35b6104a3600480360381019061049e9190615708565b610f75565b005b6104ad610fb0565b6040516104ba91906152e5565b60405180910390f35b6104dd60048036038101906104d891906151c9565b610fd4565b6040516104ea9190615205565b60405180910390f35b6104fb61101d565b005b610517600480360381019061051291906151c9565b611052565b6040516105249190615205565b60405180910390f35b610547600480360381019061054291906157bb565b611065565b604051610554919061580a565b60405180910390f35b61057760048036038101906105729190615300565b611094565b6040516105849190614f48565b60405180910390f35b6105a760048036038101906105a291906151c9565b6110ff565b005b6105b1611116565b6040516105be9190615105565b60405180910390f35b6105e160048036038101906105dc91906158d6565b6111a8565b005b6105fd60048036038101906105f891906159bf565b61136b565b005b610619600480360381019061061491906151c9565b6113a6565b6040516106269190615205565b60405180910390f35b61064960048036038101906106449190615a2e565b611407565b6040516106569190615c84565b60405180910390f35b6106676114de565b60405161067491906152e5565b60405180910390f35b61069760048036038101906106929190615189565b6114e5565b6040516106a49190614f48565b60405180910390f35b6106c760048036038101906106c291906151c9565b611522565b6040516106d49190615df0565b60405180910390f35b6106f760048036038101906106f291906153b5565b6116d7565b005b610713600480360381019061070e9190615e8e565b6119cb565b005b61072f600480360381019061072a91906152a9565b611cff565b60405161073c9190615205565b60405180910390f35b61075f600480360381019061075a9190615300565b611d23565b005b61077b60048036038101906107769190615f5d565b611d44565b6040516107889190614f48565b60405180910390f35b6107ab60048036038101906107a69190615f5d565b611ef5565b6040516107b89190615205565b60405180910390f35b6107c9611f7c565b6040516107d691906152e5565b60405180910390f35b6107f960048036038101906107f491906151c9565b611fa0565b005b61081560048036038101906108109190615f9d565b611fb7565b005b610831600480360381019061082c919061603c565b611ff2565b005b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108a657506108a58261202d565b5b9050919050565b6060603780548060200260200160405190810160405280929190818152602001828054801561093157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116108e7575b5050505050905090565b60606035805461094a906160c7565b80601f0160208091040260200160405190810160405280929190818152602001828054610976906160c7565b80156109c35780601f10610998576101008083540402835291602001916109c3565b820191906000526020600020905b8154815290600101906020018083116109a657829003601f168201915b5050505050905090565b60006109d76120a7565b6109e183836120f1565b6109eb838361212c565b905092915050565b60006109ff824261214f565b9050919050565b6000603454905090565b6000610a1a6120a7565b600061015f6000610a29612293565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610a96610a70612293565b84604051806020016040528060008152506040518060200160405280600081525061229b565b8281600d016000828254610aaa9190616127565b9250508190555061016060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401610b0f92919061615b565b6020604051808303816000875af1158015610b2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5291906161b0565b15610bcd578373ffffffffffffffffffffffffffffffffffffffff16610b76612293565b73ffffffffffffffffffffffffffffffffffffffff167fa86305abc2db271df4609aa86a8d044bc11fb36939841bfdad6c1ab2b26e947185604051610bbb9190615205565b60405180910390a36001915050610c08565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bff9061624f565b60405180910390fd5b92915050565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c42906162bb565b60405180910390fd5b600060c96000838152602001908152602001600020600101549050919050565b610c7482610c4b565b610c7d816124e0565b610c8783836124f4565b505050565b60006012905090565b610c9d612293565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d019061634d565b60405180910390fd5b610d14828261250c565b5050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d42816124e0565b610d4a612524565b50565b610d556120a7565b6000801b610d62816124e0565b600061016060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610def906163df565b60405180910390fd5b8261016060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1fc9b2467a9c193cab5b6f03eefe74f1e3140becc7ff93728101335e77fef6798184604051610e6b9291906163ff565b60405180910390a1505050565b60606000825167ffffffffffffffff811115610e9757610e966153e7565b5b604051908082528060200260200182016040528015610ec55781602001602082028036833780820191505090505b50905060005b8351811015610f2757610ef7848281518110610eea57610ee9616428565b5b6020026020010151610fd4565b828281518110610f0a57610f09616428565b5b60200260200101818152505080610f2090616457565b9050610ecb565b5080915050919050565b7fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b81565b60006001905090565b6000606560009054906101000a900460ff16905090565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa7906164eb565b60405180910390fd5b7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b881565b6000603360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a611047816124e0565b61104f612587565b50565b600061105e82426125ea565b9050919050565b600061108c8260fb600086815260200190815260200160002061274090919063ffffffff16565b905092915050565b600060c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61110a8160006120f1565b6111138161275a565b50565b606060368054611125906160c7565b80601f0160208091040260200160405190810160405280929190818152602001828054611151906160c7565b801561119e5780601f106111735761010080835404028352916020019161119e565b820191906000526020600020905b81548152906001019060200180831161118157829003601f168201915b5050505050905090565b6111b06120a7565b7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b86111da816124e0565b868690508989905014611222576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112199061657d565b60405180910390fd5b84849050878790501461126a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112619061660f565b60405180910390fd5b8282905085859050146112b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a9906166a1565b60405180910390fd5b60005b8989905081101561135f5761134c8a8a838181106112d6576112d5616428565b5b90506020020160208101906112eb91906151c9565b8989848181106112fe576112fd616428565b5b905060200201602081019061131391906151c9565b88888581811061132657611325616428565b5b905060200201358787868181106113405761133f616428565b5b905060200201356129ba565b808061135790616457565b9150506112b5565b50505050505050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139d9061670d565b60405180910390fd5b60008061015f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600c015481600e01546113ff919061672d565b915050919050565b606060008383905067ffffffffffffffff811115611428576114276153e7565b5b60405190808252806020026020018201604052801561146157816020015b61144e614d58565b8152602001906001900390816114465790505b50905060005b848490508110156114d3576114a285858381811061148857611487616428565b5b905060200201602081019061149d91906151c9565b611522565b8282815181106114b5576114b4616428565b5b602002602001018190525080806114cb90616457565b915050611467565b508091505092915050565b6000801b81565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611519906167ad565b60405180910390fd5b61152a614d58565b600061015f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060405180610200016040528082600c015481526020018473ffffffffffffffffffffffffffffffffffffffff16815260200182600601600001548152602001826000016001015481526020018260060160010154815260200182600601600301600080815260200190815260200160002060000154815260200182600601600301600060018152602001908152602001600020600001548152602001826000016003016000808152602001908152602001600020600101548152602001826000016003016000600181526020019081526020016000206001015481526020018260060160030160008081526020019081526020016000206001015481526020018260060160030160006001815260200190815260200160002060010154815260200182600d0154815260200182600e01548152602001826010015481526020018260110154815260200182600f0160009054906101000a900460ff161515815250915050919050565b60008060019054906101000a900460ff161590508080156117085750600160008054906101000a900460ff1660ff16105b80611735575061171730612db0565b1580156117345750600160008054906101000a900460ff1660ff16145b5b611774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176b9061683f565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156117b1576001600060016101000a81548160ff0219169083151502179055505b6000600167ffffffffffffffff8111156117ce576117cd6153e7565b5b6040519080825280602002602001820160405280156117fc5781602001602082028036833780820191505090505b509050611807612293565b8160008151811061181b5761181a616428565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061185d612dd3565b611865612e24565b61186d612e75565b611875612ec6565b61187d612f17565b611885612f83565b6118fa6040518060400160405280600b81526020017f4c6f636b6564204e4f52490000000000000000000000000000000000000000008152506040518060400160405280600581526020017f6c4e4f524900000000000000000000000000000000000000000000000000000081525083613019565b8261016060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061196d7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b8611968612293565b6124f4565b5080156119c75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516119be91906168a4565b60405180910390a15b5050565b6119d36120a7565b7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b86119fd816124e0565b868690508989905014611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c90616931565b60405180910390fd5b6000805b8a8a90508160ff161015611b6f578a8a8260ff16818110611a6d57611a6c616428565b5b9050602002013582611a7f9190616127565b91506000611b138c8c8460ff16818110611a9c57611a9b616428565b5b905060200201358b8b8560ff16818110611ab957611ab8616428565b5b9050602002810190611acb9190616960565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061327c565b9050611b5b818d8d8560ff16818110611b2f57611b2e616428565b5b9050602002013560405180602001604052806000815250604051806020016040528060008152506136ce565b508080611b67906169c3565b915050611a49565b507f1c033d59d233682f5cd21bc9a14d4934157a93bb4e87b1aa1f3ac4394af8a81481604051611b9f9190615205565b60405180910390a161016060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d505accf611bee612293565b30848a8a8a8a6040518863ffffffff1660e01b8152600401611c1697969594939291906169ec565b600060405180830381600087803b158015611c3057600080fd5b505af1158015611c44573d6000803e3d6000fd5b5050505061016060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd611c8f612293565b30846040518463ffffffff1660e01b8152600401611caf93929190616a5b565b6020604051808303816000875af1158015611cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf291906161b0565b5050505050505050505050565b6000611d1c60fb60008481526020019081526020016000206136e2565b9050919050565b611d2c82610c4b565b611d35816124e0565b611d3f838361250c565b505050565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611e5c5750603860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e5b5750603a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b80611eed5750603960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000603b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b611fab8160006120f1565b611fb4816136f7565b50565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe990616ade565b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202490616ade565b60405180910390fd5b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806120a0575061209f82613957565b5b9050919050565b6120af610f5e565b156120ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e690616b4a565b60405180910390fd5b565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212390616bb6565b60405180910390fd5b600080612137612293565b90506121448185856139c1565b600191505092915050565b60008061015f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060003073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016121cf919061580a565b602060405180830381865afa1580156121ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122109190616beb565b905081600f0160009054906101000a900460ff16156122885761223285613b8a565b156122705781600d015461225f6122558685600001613bfc90919063ffffffff16565b84600c0154613c24565b612269919061672d565b9050612287565b81600d015482600c0154612284919061672d565b90505b5b809250505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361230a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230190616c8a565b60405180910390fd5b6000612314612293565b90506123238186600087613c3d565b6000603360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050848110156123aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a190616d1c565b60405180910390fd5b848103603360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508460346000828254612402919061672d565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a409887878760405161246a93929190616d91565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516124d09190615205565b60405180910390a3505050505050565b6124f1816124ec612293565b613de4565b50565b6124fe8282613e69565b6125088282613f30565b5050565b6125168282613e69565b6125208282613f64565b5050565b61252c613f98565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612570612293565b60405161257d919061580a565b60405180910390a1565b61258f6120a7565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586125d3612293565b6040516125e0919061580a565b60405180910390a1565b60008061015f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060003073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161266a919061580a565b602060405180830381865afa158015612687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ab9190616beb565b905081600f0160009054906101000a900460ff16156127355760006126cf86613b8a565b6126dd5782600c01546126f4565b6126f38584600001613bfc90919063ffffffff16565b5b905082600d015461272761271d836127188988600601613bfc90919063ffffffff16565b613c24565b85600c0154613c24565b612731919061672d565b9150505b809250505092915050565b600061274f8360000183613fe1565b60001c905092915050565b8073ffffffffffffffffffffffffffffffffffffffff16612779612293565b73ffffffffffffffffffffffffffffffffffffffff16036127cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c690616e48565b60405180910390fd5b603860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128b957603a600061282d612293565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055612956565b6001603960006128c7612293565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b61295e612293565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b6000821480156129ca5750600081115b806129e157506000821180156129e05750600081145b5b612a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1790616eda565b60405180910390fd5b600061015f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600f0160009054906101000a900460ff16612ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aac90616f46565b60405180910390fd5b612abe85613b8a565b612afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af490616fd8565b60405180910390fd5b60008084148015612b0e5750600083115b612b185783612b1a565b425b905042811015612b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b569061706a565b60405180910390fd5b6000612b778284600001613bfc90919063ffffffff16565b905082600c01548110612bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb6906170d6565b60405180910390fd5b60008184600c0154612bd1919061672d565b9050600080861115612c285781861115612c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1790617142565b60405180910390fd5b859050612c2c565b8190505b8085600c0154612c3c919061672d565b85600c0181905550838560100181905550808560110181905550612c808982604051806020016040528060008152506040518060200160405280600081525061229b565b61016060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb89836040518363ffffffff1660e01b8152600401612cde92919061615b565b6020604051808303816000875af1158015612cfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2191906161b0565b612d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d57906171d4565b60405180910390fd5b808973ffffffffffffffffffffffffffffffffffffffff16857f0bbe3f9ae306d75ae6df08cd4a79ac5c6eae93ffae7d7e52f2859bf27592519d60405160405180910390a4505050505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1990617266565b60405180910390fd5b565b600060019054906101000a900460ff16612e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6a90617266565b60405180910390fd5b565b600060019054906101000a900460ff16612ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebb90617266565b60405180910390fd5b565b600060019054906101000a900460ff16612f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0c90617266565b60405180910390fd5b565b600060019054906101000a900460ff16612f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5d90617266565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b600060019054906101000a900460ff16612fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc990617266565b60405180910390fd5b612fe66000801b612fe1612293565b6124f4565b6130177f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a613012612293565b6124f4565b565b600060019054906101000a900460ff16613068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305f90617266565b60405180910390fd5b82603590816130779190617428565b5081603690816130879190617428565b50806037908051906020019061309e929190614ded565b5060005b8151811015613130576001603860008484815181106130c4576130c3616428565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061312890616457565b9150506130a2565b50731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d307fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce2177054306040518463ffffffff1660e01b81526004016131a2939291906174fa565b600060405180830381600087803b1580156131bc57600080fd5b505af11580156131d0573d6000803e3d6000fd5b50505050731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d307faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a306040518463ffffffff1660e01b8152600401613245939291906174fa565b600060405180830381600087803b15801561325f57600080fd5b505af1158015613273573d6000803e3d6000fd5b50505050505050565b600080828060200190518101906132939190617641565b9050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603613308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ff906176e1565b60405180910390fd5b6133367fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b88260000151611094565b15613376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336d90617773565b60405180910390fd5b80606001518160200151106133c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b790617805565b60405180910390fd5b80606001514210613406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133fd90617897565b60405180910390fd5b61015f6000826000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600f0160009054906101000a900460ff161561349b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349290617903565b60405180910390fd5b600061015f6000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508481600c01819055508481600e0181905550600181600f0160006101000a81548160ff0219169083151502179055508160200151826040015111156135ef578161010001518260c0015110158061354357508161012001518260e0015110155b613582576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135799061796f565b60405180910390fd5b84816000016002018190555081602001518160000160000181905550816040015181600001600101819055506135ce82608001518360c001518360000161400c9092919063ffffffff16565b6135ee8260a001518360e001518360000161400c9092919063ffffffff16565b5b848160060160020181905550816020015181600601600001819055508160600151816006016001018190555061363c82608001518361010001518360060161400c9092919063ffffffff16565b61365d8260a001518361012001518360060161400c9092919063ffffffff16565b816020015185836000015173ffffffffffffffffffffffffffffffffffffffff167f17161516b6ce34594617177a800b150a86ddee02c06993a73ef000a02367d119856040015186606001516040516136b792919061798f565b60405180910390a481600001519250505092915050565b6136dc8484848460016141db565b50505050565b60006136f0826000016143b9565b9050919050565b6136ff612293565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361376c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161376390617a2a565b60405180910390fd5b603860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561385f576001603a60006137cc612293565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506138f3565b6039600061386b612293565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b6138fb612293565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a2790617abc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a9690617b4e565b60405180910390fd5b80603b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051613b7d9190615205565b60405180910390a3505050565b60008061015f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600f0160009054906101000a900460ff168015613bf4575060008160000160000154115b915050919050565b6000613c0883836143ca565b613c12848461449a565b613c1c9190616127565b905092915050565b6000818310613c335781613c35565b825b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905060008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000613ccf7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b888611094565b905060008673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141590506000613d1088610fd4565b8611159050838015613d1f5750815b8015613d285750825b15613d725780613d6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d6490617bba565b60405180910390fd5b613dcd565b84613dcc57808015613d8c5750613d8888611052565b8611155b613dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dc290617bba565b60405180910390fd5b5b5b613dd989898989614527565b505050505050505050565b613dee8282611094565b613e6557613dfb81614541565b613e098360001c602061456e565b604051602001613e1a929190617cae565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e5c9190615105565b60405180910390fd5b5050565b613e7382826147aa565b7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b88203613f2c5761015f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600f0160009054906101000a900460ff1615613f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f2290617d5a565b60405180910390fd5b5b5050565b613f3a82826147b6565b613f5f8160fb600085815260200190815260200160002061489790919063ffffffff16565b505050565b613f6e82826148c7565b613f938160fb60008581526020019081526020016000206149a990919063ffffffff16565b505050565b613fa0610f5e565b613fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fd690617dc6565b60405180910390fd5b565b6000826000018281548110613ff957613ff8616428565b5b9060005260206000200154905092915050565b600083600401549050600084600401540361406d578360000154831015614068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161405f90617e58565b60405180910390fd5b6140d5565b836003016000600183614080919061672d565b8152602001908152602001600020600001548310156140d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140cb90617eea565b60405180910390fd5b5b836001015483111561411c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161411390617f7c565b60405180910390fd5b83600201548285600501546141319190616127565b1115614172576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141699061800e565b60405180910390fd5b6000846003016000838152602001908152602001600020905083816000018190555082816001018190555060018560040160008282546141b29190616127565b92505081905550828560050160008282546141cd9190616127565b925050819055505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361424a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142419061807a565b60405180910390fd5b6000614254612293565b90506142638160008888613c3d565b84603460008282546142759190616127565b9250508190555084603360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142cb9190616127565b925050819055506142e281600088888888886149d9565b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d87878760405161434393929190616d91565b60405180910390a38573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516143a99190615205565b60405180910390a3505050505050565b600081600001805490509050919050565b60008083600501548460020154106143f357836005015484600201546143f0919061672d565b90505b836001015483106144075780915050614494565b6000846000015490506000856004015411156144495784600301600060018760040154614434919061672d565b81526020019081526020016000206000015490505b600081866001015461445b919061672d565b905081851061448b57808286614471919061672d565b8461447c919061809a565b614486919061810b565b61448e565b60005b93505050505b92915050565b6000806000905060008460040154905060005b8181101561450e578560030160008281526020019081526020016000206000015485106144fb5785600301600082815260200190815260200160002060010154836144f89190616127565b92505b808061450690616457565b9150506144ad565b5061451d856002015483613c24565b9250505092915050565b61452f6120a7565b61453b84848484614bab565b50505050565b60606145678273ffffffffffffffffffffffffffffffffffffffff16601460ff1661456e565b9050919050565b606060006002836002614581919061809a565b61458b9190616127565b67ffffffffffffffff8111156145a4576145a36153e7565b5b6040519080825280601f01601f1916602001820160405280156145d65781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061460e5761460d616428565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061467257614671616428565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026146b2919061809a565b6146bc9190616127565b90505b600181111561475c577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106146fe576146fd616428565b5b1a60f81b82828151811061471557614714616428565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806147559061813c565b90506146bf565b50600084146147a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614797906181b1565b60405180910390fd5b8091505092915050565b6147b26120a7565b5050565b6147c08282611094565b61489357600160c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550614838612293565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006148bf836000018373ffffffffffffffffffffffffffffffffffffffff1660001b614bb1565b905092915050565b6148d18282611094565b156149a557600060c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061494a612293565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006149d1836000018373ffffffffffffffffffffffffffffffffffffffff1660001b614c21565b905092915050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6040518363ffffffff1660e01b8152600401614a4a9291906181d1565b602060405180830381865afa158015614a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a8b91906181fa565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614614b3a578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401614b0396959493929190618227565b600060405180830381600087803b158015614b1d57600080fd5b505af1158015614b31573d6000803e3d6000fd5b50505050614ba1565b8115614ba057614b5f8673ffffffffffffffffffffffffffffffffffffffff16612db0565b15614b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614b969061832e565b60405180910390fd5b5b5b5050505050505050565b50505050565b6000614bbd8383614d35565b614c16578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050614c1b565b600090505b92915050565b60008083600101600084815260200190815260200160002054905060008114614d29576000600182614c53919061672d565b9050600060018660000180549050614c6b919061672d565b9050818114614cda576000866000018281548110614c8c57614c8b616428565b5b9060005260206000200154905080876000018481548110614cb057614caf616428565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480614cee57614ced61834e565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050614d2f565b60009150505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b60405180610200016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b828054828255906000526020600020908101928215614e66579160200282015b82811115614e655782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190614e0d565b5b509050614e739190614e77565b5090565b5b80821115614e90576000816000905550600101614e78565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b614edd81614ea8565b8114614ee857600080fd5b50565b600081359050614efa81614ed4565b92915050565b600060208284031215614f1657614f15614e9e565b5b6000614f2484828501614eeb565b91505092915050565b60008115159050919050565b614f4281614f2d565b82525050565b6000602082019050614f5d6000830184614f39565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614fba82614f8f565b9050919050565b614fca81614faf565b82525050565b6000614fdc8383614fc1565b60208301905092915050565b6000602082019050919050565b600061500082614f63565b61500a8185614f6e565b935061501583614f7f565b8060005b8381101561504657815161502d8882614fd0565b975061503883614fe8565b925050600181019050615019565b5085935050505092915050565b6000602082019050818103600083015261506d8184614ff5565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156150af578082015181840152602081019050615094565b60008484015250505050565b6000601f19601f8301169050919050565b60006150d782615075565b6150e18185615080565b93506150f1818560208601615091565b6150fa816150bb565b840191505092915050565b6000602082019050818103600083015261511f81846150cc565b905092915050565b61513081614faf565b811461513b57600080fd5b50565b60008135905061514d81615127565b92915050565b6000819050919050565b61516681615153565b811461517157600080fd5b50565b6000813590506151838161515d565b92915050565b600080604083850312156151a05761519f614e9e565b5b60006151ae8582860161513e565b92505060206151bf85828601615174565b9150509250929050565b6000602082840312156151df576151de614e9e565b5b60006151ed8482850161513e565b91505092915050565b6151ff81615153565b82525050565b600060208201905061521a60008301846151f6565b92915050565b60008060006060848603121561523957615238614e9e565b5b60006152478682870161513e565b93505060206152588682870161513e565b925050604061526986828701615174565b9150509250925092565b6000819050919050565b61528681615273565b811461529157600080fd5b50565b6000813590506152a38161527d565b92915050565b6000602082840312156152bf576152be614e9e565b5b60006152cd84828501615294565b91505092915050565b6152df81615273565b82525050565b60006020820190506152fa60008301846152d6565b92915050565b6000806040838503121561531757615316614e9e565b5b600061532585828601615294565b92505060206153368582860161513e565b9150509250929050565b600060ff82169050919050565b61535681615340565b82525050565b6000602082019050615371600083018461534d565b92915050565b600061538282614faf565b9050919050565b61539281615377565b811461539d57600080fd5b50565b6000813590506153af81615389565b92915050565b6000602082840312156153cb576153ca614e9e565b5b60006153d9848285016153a0565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61541f826150bb565b810181811067ffffffffffffffff8211171561543e5761543d6153e7565b5b80604052505050565b6000615451614e94565b905061545d8282615416565b919050565b600067ffffffffffffffff82111561547d5761547c6153e7565b5b602082029050602081019050919050565b600080fd5b60006154a66154a184615462565b615447565b905080838252602082019050602084028301858111156154c9576154c861548e565b5b835b818110156154f257806154de888261513e565b8452602084019350506020810190506154cb565b5050509392505050565b600082601f830112615511576155106153e2565b5b8135615521848260208601615493565b91505092915050565b6000602082840312156155405761553f614e9e565b5b600082013567ffffffffffffffff81111561555e5761555d614ea3565b5b61556a848285016154fc565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155a881615153565b82525050565b60006155ba838361559f565b60208301905092915050565b6000602082019050919050565b60006155de82615573565b6155e8818561557e565b93506155f38361558f565b8060005b8381101561562457815161560b88826155ae565b9750615616836155c6565b9250506001810190506155f7565b5085935050505092915050565b6000602082019050818103600083015261564b81846155d3565b905092915050565b600080fd5b600067ffffffffffffffff821115615673576156726153e7565b5b61567c826150bb565b9050602081019050919050565b82818337600083830152505050565b60006156ab6156a684615658565b615447565b9050828152602081018484840111156156c7576156c6615653565b5b6156d2848285615689565b509392505050565b600082601f8301126156ef576156ee6153e2565b5b81356156ff848260208601615698565b91505092915050565b600080600080600060a0868803121561572457615723614e9e565b5b60006157328882890161513e565b95505060206157438882890161513e565b945050604061575488828901615174565b935050606086013567ffffffffffffffff81111561577557615774614ea3565b5b615781888289016156da565b925050608086013567ffffffffffffffff8111156157a2576157a1614ea3565b5b6157ae888289016156da565b9150509295509295909350565b600080604083850312156157d2576157d1614e9e565b5b60006157e085828601615294565b92505060206157f185828601615174565b9150509250929050565b61580481614faf565b82525050565b600060208201905061581f60008301846157fb565b92915050565b600080fd5b60008083601f8401126158405761583f6153e2565b5b8235905067ffffffffffffffff81111561585d5761585c615825565b5b6020830191508360208202830111156158795761587861548e565b5b9250929050565b60008083601f840112615896576158956153e2565b5b8235905067ffffffffffffffff8111156158b3576158b2615825565b5b6020830191508360208202830111156158cf576158ce61548e565b5b9250929050565b6000806000806000806000806080898b0312156158f6576158f5614e9e565b5b600089013567ffffffffffffffff81111561591457615913614ea3565b5b6159208b828c0161582a565b9850985050602089013567ffffffffffffffff81111561594357615942614ea3565b5b61594f8b828c0161582a565b9650965050604089013567ffffffffffffffff81111561597257615971614ea3565b5b61597e8b828c01615880565b9450945050606089013567ffffffffffffffff8111156159a1576159a0614ea3565b5b6159ad8b828c01615880565b92509250509295985092959890939650565b6000806000606084860312156159d8576159d7614e9e565b5b60006159e68682870161513e565b93505060206159f786828701615174565b925050604084013567ffffffffffffffff811115615a1857615a17614ea3565b5b615a24868287016156da565b9150509250925092565b60008060208385031215615a4557615a44614e9e565b5b600083013567ffffffffffffffff811115615a6357615a62614ea3565b5b615a6f8582860161582a565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615ab081614f2d565b82525050565b61020082016000820151615acd600085018261559f565b506020820151615ae06020850182614fc1565b506040820151615af3604085018261559f565b506060820151615b06606085018261559f565b506080820151615b19608085018261559f565b5060a0820151615b2c60a085018261559f565b5060c0820151615b3f60c085018261559f565b5060e0820151615b5260e085018261559f565b50610100820151615b6761010085018261559f565b50610120820151615b7c61012085018261559f565b50610140820151615b9161014085018261559f565b50610160820151615ba661016085018261559f565b50610180820151615bbb61018085018261559f565b506101a0820151615bd06101a085018261559f565b506101c0820151615be56101c085018261559f565b506101e0820151615bfa6101e0850182615aa7565b50505050565b6000615c0c8383615ab6565b6102008301905092915050565b6000602082019050919050565b6000615c3182615a7b565b615c3b8185615a86565b9350615c4683615a97565b8060005b83811015615c77578151615c5e8882615c00565b9750615c6983615c19565b925050600181019050615c4a565b5085935050505092915050565b60006020820190508181036000830152615c9e8184615c26565b905092915050565b61020082016000820151615cbd600085018261559f565b506020820151615cd06020850182614fc1565b506040820151615ce3604085018261559f565b506060820151615cf6606085018261559f565b506080820151615d09608085018261559f565b5060a0820151615d1c60a085018261559f565b5060c0820151615d2f60c085018261559f565b5060e0820151615d4260e085018261559f565b50610100820151615d5761010085018261559f565b50610120820151615d6c61012085018261559f565b50610140820151615d8161014085018261559f565b50610160820151615d9661016085018261559f565b50610180820151615dab61018085018261559f565b506101a0820151615dc06101a085018261559f565b506101c0820151615dd56101c085018261559f565b506101e0820151615dea6101e0850182615aa7565b50505050565b600061020082019050615e066000830184615ca6565b92915050565b60008083601f840112615e2257615e216153e2565b5b8235905067ffffffffffffffff811115615e3f57615e3e615825565b5b602083019150836020820283011115615e5b57615e5a61548e565b5b9250929050565b615e6b81615340565b8114615e7657600080fd5b50565b600081359050615e8881615e62565b92915050565b60008060008060008060008060c0898b031215615eae57615ead614e9e565b5b600089013567ffffffffffffffff811115615ecc57615ecb614ea3565b5b615ed88b828c01615880565b9850985050602089013567ffffffffffffffff811115615efb57615efa614ea3565b5b615f078b828c01615e0c565b96509650506040615f1a8b828c01615174565b9450506060615f2b8b828c01615e79565b9350506080615f3c8b828c01615294565b92505060a0615f4d8b828c01615294565b9150509295985092959890939650565b60008060408385031215615f7457615f73614e9e565b5b6000615f828582860161513e565b9250506020615f938582860161513e565b9150509250929050565b60008060008060808587031215615fb757615fb6614e9e565b5b6000615fc58782880161513e565b9450506020615fd687828801615174565b935050604085013567ffffffffffffffff811115615ff757615ff6614ea3565b5b616003878288016156da565b925050606085013567ffffffffffffffff81111561602457616023614ea3565b5b616030878288016156da565b91505092959194509250565b6000806040838503121561605357616052614e9e565b5b600061606185828601615174565b925050602083013567ffffffffffffffff81111561608257616081614ea3565b5b61608e858286016156da565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806160df57607f821691505b6020821081036160f2576160f1616098565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061613282615153565b915061613d83615153565b9250828201905080821115616155576161546160f8565b5b92915050565b600060408201905061617060008301856157fb565b61617d60208301846151f6565b9392505050565b61618d81614f2d565b811461619857600080fd5b50565b6000815190506161aa81616184565b92915050565b6000602082840312156161c6576161c5614e9e565b5b60006161d48482850161619b565b91505092915050565b7f6c4e4f52493a205472616e7366657220746f20756e6465726c79696e6720617360008201527f736574206661696c656400000000000000000000000000000000000000000000602082015250565b6000616239602a83615080565b9150616244826161dd565b604082019050919050565b600060208201905081810360008301526162688161622c565b9050919050565b7f6c4e4f52493a207472616e7366657246726f6d2064697361626c656400000000600082015250565b60006162a5601c83615080565b91506162b08261626f565b602082019050919050565b600060208201905081810360008301526162d481616298565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000616337602f83615080565b9150616342826162db565b604082019050919050565b600060208201905081810360008301526163668161632a565b9050919050565b7f6c4e4f52493a207570646174696e6720756e6465726c79696e6720616464726560008201527f737320746f206578697374696e67206164647265737300000000000000000000602082015250565b60006163c9603683615080565b91506163d48261636d565b604082019050919050565b600060208201905081810360008301526163f8816163bc565b9050919050565b600060408201905061641460008301856157fb565b61642160208301846157fb565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061646282615153565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203616494576164936160f8565b5b600182019050919050565b7f6c4e4f52493a206f70657261746f7253656e642064697361626c656400000000600082015250565b60006164d5601c83615080565b91506164e08261649f565b602082019050919050565b60006020820190508181036000830152616504816164c8565b9050919050565b7f6c4e4f52493a2066726f6d4163636f756e747320616e6420746f4163636f756e60008201527f7473206c656e677468206d69736d617463680000000000000000000000000000602082015250565b6000616567603283615080565b91506165728261650b565b604082019050919050565b600060208201905081810360008301526165968161655a565b9050919050565b7f6c4e4f52493a20746f4163636f756e747320616e6420617454696d6573206c6560008201527f6e677468206d69736d6174636800000000000000000000000000000000000000602082015250565b60006165f9602d83615080565b91506166048261659d565b604082019050919050565b60006020820190508181036000830152616628816165ec565b9050919050565b7f6c4e4f52493a20617454696d657320616e6420616d6f756e7473206c656e677460008201527f68206d69736d6174636800000000000000000000000000000000000000000000602082015250565b600061668b602a83615080565b91506166968261662f565b604082019050919050565b600060208201905081810360008301526166ba8161667e565b9050919050565b7f6c4e4f52493a2073656e642064697361626c6564000000000000000000000000600082015250565b60006166f7601483615080565b9150616702826166c1565b602082019050919050565b60006020820190508181036000830152616726816166ea565b9050919050565b600061673882615153565b915061674383615153565b925082820390508181111561675b5761675a6160f8565b5b92915050565b7f6c4e4f52493a207472616e736665722064697361626c65640000000000000000600082015250565b6000616797601883615080565b91506167a282616761565b602082019050919050565b600060208201905081810360008301526167c68161678a565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000616829602e83615080565b9150616834826167cd565b604082019050919050565b600060208201905081810360008301526168588161681c565b9050919050565b6000819050919050565b6000819050919050565b600061688e6168896168848461685f565b616869565b615340565b9050919050565b61689e81616873565b82525050565b60006020820190506168b96000830184616895565b92915050565b7f6c4e4f52493a205265717569726573206f6e6520616d6f756e7420706572206760008201527f72616e742064657461696c000000000000000000000000000000000000000000602082015250565b600061691b602b83615080565b9150616926826168bf565b604082019050919050565b6000602082019050818103600083015261694a8161690e565b9050919050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261697d5761697c616951565b5b80840192508235915067ffffffffffffffff82111561699f5761699e616956565b5b6020830192506001820236038313156169bb576169ba61695b565b5b509250929050565b60006169ce82615340565b915060ff82036169e1576169e06160f8565b5b600182019050919050565b600060e082019050616a01600083018a6157fb565b616a0e60208301896157fb565b616a1b60408301886151f6565b616a2860608301876151f6565b616a35608083018661534d565b616a4260a08301856152d6565b616a4f60c08301846152d6565b98975050505050505050565b6000606082019050616a7060008301866157fb565b616a7d60208301856157fb565b616a8a60408301846151f6565b949350505050565b7f6c4e4f52493a206275726e696e67206e6f7420737570706f7274656400000000600082015250565b6000616ac8601c83615080565b9150616ad382616a92565b602082019050919050565b60006020820190508181036000830152616af781616abb565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000616b34601083615080565b9150616b3f82616afe565b602082019050919050565b60006020820190508181036000830152616b6381616b27565b9050919050565b7f6c4e4f52493a206f70657261746f7220616374696f6e732064697361626c6564600082015250565b6000616ba0602083615080565b9150616bab82616b6a565b602082019050919050565b60006020820190508181036000830152616bcf81616b93565b9050919050565b600081519050616be58161515d565b92915050565b600060208284031215616c0157616c00614e9e565b5b6000616c0f84828501616bd6565b91505092915050565b7f4552433737373a206275726e2066726f6d20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000616c74602283615080565b9150616c7f82616c18565b604082019050919050565b60006020820190508181036000830152616ca381616c67565b9050919050565b7f4552433737373a206275726e20616d6f756e7420657863656564732062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000616d06602383615080565b9150616d1182616caa565b604082019050919050565b60006020820190508181036000830152616d3581616cf9565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000616d6382616d3c565b616d6d8185616d47565b9350616d7d818560208601615091565b616d86816150bb565b840191505092915050565b6000606082019050616da660008301866151f6565b8181036020830152616db88185616d58565b90508181036040830152616dcc8184616d58565b9050949350505050565b7f4552433737373a20617574686f72697a696e672073656c66206173206f70657260008201527f61746f7200000000000000000000000000000000000000000000000000000000602082015250565b6000616e32602483615080565b9150616e3d82616dd6565b604082019050919050565b60006020820190508181036000830152616e6181616e25565b9050919050565b7f6c4e4f52493a204d75737420737065636966792061207265766f636174696f6e60008201527f2074696d65206f7220616e20616d6f756e74206e6f7420626f74680000000000602082015250565b6000616ec4603b83615080565b9150616ecf82616e68565b604082019050919050565b60006020820190508181036000830152616ef381616eb7565b9050919050565b7f6c4e4f52493a206e6f206772616e742065786973747300000000000000000000600082015250565b6000616f30601683615080565b9150616f3b82616efa565b602082019050919050565b60006020820190508181036000830152616f5f81616f23565b9050919050565b7f6c4e4f52493a206e6f2076657374696e67207363686564756c6520666f72207460008201527f686973206772616e740000000000000000000000000000000000000000000000602082015250565b6000616fc2602983615080565b9150616fcd82616f66565b604082019050919050565b60006020820190508181036000830152616ff181616fb5565b9050919050565b7f6c4e4f52493a205265766f636174696f6e2063616e6e6f7420626520696e207460008201527f6865207061737400000000000000000000000000000000000000000000000000602082015250565b6000617054602783615080565b915061705f82616ff8565b604082019050919050565b6000602082019050818103600083015261708381617047565b9050919050565b7f6c4e4f52493a20746f6b656e7320616c72656164792076657374656400000000600082015250565b60006170c0601c83615080565b91506170cb8261708a565b602082019050919050565b600060208201905081810360008301526170ef816170b3565b9050919050565b7f6c4e4f52493a20746f6f2066657720756e76657374656420746f6b656e730000600082015250565b600061712c601e83615080565b9150617137826170f6565b602082019050919050565b6000602082019050818103600083015261715b8161711f565b9050919050565b7f6c4e4f52493a207472616e73666572206f6620756e6465726c79696e6720617360008201527f736574206661696c65642e000000000000000000000000000000000000000000602082015250565b60006171be602b83615080565b91506171c982617162565b604082019050919050565b600060208201905081810360008301526171ed816171b1565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000617250602b83615080565b915061725b826171f4565b604082019050919050565b6000602082019050818103600083015261727f81617243565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026172e87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826172ab565b6172f286836172ab565b95508019841693508086168417925050509392505050565b600061732561732061731b84615153565b616869565b615153565b9050919050565b6000819050919050565b61733f8361730a565b61735361734b8261732c565b8484546172b8565b825550505050565b600090565b61736861735b565b617373818484617336565b505050565b5b818110156173975761738c600082617360565b600181019050617379565b5050565b601f8211156173dc576173ad81617286565b6173b68461729b565b810160208510156173c5578190505b6173d96173d18561729b565b830182617378565b50505b505050565b600082821c905092915050565b60006173ff600019846008026173e1565b1980831691505092915050565b600061741883836173ee565b9150826002028217905092915050565b61743182615075565b67ffffffffffffffff81111561744a576174496153e7565b5b61745482546160c7565b61745f82828561739b565b600060209050601f8311600181146174925760008415617480578287015190505b61748a858261740c565b8655506174f2565b601f1984166174a086617286565b60005b828110156174c8578489015182556001820191506020850194506020810190506174a3565b868310156174e557848901516174e1601f8916826173ee565b8355505b6001600288020188555050505b505050505050565b600060608201905061750f60008301866157fb565b61751c60208301856152d6565b61752960408301846157fb565b949350505050565b600080fd5b60008151905061754581615127565b92915050565b6000610140828403121561756257617561617531565b5b61756d610140615447565b9050600061757d84828501617536565b600083015250602061759184828501616bd6565b60208301525060406175a584828501616bd6565b60408301525060606175b984828501616bd6565b60608301525060806175cd84828501616bd6565b60808301525060a06175e184828501616bd6565b60a08301525060c06175f584828501616bd6565b60c08301525060e061760984828501616bd6565b60e08301525061010061761e84828501616bd6565b6101008301525061012061763484828501616bd6565b6101208301525092915050565b6000610140828403121561765857617657614e9e565b5b60006176668482850161754b565b91505092915050565b7f6c4e4f52493a20526563697069656e742063616e6e6f74206265207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b60006176cb602783615080565b91506176d68261766f565b604082019050919050565b600060208201905081810360008301526176fa816176be565b9050919050565b7f6c4e4f52493a20526563697069656e742063616e6e6f74206265206772616e7460008201527f2061646d696e0000000000000000000000000000000000000000000000000000602082015250565b600061775d602683615080565b915061776882617701565b604082019050919050565b6000602082019050818103600083015261778c81617750565b9050919050565b7f6c4e4f52493a20756e6c6f636b456e6454696d652063616e6e6f74206265206260008201527f65666f726520737461727454696d650000000000000000000000000000000000602082015250565b60006177ef602f83615080565b91506177fa82617793565b604082019050919050565b6000602082019050818103600083015261781e816177e2565b9050919050565b7f6c4e4f52493a20756e6c6f636b456e6454696d652063616e6e6f74206265206960008201527f6e20746865207061737400000000000000000000000000000000000000000000602082015250565b6000617881602a83615080565b915061788c82617825565b604082019050919050565b600060208201905081810360008301526178b081617874565b9050919050565b7f6c4e4f52493a204772616e7420616c7265616479206578697374730000000000600082015250565b60006178ed601b83615080565b91506178f8826178b7565b602082019050919050565b6000602082019050818103600083015261791c816178e0565b9050919050565b7f6c4e4f52493a20756e6c6f636b20636c696666203e207665737420636c696666600082015250565b6000617959602083615080565b915061796482617923565b602082019050919050565b600060208201905081810360008301526179888161794c565b9050919050565b60006040820190506179a460008301856151f6565b6179b160208301846151f6565b9392505050565b7f4552433737373a207265766f6b696e672073656c66206173206f70657261746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000617a14602183615080565b9150617a1f826179b8565b604082019050919050565b60006020820190508181036000830152617a4381617a07565b9050919050565b7f4552433737373a20617070726f76652066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000617aa6602583615080565b9150617ab182617a4a565b604082019050919050565b60006020820190508181036000830152617ad581617a99565b9050919050565b7f4552433737373a20617070726f766520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000617b38602383615080565b9150617b4382617adc565b604082019050919050565b60006020820190508181036000830152617b6781617b2b565b9050919050565b7f6c4e4f52493a20696e73756666696369656e742062616c616e63650000000000600082015250565b6000617ba4601b83615080565b9150617baf82617b6e565b602082019050919050565b60006020820190508181036000830152617bd381617b97565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000617c1b601783617bda565b9150617c2682617be5565b601782019050919050565b6000617c3c82615075565b617c468185617bda565b9350617c56818560208601615091565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000617c98601183617bda565b9150617ca382617c62565b601182019050919050565b6000617cb982617c0e565b9150617cc58285617c31565b9150617cd082617c8b565b9150617cdc8284617c31565b91508190509392505050565b7f6c4e4f52493a2043616e6e6f742061737369676e20726f6c6520746f2061206760008201527f72616e7420686f6c646572206164647265737300000000000000000000000000602082015250565b6000617d44603383615080565b9150617d4f82617ce8565b604082019050919050565b60006020820190508181036000830152617d7381617d37565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000617db0601483615080565b9150617dbb82617d7a565b602082019050919050565b60006020820190508181036000830152617ddf81617da3565b9050919050565b7f4c6f636b65644e4f52494c69623a20436c696666206265666f7265207363686560008201527f64756c6520737461727400000000000000000000000000000000000000000000602082015250565b6000617e42602a83615080565b9150617e4d82617de6565b604082019050919050565b60006020820190508181036000830152617e7181617e35565b9050919050565b7f4c6f636b65644e4f52494c69623a20436c69666673206e6f74206368726f6e6f60008201527f6c6f676963616c00000000000000000000000000000000000000000000000000602082015250565b6000617ed4602783615080565b9150617edf82617e78565b604082019050919050565b60006020820190508181036000830152617f0381617ec7565b9050919050565b7f4c6f636b65644e4f52494c69623a20436c696666732063616e6e6f7420656e6460008201527f206166746572207363686564756c650000000000000000000000000000000000602082015250565b6000617f66602f83615080565b9150617f7182617f0a565b604082019050919050565b60006020820190508181036000830152617f9581617f59565b9050919050565b7f4c6f636b65644e4f52494c69623a20436c69666620616d6f756e74732065786360008201527f65656420746f74616c0000000000000000000000000000000000000000000000602082015250565b6000617ff8602983615080565b915061800382617f9c565b604082019050919050565b6000602082019050818103600083015261802781617feb565b9050919050565b7f4552433737373a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000618064602083615080565b915061806f8261802e565b602082019050919050565b6000602082019050818103600083015261809381618057565b9050919050565b60006180a582615153565b91506180b083615153565b92508282026180be81615153565b915082820484148315176180d5576180d46160f8565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061811682615153565b915061812183615153565b925082618131576181306180dc565b5b828204905092915050565b600061814782615153565b91506000820361815a576181596160f8565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061819b602083615080565b91506181a682618165565b602082019050919050565b600060208201905081810360008301526181ca8161818e565b9050919050565b60006040820190506181e660008301856157fb565b6181f360208301846152d6565b9392505050565b6000602082840312156182105761820f614e9e565b5b600061821e84828501617536565b91505092915050565b600060c08201905061823c60008301896157fb565b61824960208301886157fb565b61825660408301876157fb565b61826360608301866151f6565b81810360808301526182758185616d58565b905081810360a08301526182898184616d58565b9050979650505050505050565b7f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460008201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60208201527f6b656e73526563697069656e7400000000000000000000000000000000000000604082015250565b6000618318604d83615080565b915061832382618296565b606082019050919050565b600060208201905081810360008301526183478161830b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122012e6ab3c57ff06bf571848a6287008f8e6d405cada625fa2accdb904338b601b64736f6c63430008110033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
