[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "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" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "admin", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "adminCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "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": "uint32", "name": "fromChain", "type": "uint32" }, { "internalType": "bytes", "name": "payload", "type": "bytes" } ], "name": "bridgeIn", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "toChain", "type": "uint32" }, { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "bytes", "name": "payload", "type": "bytes" } ], "name": "bridgeOut", "outputs": [ { "internalType": "bytes4", "name": "selector", "type": "bytes4" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "stateMutability": "nonpayable", "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": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [], "name": "getAdmin", "outputs": [ { "internalType": "address", "name": "adminAddress", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getOwner", "outputs": [ { "internalType": "address", "name": "ownerAddress", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "holographBridgeMint", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "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": "bytes", "name": "initPayload", "type": "bytes" } ], "name": "init", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "onERC20Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "ownerCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "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": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "safeTransfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "adminAddress", "type": "address" } ], "name": "setAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "ownerAddress", "type": "address" } ], "name": "setOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "sourceBurn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "sourceExternalCall", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "sourceMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "wallets", "type": "address[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "sourceMintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "sourceTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "destination", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "sourceTransfer", "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": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
608060405234801561001057600080fd5b50614b86806100206000396000f3fe6080604052600436106102ca5760003560e01c806370a0823111610179578063b7e03661116100d6578063dd62ed3e1161008a578063f2fde38b11610064578063f2fde38b146108bd578063f851a440146108dd578063fad66f92146108f2576102d1565b8063dd62ed3e14610837578063eb66dbcf1461088a578063eb7955491461089d576102d1565b8063bf64a82d116100bb578063bf64a82d146107e4578063c5655fce146107f7578063d505accf14610817576102d1565b8063b7e0366114610796578063b88d4fde146107c4576102d1565b806395d89b411161012d578063a8eb29c911610112578063a8eb29c914610736578063a9059cbb14610756578063a9fb6c7214610776576102d1565b806395d89b4114610701578063a457c2d714610716576102d1565b80637ecebe001161015e5780637ecebe0014610675578063893d20e8146106b85780638da5cb5b146106ec576102d1565b806370a082311461061257806379cc679014610655576102d1565b80633644e515116102275780634ddf47d4116101db57806366bd3d45116101c057806366bd3d451461057d5780636e9960c31461059d578063704b6c02146105f2576102d1565b80634ddf47d41461053d5780634fc358591461055d576102d1565b8063423f6cef1161020c578063423f6cef146104dd57806342842e0e146104fd57806342966c681461051d576102d1565b80633644e515146104a857806339509351146104bd576102d1565b80630d5e2c1d1161027e57806318160ddd1161026357806318160ddd1461044757806323b872dd14610466578063313ce56714610486576102d1565b80630d5e2c1d1461040757806313af403514610427576102d1565b806308a1eb20116102af57806308a1eb2014610376578063095ea7b3146103c75780630d3ada54146103e7576102d1565b806301ffc9a71461031f57806306fdde0314610354576102d1565b366102d157005b3660008037333652600080602036016000347f27d542086d1e831d40b749e7f5509a626c3047a36d160781c40d5acc83e5b074545af13d6000803e808015610318573d6000f35b3d6000fd5b005b34801561032b57600080fd5b5061033f61033a366004613fec565b610912565b60405190151581526020015b60405180910390f35b34801561036057600080fd5b50610369610aa8565b60405161034b919061407f565b34801561038257600080fd5b506103966103913660046140f4565b610b3a565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161034b565b3480156103d357600080fd5b5061033f6103e2366004614169565b610dd6565b3480156103f357600080fd5b5061031d6104023660046141da565b610ed0565b34801561041357600080fd5b5061031d610422366004614169565b610fde565b34801561043357600080fd5b5061031d610442366004614246565b61108e565b34801561045357600080fd5b506009545b60405190815260200161034b565b34801561047257600080fd5b5061033f610481366004614263565b6111f1565b34801561049257600080fd5b50600c5460405160ff909116815260200161034b565b3480156104b457600080fd5b506104586114a3565b3480156104c957600080fd5b5061033f6104d8366004614169565b6114b2565b3480156104e957600080fd5b5061033f6104f8366004614169565b61164a565b34801561050957600080fd5b5061033f610518366004614263565b61166d565b34801561052957600080fd5b5061031d6105383660046142a4565b611692565b34801561054957600080fd5b506103966105583660046143d7565b61174b565b34801561056957600080fd5b5061039661057836600461440c565b611a5e565b34801561058957600080fd5b5061031d610598366004614169565b611c81565b3480156105a957600080fd5b507f3f106594dc74eeef980dae234cde8324dc2497b13d27a0c59e55bd2ca10a07c9545b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161034b565b3480156105fe57600080fd5b5061031d61060d366004614246565b611d2c565b34801561061e57600080fd5b5061045861062d366004614246565b73ffffffffffffffffffffffffffffffffffffffff1660009081526007602052604090205490565b34801561066157600080fd5b5061033f610670366004614169565b611e06565b34801561068157600080fd5b50610458610690366004614246565b73ffffffffffffffffffffffffffffffffffffffff166000908152600d602052604090205490565b3480156106c457600080fd5b507fb56711ba6bd3ded7639fc335ee7524fe668a79d7558c85992e3f8494cf772777546105cd565b3480156106f857600080fd5b506105cd611eec565b34801561070d57600080fd5b50610369611f88565b34801561072257600080fd5b5061033f610731366004614169565b611f97565b34801561074257600080fd5b5061031d610751366004614263565b61203f565b34801561076257600080fd5b5061033f610771366004614169565b6120f1565b34801561078257600080fd5b5061031d61079136600461447f565b6121d9565b3480156107a257600080fd5b506107b66107b136600461449f565b61229a565b60405161034b9291906144f6565b3480156107d057600080fd5b5061033f6107df366004614531565b612575565b61031d6107f236600461447f565b6127a0565b34801561080357600080fd5b5061031d610812366004614169565b612876565b34801561082357600080fd5b5061031d6108323660046145ac565b61295a565b34801561084357600080fd5b5061045861085236600461461d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260086020908152604080832093909416825291909152205490565b61031d61089836600461447f565b612c01565b3480156108a957600080fd5b5061033f6108b8366004614656565b612cb7565b3480156108c957600080fd5b5061031d6108d8366004614246565b612d2f565b3480156108e957600080fd5b506105cd612e86565b3480156108fe57600080fd5b5061039661090d366004614169565b612eb0565b60008061091d61300e565b7f27d542086d1e831d40b749e7f5509a626c3047a36d160781c40d5acc83e5b074546040517f9fe7303f0000000000000000000000000000000000000000000000000000000081529192509073ffffffffffffffffffffffffffffffffffffffff831690639fe7303f906109989060019088906004016146de565b602060405180830381865afa1580156109b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d9919061475a565b80610a8f57506040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008516600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa158015610a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8f919061475a565b15610a9e575060019392505050565b5060009392505050565b6060600a8054610ab790614775565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae390614775565b8015610b305780601f10610b0557610100808354040283529160200191610b30565b820191906000526020600020905b815481529060010190602001808311610b1357829003601f168201915b5050505050905090565b6000610b647fb4107f746e9496e8452accc7de63d1c5e14c19f510932daa04077cd49e8bd77a5490565b73ffffffffffffffffffffffffffffffffffffffff16630fffbaf36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd291906147c8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a20627269646765206f6e6c792063616c6c00000000000000000060448201526064015b60405180910390fd5b6000808080610c7c86880188614531565b9350935093509350610c8e83836130a6565b610c986001613185565b15610da957610d4363f0f5407360e01b8986868686604051602401610cc19594939291906147e5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526131b8565b610da9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f484f4c4f47524150483a2062726964676520696e206661696c656400000000006044820152606401610c62565b507f08a1eb2000000000000000000000000000000000000000000000000000000000979650505050505050565b6000610de26004613185565b15610e4a5760405133602482015273ffffffffffffffffffffffffffffffffffffffff8416604482015260648101839052610e41907f47abf3be0000000000000000000000000000000000000000000000000000000090608401610cc1565b610e4a57600080fd5b610e55338484613215565b610e5f6003613185565b15610ec75760405133602482015273ffffffffffffffffffffffffffffffffffffffff8416604482015260648101839052610ebe907f900f66ef0000000000000000000000000000000000000000000000000000000090608401610cc1565b610ec757600080fd5b50600192915050565b7f27d542086d1e831d40b749e7f5509a626c3047a36d160781c40d5acc83e5b074543373ffffffffffffffffffffffffffffffffffffffff821614610f71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a20736f75726365206f6e6c792063616c6c0000000000000000006044820152606401610c62565b60005b84811015610fd657610fc4868683818110610f9157610f9161483b565b9050602002016020810190610fa69190614246565b858584818110610fb857610fb861483b565b905060200201356130a6565b80610fce81614899565b915050610f74565b505050505050565b7f27d542086d1e831d40b749e7f5509a626c3047a36d160781c40d5acc83e5b074543373ffffffffffffffffffffffffffffffffffffffff82161461107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a20736f75726365206f6e6c792063616c6c0000000000000000006044820152606401610c62565b611089838361337d565b505050565b7fb56711ba6bd3ded7639fc335ee7524fe668a79d7558c85992e3f8494cf7727775473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f484f4c4f47524150483a206f776e6572206f6e6c792066756e6374696f6e00006044820152606401610c62565b600061116e7fb56711ba6bd3ded7639fc335ee7524fe668a79d7558c85992e3f8494cf7727775490565b9050817fb56711ba6bd3ded7639fc335ee7524fe668a79d7558c85992e3f8494cf772777558173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff841633146113a6577fb4107f746e9496e8452accc7de63d1c5e14c19f510932daa04077cd49e8bd77a5473ffffffffffffffffffffffffffffffffffffffff16630fffbaf36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a091906147c8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561139657507fb4107f746e9496e8452accc7de63d1c5e14c19f510932daa04077cd49e8bd77a5473ffffffffffffffffffffffffffffffffffffffff1663e7f43c686040518163ffffffff1660e01b8152600401602060405180830381865afa158015611342573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136691906147c8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156113a6576113a68433846134d8565b6113b0600e613185565b1561141a5760405173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648101839052611411907f1ffb811f0000000000000000000000000000000000000000000000000000000090608401610cc1565b61141a57600080fd5b6114258484846136bb565b61142f600d613185565b156114995760405173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648101839052611490907ff49062ca0000000000000000000000000000000000000000000000000000000090608401610cc1565b61149957600080fd5b5060019392505050565b60006114ad61389a565b905090565b33600090815260086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482810181811015611550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f45524332303a20696e637265617365642061626f7665206d61782076616c75656044820152606401610c62565b61155a6004613185565b156115c25760405133602482015273ffffffffffffffffffffffffffffffffffffffff86166044820152606481018290526115b9907f47abf3be0000000000000000000000000000000000000000000000000000000090608401610cc1565b6115c257600080fd5b6115cd338683613215565b6115d76003613185565b1561163f5760405133602482015273ffffffffffffffffffffffffffffffffffffffff8616604482015260648101829052611636907f900f66ef0000000000000000000000000000000000000000000000000000000090608401610cc1565b61163f57600080fd5b506001949350505050565b6000611666838360405180602001604052806000815250612cb7565b9392505050565b600061168a84848460405180602001604052806000815250612575565b949350505050565b61169c6008613185565b156116e857604051336024820152604481018290526116df907f4a1fefbd0000000000000000000000000000000000000000000000000000000090606401610cc1565b6116e857600080fd5b6116f2338261337d565b6116fc6007613185565b15611748576040513360248201526044810182905261173f907f971c34b40000000000000000000000000000000000000000000000000000000090606401610cc1565b61174857600080fd5b50565b60006117757f4e5f991bca30eca2d4643aaefa807e88f96a4a97398933d572a3c0d973004a015490565b156117dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332303a20616c726561647920696e697469616c697a65640000000000006044820152606401610c62565b600060017f04b524dd539523930d3901481aa9455d7752b49add99e1647adb8b09a313727955337fb56711ba6bd3ded7639fc335ee7524fe668a79d7558c85992e3f8494cf772777557f27d542086d1e831d40b749e7f5509a626c3047a36d160781c40d5acc83e5b0745490506000806000806000806000808a8060200190518101906118699190614921565b9750975097509750975097509750975087600a908051906020019061188f929190613f25565b5086516118a390600b9060208a0190613f25565b50600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff88161790556006859055816119fb576040517f4ddf47d4000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b1690634ddf47d49061192f90859060040161407f565b6020604051808303816000875af115801561194e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119729190614a1e565b7fffffffff0000000000000000000000000000000000000000000000000000000016146119fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a20636f756c64206e6f7420696e697420736f75726365000000006044820152606401610c62565b611a2460017f4e5f991bca30eca2d4643aaefa807e88f96a4a97398933d572a3c0d973004a0155565b611a2e8484613926565b507f4ddf47d4000000000000000000000000000000000000000000000000000000009a9950505050505050505050565b6000611a69866139ee565b611acf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a206f70657261746f72206e6f7420636f6e7472616374000000006044820152606401610c62565b611ad96006613185565b15611b0d57611b046395aae8bd60e01b878730888888604051602401610cc196959493929190614a3b565b611b0d57600080fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa925050508015611bb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611bae91810190614ac3565b60015b611c17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a206661696c65642067657474696e672062616c616e63650000006044820152606401610c62565b50611c226005613185565b15611c5657611c4d6345b5969960e01b878730888888604051602401610cc196959493929190614a3b565b611c5657600080fd5b507f4fc358590000000000000000000000000000000000000000000000000000000095945050505050565b7f27d542086d1e831d40b749e7f5509a626c3047a36d160781c40d5acc83e5b074543373ffffffffffffffffffffffffffffffffffffffff821614611d22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a20736f75726365206f6e6c792063616c6c0000000000000000006044820152606401610c62565b61108983836130a6565b7f3f106594dc74eeef980dae234cde8324dc2497b13d27a0c59e55bd2ca10a07c95473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611de2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f484f4c4f47524150483a2061646d696e206f6e6c792066756e6374696f6e00006044820152606401610c62565b7f3f106594dc74eeef980dae234cde8324dc2497b13d27a0c59e55bd2ca10a07c955565b6000611e138333846134d8565b611e1d6008613185565b15611e7f5760405173ffffffffffffffffffffffffffffffffffffffff8416602482015260448101839052611e76907f4a1fefbd0000000000000000000000000000000000000000000000000000000090606401610cc1565b611e7f57600080fd5b611e89838361337d565b611e936007613185565b15610ec75760405173ffffffffffffffffffffffffffffffffffffffff8416602482015260448101839052610ebe907f971c34b40000000000000000000000000000000000000000000000000000000090606401610cc1565b6000807f27d542086d1e831d40b749e7f5509a626c3047a36d160781c40d5acc83e5b0745490508073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8291906147c8565b91505090565b6060600b8054610ab790614775565b33600090815260086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015612032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f45524332303a206465637265617365642062656c6f77207a65726f00000000006044820152606401610c62565b82810361155a6004613185565b7f27d542086d1e831d40b749e7f5509a626c3047a36d160781c40d5acc83e5b074543373ffffffffffffffffffffffffffffffffffffffff8216146120e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a20736f75726365206f6e6c792063616c6c0000000000000000006044820152606401610c62565b6120eb8484846136bb565b50505050565b60006120fd600e613185565b156121655760405133602482015273ffffffffffffffffffffffffffffffffffffffff841660448201526064810183905261215c907f1ffb811f0000000000000000000000000000000000000000000000000000000090608401610cc1565b61216557600080fd5b6121703384846136bb565b61217a600d613185565b15610ec75760405133602482015273ffffffffffffffffffffffffffffffffffffffff8416604482015260648101839052610ebe907ff49062ca0000000000000000000000000000000000000000000000000000000090608401610cc1565b7f27d542086d1e831d40b749e7f5509a626c3047a36d160781c40d5acc83e5b074543373ffffffffffffffffffffffffffffffffffffffff82161461227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a20736f75726365206f6e6c792063616c6c0000000000000000006044820152606401610c62565b818360003760008083600034885af13d6000803e808015610318573d6000f35b600060606122c67fb4107f746e9496e8452accc7de63d1c5e14c19f510932daa04077cd49e8bd77a5490565b73ffffffffffffffffffffffffffffffffffffffff16630fffbaf36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612310573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233491906147c8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a20627269646765206f6e6c792063616c6c0000000000000000006044820152606401610c62565b600080806123d886880188614263565b9250925092508273ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461241c5761241c8389836134d8565b6124266002613185565b15612513576040805163ffffffff8b16602482015273ffffffffffffffffffffffffffffffffffffffff85811660448301528416606482015260848082018490528251808303909101815260a4909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8b1465c60000000000000000000000000000000000000000000000000000000017815282513390840183015282517f27d542086d1e831d40b749e7f5509a626c3047a36d160781c40d5acc83e5b0745460009384939201919034905af160203d036020873e808061250f573d6000fd5b5050505b61251d838261337d565b6040517fb7e036610000000000000000000000000000000000000000000000000000000090612556908590859085908990602001614adc565b6040516020818303038152906040529450945050505094509492505050565b600073ffffffffffffffffffffffffffffffffffffffff8516331461272a577fb4107f746e9496e8452accc7de63d1c5e14c19f510932daa04077cd49e8bd77a5473ffffffffffffffffffffffffffffffffffffffff16630fffbaf36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612600573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262491906147c8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561271a57507fb4107f746e9496e8452accc7de63d1c5e14c19f510932daa04077cd49e8bd77a5473ffffffffffffffffffffffffffffffffffffffff1663e7f43c686040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ea91906147c8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561272a5761272a8533856134d8565b612734600c613185565b156127645761275b632ca1667660e01b86868686604051602401610cc19493929190614adc565b61276457600080fd5b61276f8585856136bb565b612779600b613185565b1561163f576116366336fff06260e01b86868686604051602401610cc19493929190614adc565b7f3f106594dc74eeef980dae234cde8324dc2497b13d27a0c59e55bd2ca10a07c95473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f484f4c4f47524150483a2061646d696e206f6e6c792066756e6374696f6e00006044820152606401610c62565b808260003760008082600034875af13d6000803e808015610318573d6000f35b7f27d542086d1e831d40b749e7f5509a626c3047a36d160781c40d5acc83e5b074543373ffffffffffffffffffffffffffffffffffffffff821614612917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a20736f75726365206f6e6c792063616c6c0000000000000000006044820152606401610c62565b60405173ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f193505050501580156120eb573d6000803e3d6000fd5b834211156129c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a206578706972656420646561646c696e650000000000000000006044820152606401610c62565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886129f38c613a25565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000612a5b82613a63565b90506000612a6b85858885613acc565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a20696e76616c6964207369676e617475726500000000000000006044820152606401610c62565b612b0c6004613185565b15612b765760405173ffffffffffffffffffffffffffffffffffffffff808c1660248301528a16604482015260648101899052612b6d907f47abf3be0000000000000000000000000000000000000000000000000000000090608401610cc1565b612b7657600080fd5b612b818a8a8a613215565b612b8b6003613185565b15612bf55760405173ffffffffffffffffffffffffffffffffffffffff808c1660248301528a16604482015260648101899052612bec907f900f66ef0000000000000000000000000000000000000000000000000000000090608401610cc1565b612bf557600080fd5b50505050505050505050565b7fb56711ba6bd3ded7639fc335ee7524fe668a79d7558c85992e3f8494cf7727775473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f484f4c4f47524150483a206f776e6572206f6e6c792066756e6374696f6e00006044820152606401610c62565b6000612cc3600c613185565b15612cf357612cea632ca1667660e01b33868686604051602401610cc19493929190614adc565b612cf357600080fd5b612cfe3385856136bb565b612d08600b613185565b15611499576114906336fff06260e01b33868686604051602401610cc19493929190614adc565b7fb56711ba6bd3ded7639fc335ee7524fe668a79d7558c85992e3f8494cf7727775473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612de5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f484f4c4f47524150483a206f776e6572206f6e6c792066756e6374696f6e00006044820152606401610c62565b73ffffffffffffffffffffffffffffffffffffffff8116612e62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f484f4c4f47524150483a207a65726f20616464726573730000000000000000006044820152606401610c62565b7fb56711ba6bd3ded7639fc335ee7524fe668a79d7558c85992e3f8494cf77277755565b60006114ad7f3f106594dc74eeef980dae234cde8324dc2497b13d27a0c59e55bd2ca10a07c95490565b6000612eda7fb4107f746e9496e8452accc7de63d1c5e14c19f510932daa04077cd49e8bd77a5490565b73ffffffffffffffffffffffffffffffffffffffff16630fffbaf36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4891906147c8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612fdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a20627269646765206f6e6c792063616c6c0000000000000000006044820152606401610c62565b612fe683836130a6565b507ffad66f920000000000000000000000000000000000000000000000000000000092915050565b60006130387fb4107f746e9496e8452accc7de63d1c5e14c19f510932daa04077cd49e8bd77a5490565b73ffffffffffffffffffffffffffffffffffffffff1663ebac15f96040518163ffffffff1660e01b8152600401602060405180830381865afa158015613082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ad91906147c8565b73ffffffffffffffffffffffffffffffffffffffff8216613123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332303a206d696e74696e6720746f206275726e206164647265737300006044820152606401610c62565b80600960008282546131359190614b25565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120805483929061316f908490614b25565b90915550613181905060008383613d54565b5050565b6000600182600f81111561319b5761319b6146af565b600654901c166001146131af5760006131b2565b60015b92915050565b6000336020835101830152600080602084510160208501347f27d542086d1e831d40b749e7f5509a626c3047a36d160781c40d5acc83e5b074545af16040513d81016040523d6000823e818061320c573d82fd5b50519392505050565b73ffffffffffffffffffffffffffffffffffffffff8316613292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332303a206163636f756e74206973207a65726f206164647265737300006044820152606401610c62565b73ffffffffffffffffffffffffffffffffffffffff821661330f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332303a207370656e646572206973207a65726f206164647265737300006044820152606401610c62565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff82166133fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332303a206163636f756e74206973207a65726f206164647265737300006044820152606401610c62565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260409020548181101561348a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20616d6f756e7420657863656564732062616c616e63650000006044820152606401610c62565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604081208383039055600980548492906134c6908490614b3d565b90915550611089905083600084613d54565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526008602090815260408083209386168352929052205481811061354e5773ffffffffffffffffffffffffffffffffffffffff808516600090815260086020908152604080832093871683529290522082820390556120eb565b613558600f613185565b156136595760405173ffffffffffffffffffffffffffffffffffffffff808616602483015284166044820152606481018390526135b9907fa03318da0000000000000000000000000000000000000000000000000000000090608401610cc1565b61361f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a20616d6f756e74206578636565647320616c6c6f77616e6365006044820152606401610c62565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526008602090815260408083209387168352929052908120556120eb565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a20616d6f756e74206578636565647320616c6c6f77616e6365006044820152606401610c62565b73ffffffffffffffffffffffffffffffffffffffff8316613738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332303a206163636f756e74206973207a65726f206164647265737300006044820152606401610c62565b73ffffffffffffffffffffffffffffffffffffffff82166137b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f45524332303a20726563697069656e74206973207a65726f20616464726573736044820152606401610c62565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205481811015613845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20616d6f756e7420657863656564732062616c616e63650000006044820152606401610c62565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260076020526040808220858503905591851681529081208054849290613889908490614b25565b909155506120eb9050848484613d54565b60025460009073ffffffffffffffffffffffffffffffffffffffff16301480156138c5575060015446145b156138d1575060005490565b6114ad6005546003546004546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b815160208084019190912082519183019190912060038290556004819055466001557f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6139b88184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b600055600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000163017905560055550505050565b6000813f801580159061166657507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600d60205260408120805491829190613a5983614899565b9190505550919050565b60006131b2613a7061389a565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000601b8360ff161015613ae857613ae5601b84614b54565b92505b8260ff16601b1480613afd57508260ff16601c145b613b63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f45524332303a20696e76616c696420762d76616c7565000000000000000000006044820152606401610c62565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115613c5957613bb5847ffffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141614b3d565b935060ff8316601b03613bcb57601c9250613bd0565b601b92505b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411613c59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f45524332303a20696e76616c696420732d76616c7565000000000000000000006044820152606401610c62565b60408051600081526020810180835284905260ff851691810191909152606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613cac573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661168a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f45524332303a207a65726f2061646472657373207369676e65720000000000006044820152606401610c62565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613db391815260200190565b60405180910390a37fb4107f746e9496e8452accc7de63d1c5e14c19f510932daa04077cd49e8bd77a5473ffffffffffffffffffffffffffffffffffffffff16635ab1bd536040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4b91906147c8565b604080517f9b035625e569d1d2bf54830a290aefba7ab11610ba8490871dc62b86b63a8956602082015273ffffffffffffffffffffffffffffffffffffffff86811682840152858116606083015260808083018690528351808403909101815260a08301938490527fafa5886e00000000000000000000000000000000000000000000000000000000909352929092169163afa5886e91613eee9160a40161407f565b600060405180830381600087803b158015613f0857600080fd5b505af1158015613f1c573d6000803e3d6000fd5b50505050505050565b828054613f3190614775565b90600052602060002090601f016020900481019282613f535760008555613f99565b82601f10613f6c57805160ff1916838001178555613f99565b82800160010185558215613f99579182015b82811115613f99578251825591602001919060010190613f7e565b50613fa5929150613fa9565b5090565b5b80821115613fa55760008155600101613faa565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461174857600080fd5b600060208284031215613ffe57600080fd5b813561166681613fbe565b60005b8381101561402457818101518382015260200161400c565b838111156120eb5750506000910152565b6000815180845261404d816020860160208601614009565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006116666020830184614035565b803563ffffffff811681146140a657600080fd5b919050565b60008083601f8401126140bd57600080fd5b50813567ffffffffffffffff8111156140d557600080fd5b6020830191508360208285010111156140ed57600080fd5b9250929050565b60008060006040848603121561410957600080fd5b61411284614092565b9250602084013567ffffffffffffffff81111561412e57600080fd5b61413a868287016140ab565b9497909650939450505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461174857600080fd5b6000806040838503121561417c57600080fd5b823561418781614147565b946020939093013593505050565b60008083601f8401126141a757600080fd5b50813567ffffffffffffffff8111156141bf57600080fd5b6020830191508360208260051b85010111156140ed57600080fd5b600080600080604085870312156141f057600080fd5b843567ffffffffffffffff8082111561420857600080fd5b61421488838901614195565b9096509450602087013591508082111561422d57600080fd5b5061423a87828801614195565b95989497509550505050565b60006020828403121561425857600080fd5b813561166681614147565b60008060006060848603121561427857600080fd5b833561428381614147565b9250602084013561429381614147565b929592945050506040919091013590565b6000602082840312156142b657600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614333576143336142bd565b604052919050565b600067ffffffffffffffff821115614355576143556142bd565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261439257600080fd5b81356143a56143a08261433b565b6142ec565b8181528460208386010111156143ba57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156143e957600080fd5b813567ffffffffffffffff81111561440057600080fd5b61168a84828501614381565b60008060008060006080868803121561442457600080fd5b853561442f81614147565b9450602086013561443f81614147565b935060408601359250606086013567ffffffffffffffff81111561446257600080fd5b61446e888289016140ab565b969995985093965092949392505050565b60008060006040848603121561449457600080fd5b833561411281614147565b600080600080606085870312156144b557600080fd5b6144be85614092565b935060208501356144ce81614147565b9250604085013567ffffffffffffffff8111156144ea57600080fd5b61423a878288016140ab565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260406020820152600061168a6040830184614035565b6000806000806080858703121561454757600080fd5b843561455281614147565b9350602085013561456281614147565b925060408501359150606085013567ffffffffffffffff81111561458557600080fd5b61459187828801614381565b91505092959194509250565b60ff8116811461174857600080fd5b600080600080600080600060e0888a0312156145c757600080fd5b87356145d281614147565b965060208801356145e281614147565b9550604088013594506060880135935060808801356146008161459d565b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561463057600080fd5b823561463b81614147565b9150602083013561464b81614147565b809150509250929050565b60008060006060848603121561466b57600080fd5b833561467681614147565b925060208401359150604084013567ffffffffffffffff81111561469957600080fd5b6146a586828701614381565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6040810160068410614719577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9281527fffffffff000000000000000000000000000000000000000000000000000000009190911660209091015290565b805180151581146140a657600080fd5b60006020828403121561476c57600080fd5b6116668261474a565b600181811c9082168061478957607f821691505b6020821081036147c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000602082840312156147da57600080fd5b815161166681614147565b63ffffffff86168152600073ffffffffffffffffffffffffffffffffffffffff808716602084015280861660408401525083606083015260a0608083015261483060a0830184614035565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148ca576148ca61486a565b5060010190565b600082601f8301126148e257600080fd5b81516148f06143a08261433b565b81815284602083860101111561490557600080fd5b61168a826020830160208701614009565b80516140a68161459d565b600080600080600080600080610100898b03121561493e57600080fd5b885167ffffffffffffffff8082111561495657600080fd5b6149628c838d016148d1565b995060208b015191508082111561497857600080fd5b6149848c838d016148d1565b985061499260408c01614916565b975060608b0151965060808b01519150808211156149af57600080fd5b6149bb8c838d016148d1565b955060a08b01519150808211156149d157600080fd5b6149dd8c838d016148d1565b94506149eb60c08c0161474a565b935060e08b0151915080821115614a0157600080fd5b50614a0e8b828c016148d1565b9150509295985092959890939650565b600060208284031215614a3057600080fd5b815161166681613fbe565b600073ffffffffffffffffffffffffffffffffffffffff8089168352808816602084015280871660408401525084606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b600060208284031215614ad557600080fd5b5051919050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152614b1b6080830184614035565b9695505050505050565b60008219821115614b3857614b3861486a565b500190565b600082821015614b4f57614b4f61486a565b500390565b600060ff821660ff84168060ff03821115614b7157614b7161486a565b01939250505056fea164736f6c634300080d000a