{
    "_format": "hh-sol-artifact-1",
    "contractName": "NoriUSDC",
    "sourceName": "contracts/test/NoriUSDC.sol",
    "abi": [
        {
            "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": false,
                    "internalType": "uint8",
                    "name": "version",
                    "type": "uint8"
                }
            ],
            "name": "Initialized",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "Paused",
            "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": "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": "account",
                    "type": "address"
                }
            ],
            "name": "Unpaused",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "DEFAULT_ADMIN_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "DOMAIN_SEPARATOR",
            "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": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "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": "amount",
                    "type": "uint256"
                }
            ],
            "name": "approve",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "balanceOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "burn",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "burnFrom",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "decimals",
            "outputs": [
                {
                    "internalType": "uint8",
                    "name": "",
                    "type": "uint8"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "subtractedValue",
                    "type": "uint256"
                }
            ],
            "name": "decreaseAllowance",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "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": [
                {
                    "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": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "addedValue",
                    "type": "uint256"
                }
            ],
            "name": "increaseAllowance",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "mintee",
                    "type": "address"
                }
            ],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes[]",
                    "name": "data",
                    "type": "bytes[]"
                }
            ],
            "name": "multicall",
            "outputs": [
                {
                    "internalType": "bytes[]",
                    "name": "results",
                    "type": "bytes[]"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "name",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                }
            ],
            "name": "nonces",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "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": "owner",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                },
                {
                    "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": "permit",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "renounceRole",
            "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": "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": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "transfer",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "transferFrom",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "unpause",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "bytecode": "0x608060405234801561001057600080fd5b506148eb806100206000396000f3fe608060405234801561001057600080fd5b50600436106101755760003560e01c806301ffc9a71461017a57806306fdde03146101aa578063095ea7b3146101c857806318160ddd146101f857806323b872dd14610216578063248a9ca3146102465780632f2ff15d14610276578063313ce567146102925780633644e515146102b057806336568abe146102ce57806339509351146102ea5780633f4ba83a1461031a57806342966c68146103245780635c975abb1461034057806370a082311461035e57806379cc67901461038e5780637ecebe00146103aa5780638456cb59146103da5780639010d07c146103e457806391d148541461041457806395d89b4114610444578063a217fddf14610462578063a457c2d714610480578063a9059cbb146104b0578063ac9650d8146104e0578063c4d66de814610510578063ca15c8731461052c578063d505accf1461055c578063d547741f14610578578063dd62ed3e14610594578063e63ab1e9146105c4575b600080fd5b610194600480360381019061018f9190612d87565b6105e2565b6040516101a19190612dcf565b60405180910390f35b6101b261065c565b6040516101bf9190612e7a565b60405180910390f35b6101e260048036038101906101dd9190612f30565b6106ee565b6040516101ef9190612dcf565b60405180910390f35b610200610711565b60405161020d9190612f7f565b60405180910390f35b610230600480360381019061022b9190612f9a565b61071b565b60405161023d9190612dcf565b60405180910390f35b610260600480360381019061025b9190613023565b61074a565b60405161026d919061305f565b60405180910390f35b610290600480360381019061028b919061307a565b61076b565b005b61029a61078c565b6040516102a791906130d6565b60405180910390f35b6102b8610795565b6040516102c5919061305f565b60405180910390f35b6102e860048036038101906102e3919061307a565b6107a4565b005b61030460048036038101906102ff9190612f30565b610827565b6040516103119190612dcf565b60405180910390f35b61032261085e565b005b61033e600480360381019061033991906130f1565b610893565b005b6103486108a7565b6040516103559190612dcf565b60405180910390f35b6103786004803603810190610373919061311e565b6108bf565b6040516103859190612f7f565b60405180910390f35b6103a860048036038101906103a39190612f30565b610908565b005b6103c460048036038101906103bf919061311e565b610928565b6040516103d19190612f7f565b60405180910390f35b6103e2610978565b005b6103fe60048036038101906103f9919061314b565b6109ad565b60405161040b919061319a565b60405180910390f35b61042e6004803603810190610429919061307a565b6109dd565b60405161043b9190612dcf565b60405180910390f35b61044c610a49565b6040516104599190612e7a565b60405180910390f35b61046a610adb565b604051610477919061305f565b60405180910390f35b61049a60048036038101906104959190612f30565b610ae2565b6040516104a79190612dcf565b60405180910390f35b6104ca60048036038101906104c59190612f30565b610b59565b6040516104d79190612dcf565b60405180910390f35b6104fa60048036038101906104f5919061321a565b610b7c565b604051610507919061337e565b60405180910390f35b61052a6004803603810190610525919061311e565b610c88565b005b61054660048036038101906105419190613023565b610f3c565b6040516105539190612f7f565b60405180910390f35b610576600480360381019061057191906133cc565b610f61565b005b610592600480360381019061058d919061307a565b6110a3565b005b6105ae60048036038101906105a9919061346e565b6110c4565b6040516105bb9190612f7f565b60405180910390f35b6105cc61114b565b6040516105d9919061305f565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061065557506106548261116f565b5b9050919050565b60606036805461066b906134dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610697906134dd565b80156106e45780601f106106b9576101008083540402835291602001916106e4565b820191906000526020600020905b8154815290600101906020018083116106c757829003601f168201915b5050505050905090565b6000806106f96111e9565b90506107068185856111f1565b600191505092915050565b6000603554905090565b6000806107266111e9565b9050610733858285611209565b61073e858585611295565b60019150509392505050565b60006101946000838152602001908152602001600020600101549050919050565b6107748261074a565b61077d8161150e565b6107878383611522565b505050565b60006006905090565b600061079f611538565b905090565b6107ac6111e9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610819576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081090613580565b60405180910390fd5b6108238282611578565b5050565b6000806108326111e9565b905061085381858561084485896110c4565b61084e91906135cf565b6111f1565b600191505092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6108888161150e565b61089061158e565b50565b6108a461089e6111e9565b826115f2565b50565b600061013060009054906101000a900460ff16905090565b6000603360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61091a826109146111e9565b83611209565b61092482826115f2565b5050565b600061097160cb60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206117c1565b9050919050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109a28161150e565b6109aa6117cf565b50565b60006109d5826101c6600086815260200190815260200160002061183390919063ffffffff16565b905092915050565b6000610194600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060378054610a58906134dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610a84906134dd565b8015610ad15780601f10610aa657610100808354040283529160200191610ad1565b820191906000526020600020905b815481529060010190602001808311610ab457829003601f168201915b5050505050905090565b6000801b81565b600080610aed6111e9565b90506000610afb82866110c4565b905083811015610b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3790613675565b60405180910390fd5b610b4d82868684036111f1565b60019250505092915050565b600080610b646111e9565b9050610b71818585611295565b600191505092915050565b60608282905067ffffffffffffffff811115610b9b57610b9a613695565b5b604051908082528060200260200182016040528015610bce57816020015b6060815260200190600190039081610bb95790505b50905060005b83839050811015610c8157610c5030858584818110610bf657610bf56136c4565b5b9050602002810190610c089190613702565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061184d565b828281518110610c6357610c626136c4565b5b60200260200101819052508080610c7990613765565b915050610bd4565b5092915050565b60008060019054906101000a900460ff16159050808015610cb95750600160008054906101000a900460ff1660ff16105b80610ce65750610cc830611931565b158015610ce55750600160008054906101000a900460ff1660ff16145b5b610d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1c9061381f565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610d62576001600060016101000a81548160ff0219169083151502179055505b610d6a611954565b610d726119a5565b610d7a6119f6565b610d82611a47565b610d8a611a98565b610dfe6040518060400160405280600881526020017f4e6f7269555344430000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250611b05565b610e726040518060400160405280600881526020017f4e6f7269555344430000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f4e4f524955534443000000000000000000000000000000000000000000000000815250611b80565b610eb06040518060400160405280600881526020017f4e4f524955534443000000000000000000000000000000000000000000000000815250611bf3565b610eb8611c45565b610ec0611c96565b610ec8611d2c565b610edf826c064f964e68233a76f520000000611d7d565b8015610f385760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610f2f9190613884565b60405180910390a15b5050565b6000610f5a6101c66000848152602001908152602001600020611ed4565b9050919050565b83421115610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b906138eb565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610fd38c611ee9565b89604051602001610fe99695949392919061390b565b604051602081830303815290604052805190602001209050600061100c82611f47565b9050600061101c82878787611f61565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461108c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611083906139b8565b60405180910390fd5b6110978a8a8a6111f1565b50505050505050505050565b6110ac8261074a565b6110b58161150e565b6110bf8383611578565b505050565b6000603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806111e257506111e182611f8c565b5b9050919050565b600033905090565b6111f9611ff6565b611204838383612040565b505050565b600061121584846110c4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461128f5781811015611281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127890613a24565b60405180910390fd5b61128e84848484036111f1565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90613ab6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a90613b48565b60405180910390fd5b61137e838383612209565b6000603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fc90613bda565b60405180910390fd5b818103603360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114f59190612f7f565b60405180910390a3611508848484612221565b50505050565b61151f8161151a6111e9565b612226565b50565b61152a611ff6565b61153482826122ab565b5050565b60006115737f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6115666122e0565b61156e6122ea565b6122f4565b905090565b611580611ff6565b61158a828261232e565b5050565b611596612363565b600061013060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6115db6111e9565b6040516115e8919061319a565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165890613c6c565b60405180910390fd5b61166d82600083612209565b6000603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb90613cfe565b60405180910390fd5b818103603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603560008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117a89190612f7f565b60405180910390a36117bc83600084612221565b505050565b600081600001549050919050565b6117d7611ff6565b600161013060006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861181c6111e9565b604051611829919061319a565b60405180910390a1565b600061184283600001836123ac565b60001c905092915050565b606061185883611931565b611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90613d90565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16846040516118bf9190613dec565b600060405180830381855af49150503d80600081146118fa576040519150601f19603f3d011682016040523d82523d6000602084013e6118ff565b606091505b5091509150611927828260405180606001604052806027815260200161488f602791396123d7565b9250505092915050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a90613e75565b60405180910390fd5b565b600060019054906101000a900460ff166119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb90613e75565b60405180910390fd5b565b600060019054906101000a900460ff16611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c90613e75565b60405180910390fd5b565b600060019054906101000a900460ff16611a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8d90613e75565b60405180910390fd5b565b600060019054906101000a900460ff16611ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ade90613e75565b60405180910390fd5b600061013060006101000a81548160ff021916908315150217905550565b600060019054906101000a900460ff16611b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4b90613e75565b60405180910390fd5b600082805190602001209050600082805190602001209050816097819055508060988190555050505050565b600060019054906101000a900460ff16611bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc690613e75565b60405180910390fd5b8160369081611bde9190614037565b508060379081611bee9190614037565b505050565b600060019054906101000a900460ff16611c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3990613e75565b60405180910390fd5b50565b600060019054906101000a900460ff16611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90613e75565b60405180910390fd5b565b600060019054906101000a900460ff16611ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdc90613e75565b60405180910390fd5b611cf96000801b611cf46111e9565b611522565b611d2a7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a611d256111e9565b611522565b565b600060019054906101000a900460ff16611d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7290613e75565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de390614155565b60405180910390fd5b611df860008383612209565b8060356000828254611e0a91906135cf565b9250508190555080603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ebc9190612f7f565b60405180910390a3611ed060008383612221565b5050565b6000611ee2826000016123f9565b9050919050565b60008060cb60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050611f36816117c1565b9150611f418161240a565b50919050565b6000611f5a611f54611538565b83612420565b9050919050565b6000806000611f7287878787612453565b91509150611f7f81612535565b8192505050949350505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611ffe6108a7565b1561203e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612035906141c1565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a690614253565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361211e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612115906142e5565b60405180910390fd5b80603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121fc9190612f7f565b60405180910390a3505050565b612211611ff6565b61221c83838361269b565b505050565b505050565b61223082826109dd565b6122a75761223d816126a0565b61224b8360001c60206126cd565b60405160200161225c9291906143d9565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229e9190612e7a565b60405180910390fd5b5050565b6122b58282612909565b6122db816101c660008581526020019081526020016000206129eb90919063ffffffff16565b505050565b6000609754905090565b6000609854905090565b6000838383463060405160200161230f959493929190614413565b6040516020818303038152906040528051906020012090509392505050565b6123388282612a1b565b61235e816101c66000858152602001908152602001600020612afe90919063ffffffff16565b505050565b61236b6108a7565b6123aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a1906144b2565b60405180910390fd5b565b60008260000182815481106123c4576123c36136c4565b5b9060005260206000200154905092915050565b606083156123e7578290506123f2565b6123f18383612b2e565b5b9392505050565b600081600001805490509050919050565b6001816000016000828254019250508190555050565b6000828260405160200161243592919061453f565b60405160208183030381529060405280519060200120905092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c111561248e57600060039150915061252c565b6000600187878787604051600081526020016040526040516124b39493929190614576565b6020604051602081039080840390855afa1580156124d5573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125235760006001925092505061252c565b80600092509250505b94509492505050565b60006004811115612549576125486145bb565b5b81600481111561255c5761255b6145bb565b5b03156126985760016004811115612576576125756145bb565b5b816004811115612589576125886145bb565b5b036125c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c090614636565b60405180910390fd5b600260048111156125dd576125dc6145bb565b5b8160048111156125f0576125ef6145bb565b5b03612630576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612627906146a2565b60405180910390fd5b60036004811115612644576126436145bb565b5b816004811115612657576126566145bb565b5b03612697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268e90614734565b60405180910390fd5b5b50565b505050565b60606126c68273ffffffffffffffffffffffffffffffffffffffff16601460ff166126cd565b9050919050565b6060600060028360026126e09190614754565b6126ea91906135cf565b67ffffffffffffffff81111561270357612702613695565b5b6040519080825280601f01601f1916602001820160405280156127355781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061276d5761276c6136c4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106127d1576127d06136c4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026128119190614754565b61281b91906135cf565b90505b60018111156128bb577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061285d5761285c6136c4565b5b1a60f81b828281518110612874576128736136c4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806128b490614796565b905061281e565b50600084146128ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f69061480b565b60405180910390fd5b8091505092915050565b61291382826109dd565b6129e7576001610194600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061298c6111e9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000612a13836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612b7e565b905092915050565b612a2582826109dd565b15612afa576000610194600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612a9f6111e9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000612b26836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612bee565b905092915050565b600082511115612b415781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b759190612e7a565b60405180910390fd5b6000612b8a8383612d02565b612be3578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612be8565b600090505b92915050565b60008083600101600084815260200190815260200160002054905060008114612cf6576000600182612c20919061482b565b9050600060018660000180549050612c38919061482b565b9050818114612ca7576000866000018281548110612c5957612c586136c4565b5b9060005260206000200154905080876000018481548110612c7d57612c7c6136c4565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480612cbb57612cba61485f565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612cfc565b60009150505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d6481612d2f565b8114612d6f57600080fd5b50565b600081359050612d8181612d5b565b92915050565b600060208284031215612d9d57612d9c612d25565b5b6000612dab84828501612d72565b91505092915050565b60008115159050919050565b612dc981612db4565b82525050565b6000602082019050612de46000830184612dc0565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e24578082015181840152602081019050612e09565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e4c82612dea565b612e568185612df5565b9350612e66818560208601612e06565b612e6f81612e30565b840191505092915050565b60006020820190508181036000830152612e948184612e41565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ec782612e9c565b9050919050565b612ed781612ebc565b8114612ee257600080fd5b50565b600081359050612ef481612ece565b92915050565b6000819050919050565b612f0d81612efa565b8114612f1857600080fd5b50565b600081359050612f2a81612f04565b92915050565b60008060408385031215612f4757612f46612d25565b5b6000612f5585828601612ee5565b9250506020612f6685828601612f1b565b9150509250929050565b612f7981612efa565b82525050565b6000602082019050612f946000830184612f70565b92915050565b600080600060608486031215612fb357612fb2612d25565b5b6000612fc186828701612ee5565b9350506020612fd286828701612ee5565b9250506040612fe386828701612f1b565b9150509250925092565b6000819050919050565b61300081612fed565b811461300b57600080fd5b50565b60008135905061301d81612ff7565b92915050565b60006020828403121561303957613038612d25565b5b60006130478482850161300e565b91505092915050565b61305981612fed565b82525050565b60006020820190506130746000830184613050565b92915050565b6000806040838503121561309157613090612d25565b5b600061309f8582860161300e565b92505060206130b085828601612ee5565b9150509250929050565b600060ff82169050919050565b6130d0816130ba565b82525050565b60006020820190506130eb60008301846130c7565b92915050565b60006020828403121561310757613106612d25565b5b600061311584828501612f1b565b91505092915050565b60006020828403121561313457613133612d25565b5b600061314284828501612ee5565b91505092915050565b6000806040838503121561316257613161612d25565b5b60006131708582860161300e565b925050602061318185828601612f1b565b9150509250929050565b61319481612ebc565b82525050565b60006020820190506131af600083018461318b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126131da576131d96131b5565b5b8235905067ffffffffffffffff8111156131f7576131f66131ba565b5b602083019150836020820283011115613213576132126131bf565b5b9250929050565b6000806020838503121561323157613230612d25565b5b600083013567ffffffffffffffff81111561324f5761324e612d2a565b5b61325b858286016131c4565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60006132ba82613293565b6132c4818561329e565b93506132d4818560208601612e06565b6132dd81612e30565b840191505092915050565b60006132f483836132af565b905092915050565b6000602082019050919050565b600061331482613267565b61331e8185613272565b93508360208202850161333085613283565b8060005b8581101561336c578484038952815161334d85826132e8565b9450613358836132fc565b925060208a01995050600181019050613334565b50829750879550505050505092915050565b600060208201905081810360008301526133988184613309565b905092915050565b6133a9816130ba565b81146133b457600080fd5b50565b6000813590506133c6816133a0565b92915050565b600080600080600080600060e0888a0312156133eb576133ea612d25565b5b60006133f98a828b01612ee5565b975050602061340a8a828b01612ee5565b965050604061341b8a828b01612f1b565b955050606061342c8a828b01612f1b565b945050608061343d8a828b016133b7565b93505060a061344e8a828b0161300e565b92505060c061345f8a828b0161300e565b91505092959891949750929550565b6000806040838503121561348557613484612d25565b5b600061349385828601612ee5565b92505060206134a485828601612ee5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134f557607f821691505b602082108103613508576135076134ae565b5b50919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b600061356a602f83612df5565b91506135758261350e565b604082019050919050565b600060208201905081810360008301526135998161355d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135da82612efa565b91506135e583612efa565b92508282019050808211156135fd576135fc6135a0565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061365f602583612df5565b915061366a82613603565b604082019050919050565b6000602082019050818103600083015261368e81613652565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261371f5761371e6136f3565b5b80840192508235915067ffffffffffffffff821115613741576137406136f8565b5b60208301925060018202360383131561375d5761375c6136fd565b5b509250929050565b600061377082612efa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137a2576137a16135a0565b5b600182019050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000613809602e83612df5565b9150613814826137ad565b604082019050919050565b60006020820190508181036000830152613838816137fc565b9050919050565b6000819050919050565b6000819050919050565b600061386e6138696138648461383f565b613849565b6130ba565b9050919050565b61387e81613853565b82525050565b60006020820190506138996000830184613875565b92915050565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b60006138d5601d83612df5565b91506138e08261389f565b602082019050919050565b60006020820190508181036000830152613904816138c8565b9050919050565b600060c0820190506139206000830189613050565b61392d602083018861318b565b61393a604083018761318b565b6139476060830186612f70565b6139546080830185612f70565b61396160a0830184612f70565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b60006139a2601e83612df5565b91506139ad8261396c565b602082019050919050565b600060208201905081810360008301526139d181613995565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613a0e601d83612df5565b9150613a19826139d8565b602082019050919050565b60006020820190508181036000830152613a3d81613a01565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613aa0602583612df5565b9150613aab82613a44565b604082019050919050565b60006020820190508181036000830152613acf81613a93565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b32602383612df5565b9150613b3d82613ad6565b604082019050919050565b60006020820190508181036000830152613b6181613b25565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613bc4602683612df5565b9150613bcf82613b68565b604082019050919050565b60006020820190508181036000830152613bf381613bb7565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c56602183612df5565b9150613c6182613bfa565b604082019050919050565b60006020820190508181036000830152613c8581613c49565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ce8602283612df5565b9150613cf382613c8c565b604082019050919050565b60006020820190508181036000830152613d1781613cdb565b9050919050565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b6000613d7a602683612df5565b9150613d8582613d1e565b604082019050919050565b60006020820190508181036000830152613da981613d6d565b9050919050565b600081905092915050565b6000613dc682613293565b613dd08185613db0565b9350613de0818560208601612e06565b80840191505092915050565b6000613df88284613dbb565b915081905092915050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613e5f602b83612df5565b9150613e6a82613e03565b604082019050919050565b60006020820190508181036000830152613e8e81613e52565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613ef77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613eba565b613f018683613eba565b95508019841693508086168417925050509392505050565b6000613f34613f2f613f2a84612efa565b613849565b612efa565b9050919050565b6000819050919050565b613f4e83613f19565b613f62613f5a82613f3b565b848454613ec7565b825550505050565b600090565b613f77613f6a565b613f82818484613f45565b505050565b5b81811015613fa657613f9b600082613f6f565b600181019050613f88565b5050565b601f821115613feb57613fbc81613e95565b613fc584613eaa565b81016020851015613fd4578190505b613fe8613fe085613eaa565b830182613f87565b50505b505050565b600082821c905092915050565b600061400e60001984600802613ff0565b1980831691505092915050565b60006140278383613ffd565b9150826002028217905092915050565b61404082612dea565b67ffffffffffffffff81111561405957614058613695565b5b61406382546134dd565b61406e828285613faa565b600060209050601f8311600181146140a1576000841561408f578287015190505b614099858261401b565b865550614101565b601f1984166140af86613e95565b60005b828110156140d7578489015182556001820191506020850194506020810190506140b2565b868310156140f457848901516140f0601f891682613ffd565b8355505b6001600288020188555050505b505050505050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061413f601f83612df5565b915061414a82614109565b602082019050919050565b6000602082019050818103600083015261416e81614132565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006141ab601083612df5565b91506141b682614175565b602082019050919050565b600060208201905081810360008301526141da8161419e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061423d602483612df5565b9150614248826141e1565b604082019050919050565b6000602082019050818103600083015261426c81614230565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006142cf602283612df5565b91506142da82614273565b604082019050919050565b600060208201905081810360008301526142fe816142c2565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000614346601783614305565b915061435182614310565b601782019050919050565b600061436782612dea565b6143718185614305565b9350614381818560208601612e06565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006143c3601183614305565b91506143ce8261438d565b601182019050919050565b60006143e482614339565b91506143f0828561435c565b91506143fb826143b6565b9150614407828461435c565b91508190509392505050565b600060a0820190506144286000830188613050565b6144356020830187613050565b6144426040830186613050565b61444f6060830185612f70565b61445c608083018461318b565b9695505050505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b600061449c601483612df5565b91506144a782614466565b602082019050919050565b600060208201905081810360008301526144cb8161448f565b9050919050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000614508600283614305565b9150614513826144d2565b600282019050919050565b6000819050919050565b61453961453482612fed565b61451e565b82525050565b600061454a826144fb565b91506145568285614528565b6020820191506145668284614528565b6020820191508190509392505050565b600060808201905061458b6000830187613050565b61459860208301866130c7565b6145a56040830185613050565b6145b26060830184613050565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b6000614620601883612df5565b915061462b826145ea565b602082019050919050565b6000602082019050818103600083015261464f81614613565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b600061468c601f83612df5565b915061469782614656565b602082019050919050565b600060208201905081810360008301526146bb8161467f565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b600061471e602283612df5565b9150614729826146c2565b604082019050919050565b6000602082019050818103600083015261474d81614711565b9050919050565b600061475f82612efa565b915061476a83612efa565b925082820261477881612efa565b9150828204841483151761478f5761478e6135a0565b5b5092915050565b60006147a182612efa565b9150600082036147b4576147b36135a0565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006147f5602083612df5565b9150614800826147bf565b602082019050919050565b60006020820190508181036000830152614824816147e8565b9050919050565b600061483682612efa565b915061484183612efa565b9250828203905081811115614859576148586135a0565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209afab1de4070059cad47ac1d731490187996b011d416aae7ab33b4d648521ebf64736f6c63430008110033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101755760003560e01c806301ffc9a71461017a57806306fdde03146101aa578063095ea7b3146101c857806318160ddd146101f857806323b872dd14610216578063248a9ca3146102465780632f2ff15d14610276578063313ce567146102925780633644e515146102b057806336568abe146102ce57806339509351146102ea5780633f4ba83a1461031a57806342966c68146103245780635c975abb1461034057806370a082311461035e57806379cc67901461038e5780637ecebe00146103aa5780638456cb59146103da5780639010d07c146103e457806391d148541461041457806395d89b4114610444578063a217fddf14610462578063a457c2d714610480578063a9059cbb146104b0578063ac9650d8146104e0578063c4d66de814610510578063ca15c8731461052c578063d505accf1461055c578063d547741f14610578578063dd62ed3e14610594578063e63ab1e9146105c4575b600080fd5b610194600480360381019061018f9190612d87565b6105e2565b6040516101a19190612dcf565b60405180910390f35b6101b261065c565b6040516101bf9190612e7a565b60405180910390f35b6101e260048036038101906101dd9190612f30565b6106ee565b6040516101ef9190612dcf565b60405180910390f35b610200610711565b60405161020d9190612f7f565b60405180910390f35b610230600480360381019061022b9190612f9a565b61071b565b60405161023d9190612dcf565b60405180910390f35b610260600480360381019061025b9190613023565b61074a565b60405161026d919061305f565b60405180910390f35b610290600480360381019061028b919061307a565b61076b565b005b61029a61078c565b6040516102a791906130d6565b60405180910390f35b6102b8610795565b6040516102c5919061305f565b60405180910390f35b6102e860048036038101906102e3919061307a565b6107a4565b005b61030460048036038101906102ff9190612f30565b610827565b6040516103119190612dcf565b60405180910390f35b61032261085e565b005b61033e600480360381019061033991906130f1565b610893565b005b6103486108a7565b6040516103559190612dcf565b60405180910390f35b6103786004803603810190610373919061311e565b6108bf565b6040516103859190612f7f565b60405180910390f35b6103a860048036038101906103a39190612f30565b610908565b005b6103c460048036038101906103bf919061311e565b610928565b6040516103d19190612f7f565b60405180910390f35b6103e2610978565b005b6103fe60048036038101906103f9919061314b565b6109ad565b60405161040b919061319a565b60405180910390f35b61042e6004803603810190610429919061307a565b6109dd565b60405161043b9190612dcf565b60405180910390f35b61044c610a49565b6040516104599190612e7a565b60405180910390f35b61046a610adb565b604051610477919061305f565b60405180910390f35b61049a60048036038101906104959190612f30565b610ae2565b6040516104a79190612dcf565b60405180910390f35b6104ca60048036038101906104c59190612f30565b610b59565b6040516104d79190612dcf565b60405180910390f35b6104fa60048036038101906104f5919061321a565b610b7c565b604051610507919061337e565b60405180910390f35b61052a6004803603810190610525919061311e565b610c88565b005b61054660048036038101906105419190613023565b610f3c565b6040516105539190612f7f565b60405180910390f35b610576600480360381019061057191906133cc565b610f61565b005b610592600480360381019061058d919061307a565b6110a3565b005b6105ae60048036038101906105a9919061346e565b6110c4565b6040516105bb9190612f7f565b60405180910390f35b6105cc61114b565b6040516105d9919061305f565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061065557506106548261116f565b5b9050919050565b60606036805461066b906134dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610697906134dd565b80156106e45780601f106106b9576101008083540402835291602001916106e4565b820191906000526020600020905b8154815290600101906020018083116106c757829003601f168201915b5050505050905090565b6000806106f96111e9565b90506107068185856111f1565b600191505092915050565b6000603554905090565b6000806107266111e9565b9050610733858285611209565b61073e858585611295565b60019150509392505050565b60006101946000838152602001908152602001600020600101549050919050565b6107748261074a565b61077d8161150e565b6107878383611522565b505050565b60006006905090565b600061079f611538565b905090565b6107ac6111e9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610819576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081090613580565b60405180910390fd5b6108238282611578565b5050565b6000806108326111e9565b905061085381858561084485896110c4565b61084e91906135cf565b6111f1565b600191505092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6108888161150e565b61089061158e565b50565b6108a461089e6111e9565b826115f2565b50565b600061013060009054906101000a900460ff16905090565b6000603360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61091a826109146111e9565b83611209565b61092482826115f2565b5050565b600061097160cb60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206117c1565b9050919050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109a28161150e565b6109aa6117cf565b50565b60006109d5826101c6600086815260200190815260200160002061183390919063ffffffff16565b905092915050565b6000610194600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060378054610a58906134dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610a84906134dd565b8015610ad15780601f10610aa657610100808354040283529160200191610ad1565b820191906000526020600020905b815481529060010190602001808311610ab457829003601f168201915b5050505050905090565b6000801b81565b600080610aed6111e9565b90506000610afb82866110c4565b905083811015610b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3790613675565b60405180910390fd5b610b4d82868684036111f1565b60019250505092915050565b600080610b646111e9565b9050610b71818585611295565b600191505092915050565b60608282905067ffffffffffffffff811115610b9b57610b9a613695565b5b604051908082528060200260200182016040528015610bce57816020015b6060815260200190600190039081610bb95790505b50905060005b83839050811015610c8157610c5030858584818110610bf657610bf56136c4565b5b9050602002810190610c089190613702565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061184d565b828281518110610c6357610c626136c4565b5b60200260200101819052508080610c7990613765565b915050610bd4565b5092915050565b60008060019054906101000a900460ff16159050808015610cb95750600160008054906101000a900460ff1660ff16105b80610ce65750610cc830611931565b158015610ce55750600160008054906101000a900460ff1660ff16145b5b610d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1c9061381f565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610d62576001600060016101000a81548160ff0219169083151502179055505b610d6a611954565b610d726119a5565b610d7a6119f6565b610d82611a47565b610d8a611a98565b610dfe6040518060400160405280600881526020017f4e6f7269555344430000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250611b05565b610e726040518060400160405280600881526020017f4e6f7269555344430000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f4e4f524955534443000000000000000000000000000000000000000000000000815250611b80565b610eb06040518060400160405280600881526020017f4e4f524955534443000000000000000000000000000000000000000000000000815250611bf3565b610eb8611c45565b610ec0611c96565b610ec8611d2c565b610edf826c064f964e68233a76f520000000611d7d565b8015610f385760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610f2f9190613884565b60405180910390a15b5050565b6000610f5a6101c66000848152602001908152602001600020611ed4565b9050919050565b83421115610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b906138eb565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610fd38c611ee9565b89604051602001610fe99695949392919061390b565b604051602081830303815290604052805190602001209050600061100c82611f47565b9050600061101c82878787611f61565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461108c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611083906139b8565b60405180910390fd5b6110978a8a8a6111f1565b50505050505050505050565b6110ac8261074a565b6110b58161150e565b6110bf8383611578565b505050565b6000603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806111e257506111e182611f8c565b5b9050919050565b600033905090565b6111f9611ff6565b611204838383612040565b505050565b600061121584846110c4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461128f5781811015611281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127890613a24565b60405180910390fd5b61128e84848484036111f1565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90613ab6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a90613b48565b60405180910390fd5b61137e838383612209565b6000603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fc90613bda565b60405180910390fd5b818103603360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114f59190612f7f565b60405180910390a3611508848484612221565b50505050565b61151f8161151a6111e9565b612226565b50565b61152a611ff6565b61153482826122ab565b5050565b60006115737f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6115666122e0565b61156e6122ea565b6122f4565b905090565b611580611ff6565b61158a828261232e565b5050565b611596612363565b600061013060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6115db6111e9565b6040516115e8919061319a565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165890613c6c565b60405180910390fd5b61166d82600083612209565b6000603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb90613cfe565b60405180910390fd5b818103603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603560008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117a89190612f7f565b60405180910390a36117bc83600084612221565b505050565b600081600001549050919050565b6117d7611ff6565b600161013060006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861181c6111e9565b604051611829919061319a565b60405180910390a1565b600061184283600001836123ac565b60001c905092915050565b606061185883611931565b611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90613d90565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16846040516118bf9190613dec565b600060405180830381855af49150503d80600081146118fa576040519150601f19603f3d011682016040523d82523d6000602084013e6118ff565b606091505b5091509150611927828260405180606001604052806027815260200161488f602791396123d7565b9250505092915050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a90613e75565b60405180910390fd5b565b600060019054906101000a900460ff166119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb90613e75565b60405180910390fd5b565b600060019054906101000a900460ff16611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c90613e75565b60405180910390fd5b565b600060019054906101000a900460ff16611a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8d90613e75565b60405180910390fd5b565b600060019054906101000a900460ff16611ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ade90613e75565b60405180910390fd5b600061013060006101000a81548160ff021916908315150217905550565b600060019054906101000a900460ff16611b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4b90613e75565b60405180910390fd5b600082805190602001209050600082805190602001209050816097819055508060988190555050505050565b600060019054906101000a900460ff16611bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc690613e75565b60405180910390fd5b8160369081611bde9190614037565b508060379081611bee9190614037565b505050565b600060019054906101000a900460ff16611c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3990613e75565b60405180910390fd5b50565b600060019054906101000a900460ff16611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90613e75565b60405180910390fd5b565b600060019054906101000a900460ff16611ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdc90613e75565b60405180910390fd5b611cf96000801b611cf46111e9565b611522565b611d2a7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a611d256111e9565b611522565b565b600060019054906101000a900460ff16611d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7290613e75565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de390614155565b60405180910390fd5b611df860008383612209565b8060356000828254611e0a91906135cf565b9250508190555080603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ebc9190612f7f565b60405180910390a3611ed060008383612221565b5050565b6000611ee2826000016123f9565b9050919050565b60008060cb60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050611f36816117c1565b9150611f418161240a565b50919050565b6000611f5a611f54611538565b83612420565b9050919050565b6000806000611f7287878787612453565b91509150611f7f81612535565b8192505050949350505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611ffe6108a7565b1561203e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612035906141c1565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a690614253565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361211e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612115906142e5565b60405180910390fd5b80603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121fc9190612f7f565b60405180910390a3505050565b612211611ff6565b61221c83838361269b565b505050565b505050565b61223082826109dd565b6122a75761223d816126a0565b61224b8360001c60206126cd565b60405160200161225c9291906143d9565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229e9190612e7a565b60405180910390fd5b5050565b6122b58282612909565b6122db816101c660008581526020019081526020016000206129eb90919063ffffffff16565b505050565b6000609754905090565b6000609854905090565b6000838383463060405160200161230f959493929190614413565b6040516020818303038152906040528051906020012090509392505050565b6123388282612a1b565b61235e816101c66000858152602001908152602001600020612afe90919063ffffffff16565b505050565b61236b6108a7565b6123aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a1906144b2565b60405180910390fd5b565b60008260000182815481106123c4576123c36136c4565b5b9060005260206000200154905092915050565b606083156123e7578290506123f2565b6123f18383612b2e565b5b9392505050565b600081600001805490509050919050565b6001816000016000828254019250508190555050565b6000828260405160200161243592919061453f565b60405160208183030381529060405280519060200120905092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c111561248e57600060039150915061252c565b6000600187878787604051600081526020016040526040516124b39493929190614576565b6020604051602081039080840390855afa1580156124d5573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125235760006001925092505061252c565b80600092509250505b94509492505050565b60006004811115612549576125486145bb565b5b81600481111561255c5761255b6145bb565b5b03156126985760016004811115612576576125756145bb565b5b816004811115612589576125886145bb565b5b036125c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c090614636565b60405180910390fd5b600260048111156125dd576125dc6145bb565b5b8160048111156125f0576125ef6145bb565b5b03612630576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612627906146a2565b60405180910390fd5b60036004811115612644576126436145bb565b5b816004811115612657576126566145bb565b5b03612697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268e90614734565b60405180910390fd5b5b50565b505050565b60606126c68273ffffffffffffffffffffffffffffffffffffffff16601460ff166126cd565b9050919050565b6060600060028360026126e09190614754565b6126ea91906135cf565b67ffffffffffffffff81111561270357612702613695565b5b6040519080825280601f01601f1916602001820160405280156127355781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061276d5761276c6136c4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106127d1576127d06136c4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026128119190614754565b61281b91906135cf565b90505b60018111156128bb577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061285d5761285c6136c4565b5b1a60f81b828281518110612874576128736136c4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806128b490614796565b905061281e565b50600084146128ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f69061480b565b60405180910390fd5b8091505092915050565b61291382826109dd565b6129e7576001610194600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061298c6111e9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000612a13836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612b7e565b905092915050565b612a2582826109dd565b15612afa576000610194600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612a9f6111e9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000612b26836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612bee565b905092915050565b600082511115612b415781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b759190612e7a565b60405180910390fd5b6000612b8a8383612d02565b612be3578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612be8565b600090505b92915050565b60008083600101600084815260200190815260200160002054905060008114612cf6576000600182612c20919061482b565b9050600060018660000180549050612c38919061482b565b9050818114612ca7576000866000018281548110612c5957612c586136c4565b5b9060005260206000200154905080876000018481548110612c7d57612c7c6136c4565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480612cbb57612cba61485f565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612cfc565b60009150505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d6481612d2f565b8114612d6f57600080fd5b50565b600081359050612d8181612d5b565b92915050565b600060208284031215612d9d57612d9c612d25565b5b6000612dab84828501612d72565b91505092915050565b60008115159050919050565b612dc981612db4565b82525050565b6000602082019050612de46000830184612dc0565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e24578082015181840152602081019050612e09565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e4c82612dea565b612e568185612df5565b9350612e66818560208601612e06565b612e6f81612e30565b840191505092915050565b60006020820190508181036000830152612e948184612e41565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ec782612e9c565b9050919050565b612ed781612ebc565b8114612ee257600080fd5b50565b600081359050612ef481612ece565b92915050565b6000819050919050565b612f0d81612efa565b8114612f1857600080fd5b50565b600081359050612f2a81612f04565b92915050565b60008060408385031215612f4757612f46612d25565b5b6000612f5585828601612ee5565b9250506020612f6685828601612f1b565b9150509250929050565b612f7981612efa565b82525050565b6000602082019050612f946000830184612f70565b92915050565b600080600060608486031215612fb357612fb2612d25565b5b6000612fc186828701612ee5565b9350506020612fd286828701612ee5565b9250506040612fe386828701612f1b565b9150509250925092565b6000819050919050565b61300081612fed565b811461300b57600080fd5b50565b60008135905061301d81612ff7565b92915050565b60006020828403121561303957613038612d25565b5b60006130478482850161300e565b91505092915050565b61305981612fed565b82525050565b60006020820190506130746000830184613050565b92915050565b6000806040838503121561309157613090612d25565b5b600061309f8582860161300e565b92505060206130b085828601612ee5565b9150509250929050565b600060ff82169050919050565b6130d0816130ba565b82525050565b60006020820190506130eb60008301846130c7565b92915050565b60006020828403121561310757613106612d25565b5b600061311584828501612f1b565b91505092915050565b60006020828403121561313457613133612d25565b5b600061314284828501612ee5565b91505092915050565b6000806040838503121561316257613161612d25565b5b60006131708582860161300e565b925050602061318185828601612f1b565b9150509250929050565b61319481612ebc565b82525050565b60006020820190506131af600083018461318b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126131da576131d96131b5565b5b8235905067ffffffffffffffff8111156131f7576131f66131ba565b5b602083019150836020820283011115613213576132126131bf565b5b9250929050565b6000806020838503121561323157613230612d25565b5b600083013567ffffffffffffffff81111561324f5761324e612d2a565b5b61325b858286016131c4565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60006132ba82613293565b6132c4818561329e565b93506132d4818560208601612e06565b6132dd81612e30565b840191505092915050565b60006132f483836132af565b905092915050565b6000602082019050919050565b600061331482613267565b61331e8185613272565b93508360208202850161333085613283565b8060005b8581101561336c578484038952815161334d85826132e8565b9450613358836132fc565b925060208a01995050600181019050613334565b50829750879550505050505092915050565b600060208201905081810360008301526133988184613309565b905092915050565b6133a9816130ba565b81146133b457600080fd5b50565b6000813590506133c6816133a0565b92915050565b600080600080600080600060e0888a0312156133eb576133ea612d25565b5b60006133f98a828b01612ee5565b975050602061340a8a828b01612ee5565b965050604061341b8a828b01612f1b565b955050606061342c8a828b01612f1b565b945050608061343d8a828b016133b7565b93505060a061344e8a828b0161300e565b92505060c061345f8a828b0161300e565b91505092959891949750929550565b6000806040838503121561348557613484612d25565b5b600061349385828601612ee5565b92505060206134a485828601612ee5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134f557607f821691505b602082108103613508576135076134ae565b5b50919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b600061356a602f83612df5565b91506135758261350e565b604082019050919050565b600060208201905081810360008301526135998161355d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135da82612efa565b91506135e583612efa565b92508282019050808211156135fd576135fc6135a0565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061365f602583612df5565b915061366a82613603565b604082019050919050565b6000602082019050818103600083015261368e81613652565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261371f5761371e6136f3565b5b80840192508235915067ffffffffffffffff821115613741576137406136f8565b5b60208301925060018202360383131561375d5761375c6136fd565b5b509250929050565b600061377082612efa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137a2576137a16135a0565b5b600182019050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000613809602e83612df5565b9150613814826137ad565b604082019050919050565b60006020820190508181036000830152613838816137fc565b9050919050565b6000819050919050565b6000819050919050565b600061386e6138696138648461383f565b613849565b6130ba565b9050919050565b61387e81613853565b82525050565b60006020820190506138996000830184613875565b92915050565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b60006138d5601d83612df5565b91506138e08261389f565b602082019050919050565b60006020820190508181036000830152613904816138c8565b9050919050565b600060c0820190506139206000830189613050565b61392d602083018861318b565b61393a604083018761318b565b6139476060830186612f70565b6139546080830185612f70565b61396160a0830184612f70565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b60006139a2601e83612df5565b91506139ad8261396c565b602082019050919050565b600060208201905081810360008301526139d181613995565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613a0e601d83612df5565b9150613a19826139d8565b602082019050919050565b60006020820190508181036000830152613a3d81613a01565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613aa0602583612df5565b9150613aab82613a44565b604082019050919050565b60006020820190508181036000830152613acf81613a93565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b32602383612df5565b9150613b3d82613ad6565b604082019050919050565b60006020820190508181036000830152613b6181613b25565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613bc4602683612df5565b9150613bcf82613b68565b604082019050919050565b60006020820190508181036000830152613bf381613bb7565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c56602183612df5565b9150613c6182613bfa565b604082019050919050565b60006020820190508181036000830152613c8581613c49565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ce8602283612df5565b9150613cf382613c8c565b604082019050919050565b60006020820190508181036000830152613d1781613cdb565b9050919050565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b6000613d7a602683612df5565b9150613d8582613d1e565b604082019050919050565b60006020820190508181036000830152613da981613d6d565b9050919050565b600081905092915050565b6000613dc682613293565b613dd08185613db0565b9350613de0818560208601612e06565b80840191505092915050565b6000613df88284613dbb565b915081905092915050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613e5f602b83612df5565b9150613e6a82613e03565b604082019050919050565b60006020820190508181036000830152613e8e81613e52565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613ef77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613eba565b613f018683613eba565b95508019841693508086168417925050509392505050565b6000613f34613f2f613f2a84612efa565b613849565b612efa565b9050919050565b6000819050919050565b613f4e83613f19565b613f62613f5a82613f3b565b848454613ec7565b825550505050565b600090565b613f77613f6a565b613f82818484613f45565b505050565b5b81811015613fa657613f9b600082613f6f565b600181019050613f88565b5050565b601f821115613feb57613fbc81613e95565b613fc584613eaa565b81016020851015613fd4578190505b613fe8613fe085613eaa565b830182613f87565b50505b505050565b600082821c905092915050565b600061400e60001984600802613ff0565b1980831691505092915050565b60006140278383613ffd565b9150826002028217905092915050565b61404082612dea565b67ffffffffffffffff81111561405957614058613695565b5b61406382546134dd565b61406e828285613faa565b600060209050601f8311600181146140a1576000841561408f578287015190505b614099858261401b565b865550614101565b601f1984166140af86613e95565b60005b828110156140d7578489015182556001820191506020850194506020810190506140b2565b868310156140f457848901516140f0601f891682613ffd565b8355505b6001600288020188555050505b505050505050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061413f601f83612df5565b915061414a82614109565b602082019050919050565b6000602082019050818103600083015261416e81614132565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006141ab601083612df5565b91506141b682614175565b602082019050919050565b600060208201905081810360008301526141da8161419e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061423d602483612df5565b9150614248826141e1565b604082019050919050565b6000602082019050818103600083015261426c81614230565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006142cf602283612df5565b91506142da82614273565b604082019050919050565b600060208201905081810360008301526142fe816142c2565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000614346601783614305565b915061435182614310565b601782019050919050565b600061436782612dea565b6143718185614305565b9350614381818560208601612e06565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006143c3601183614305565b91506143ce8261438d565b601182019050919050565b60006143e482614339565b91506143f0828561435c565b91506143fb826143b6565b9150614407828461435c565b91508190509392505050565b600060a0820190506144286000830188613050565b6144356020830187613050565b6144426040830186613050565b61444f6060830185612f70565b61445c608083018461318b565b9695505050505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b600061449c601483612df5565b91506144a782614466565b602082019050919050565b600060208201905081810360008301526144cb8161448f565b9050919050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000614508600283614305565b9150614513826144d2565b600282019050919050565b6000819050919050565b61453961453482612fed565b61451e565b82525050565b600061454a826144fb565b91506145568285614528565b6020820191506145668284614528565b6020820191508190509392505050565b600060808201905061458b6000830187613050565b61459860208301866130c7565b6145a56040830185613050565b6145b26060830184613050565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b6000614620601883612df5565b915061462b826145ea565b602082019050919050565b6000602082019050818103600083015261464f81614613565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b600061468c601f83612df5565b915061469782614656565b602082019050919050565b600060208201905081810360008301526146bb8161467f565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b600061471e602283612df5565b9150614729826146c2565b604082019050919050565b6000602082019050818103600083015261474d81614711565b9050919050565b600061475f82612efa565b915061476a83612efa565b925082820261477881612efa565b9150828204841483151761478f5761478e6135a0565b5b5092915050565b60006147a182612efa565b9150600082036147b4576147b36135a0565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006147f5602083612df5565b9150614800826147bf565b602082019050919050565b60006020820190508181036000830152614824816147e8565b9050919050565b600061483682612efa565b915061484183612efa565b9250828203905081811115614859576148586135a0565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209afab1de4070059cad47ac1d731490187996b011d416aae7ab33b4d648521ebf64736f6c63430008110033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
