diff --git a/abis/0.8.27/AgentFactory.json b/abis/0.8.28/AgentFactory.json similarity index 99% rename from abis/0.8.27/AgentFactory.json rename to abis/0.8.28/AgentFactory.json index 59d5b7f..277aec1 100644 --- a/abis/0.8.27/AgentFactory.json +++ b/abis/0.8.28/AgentFactory.json @@ -532,8 +532,8 @@ "type": "function" } ], - "bytecode": "0x60a060405234801561000f575f5ffd5b5060405161401138038061401183398101604081905261002e91610050565b6001600160a01b03166080525f80546001600160a01b0319163317905561007d565b5f60208284031215610060575f5ffd5b81516001600160a01b0381168114610076575f5ffd5b9392505050565b608051613f6f6100a25f395f8181608e0152818161041b01526104ce0152613f6f5ff3fe608060405234801561000f575f5ffd5b5060043610610085575f3560e01c80638da5cb5b116100585780638da5cb5b146101205780639683fe3e1461013f578063a6f9dae11461017c578063ffa1ad741461018f575f5ffd5b80630d1cfcae146100895780633f4ba83a146100da5780635c975abb146100e45780638456cb5914610118575b5f5ffd5b6100b07f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100e26101d8565b005b5f546101089074010000000000000000000000000000000000000000900460ff1681565b60405190151581526020016100d1565b6100e261029f565b5f546100b09073ffffffffffffffffffffffffffffffffffffffff1681565b61015261014d3660046106ff565b610378565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016100d1565b6100e261018a366004610742565b6105a0565b6101cb6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516100d19190610762565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461024e575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044015b60405180910390fd5b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16815560405133917faeb196d352664784d1900b0e7414a8face7d29f4dae8c4b0cf68ed477423bbf491a2565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610310575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610245565b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017815560405133917f5ee71a369c8672edded508e624ffc9257fa1ae6886ef32905c18e60196bca39991a2565b5f8054819074010000000000000000000000000000000000000000900460ff16156103cf576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fa3def92300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063a3def923906044016020604051808303815f875af1158015610461573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048591906107b5565b6040805173ffffffffffffffffffffffffffffffffffffffff891660208201529081018290529092505f90606001604051602081830303815290604052805190602001209050807f00000000000000000000000000000000000000000000000000000000000000008487876040516104fc906106ca565b73ffffffffffffffffffffffffffffffffffffffff94851681526020810193909352604083019190915290911660608201526080018190604051809103905ff590508015801561054e573d5f5f3e3d5ffd5b50915084838373ffffffffffffffffffffffffffffffffffffffff167f67a2e45041c70013518c5b9b849a6944a6c17ff44d66be1c707020460ecbd1db60405160405180910390a45094509492505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610611575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610245565b73ffffffffffffffffffffffffffffffffffffffff811661065e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b61376d806107cd83390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146106fa575f5ffd5b919050565b5f5f5f5f60808587031215610712575f5ffd5b61071b856106d7565b93506020850135925060408501359150610737606086016106d7565b905092959194509250565b5f60208284031215610752575f5ffd5b61075b826106d7565b9392505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f602082840312156107c5575f5ffd5b505191905056fe60c06040525f5f556001600655348015610017575f5ffd5b5060405161376d38038061376d83398101604081905261003691610469565b604080516001600160a01b038616602082015280820185905281518082038301815260609091019091528490849061006d8161016b565b5050506001600160a01b0384166100975760405163d92e233d60e01b815260040160405180910390fd5b6040516331a9108f60e11b8152600481018490525f906001600160a01b03861690636352211e90602401602060405180830381865afa1580156100dc573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061010091906104ad565b90506001600160a01b03811661013157604051630ede975960e01b8152600481018590526024015b60405180910390fd5b600580546001600160a01b0319166001600160a01b03841617905560018390554660a05261015d6101cd565b608052506105959350505050565b610173610295565b51156101c15760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610128565b6101ca816102fd565b50565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d093525604051806040016040528060058152602001640312e312e360dc1b81525060405160200161023e91906104cd565b60408051601f1981840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60606102f86102f3604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6103c1565b905090565b5f61030782610416565b90505f8151602083015ff0905061036d604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6001600160a01b0316816001600160a01b0316146103bc5760405162461bcd60e51b815260206004820152600c60248201526b15dc9a5d194819985a5b195960a21b6044820152606401610128565b505050565b6060813b600181116103e257505060408051602081019091525f8152919050565b806103ec81610516565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b606081516001610426919061052b565b82604051602001610438929190610544565b6040516020818303038152906040529050919050565b80516001600160a01b0381168114610464575f5ffd5b919050565b5f5f5f5f6080858703121561047c575f5ffd5b6104858561044e565b60208601516040870151919550935091506104a26060860161044e565b905092959194509250565b5f602082840312156104bd575f5ffd5b6104c68261044e565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52601160045260245ffd5b5f8161052457610524610502565b505f190190565b8082018082111561053e5761053e610502565b92915050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201525f600e820181905282518060208501600f85015e5f9201600f019182525092915050565b60805160a0516131a96105c45f395f81816105ab015261172a01525f81816108cd015261175f01526131a95ff3fe6080604052600436106102ac575f3560e01c8063a035b1fe11610165578063d843b7f4116100c6578063f5dcb7bb1161007c578063f698da2511610062578063f698da25146108bc578063fc0c546a146108ef578063ffa1ad7414610903575f5ffd5b8063f5dcb7bb1461086a578063f6171e441461089d575f5ffd5b8063e7d915cf116100ac578063e7d915cf146107f2578063ed24911d14610811578063f23a6e6114610825575f5ffd5b8063d843b7f414610785578063d8a4676f146107c6575f5ffd5b8063b94207d31161011b578063bdf8631711610101578063bdf8631714610719578063c7dec3fc1461072e578063cbd6407a1461075a575f5ffd5b8063b94207d3146106bf578063bc197c81146106d2575f5ffd5b8063a669aaf91161014b578063a669aaf914610671578063affed0e014610686578063b0d691fe14610699575f5ffd5b8063a035b1fe1461063d578063a4f9edbf14610652575f5ffd5b806358ce09091161020f57806391b7f5ed116101c55780639a8a0592116101ab5780639a8a05921461059a5780639c5e9590146105cd5780639ec4a5bf1461061e575f5ffd5b806391b7f5ed14610550578063982c0db31461056f575f5ffd5b806379412518116101f557806379412518146104bb5780637af73473146104ce5780638fb847ef1461050f575f5ffd5b806358ce0909146104605780636d70f7ae1461048c575f5ffd5b806317d70f7c116102645780633a871cdd1161024a5780633a871cdd1461040d5780634954bbf11461042c5780634ada3e611461044b575f5ffd5b806317d70f7c146103ce5780631bbbeeb8146103e2575f5ffd5b8063150b7a0211610294578063150b7a021461031b578063157305fe146103905780631626ba7e146103af575f5ffd5b806223de29146102b7578062427c54146102dd575f5ffd5b366102b357005b5f5ffd5b3480156102c2575f5ffd5b506102db6102d1366004612748565b5050505050505050565b005b3480156102e8575f5ffd5b506103086102f73660046127f7565b60086020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610326575f5ffd5b5061035f610335366004612812565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610312565b34801561039b575f5ffd5b506102db6103aa366004612956565b61094b565b3480156103ba575f5ffd5b5061035f6103c9366004612956565b610ac5565b3480156103d9575f5ffd5b50610308610c68565b3480156103ed575f5ffd5b506103086103fc3660046127f7565b60076020525f908152604090205481565b348015610418575f5ffd5b5061030861042736600461299a565b610c8c565b348015610437575f5ffd5b506102db6104463660046129e9565b610cc8565b348015610456575f5ffd5b5061030860035481565b34801561046b575f5ffd5b5061047f61047a366004612a46565b610eb7565b6040516103129190612a66565b348015610497575f5ffd5b506104ab6104a63660046127f7565b61100e565b6040519015158152602001610312565b6102db6104c9366004612aa8565b6110e0565b3480156104d9575f5ffd5b506103086104e83660046127f7565b73ffffffffffffffffffffffffffffffffffffffff165f9081526007602052604090205490565b34801561051a575f5ffd5b506103086105293660046127f7565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b34801561055b575f5ffd5b506102db61056a366004612afe565b611163565b34801561057a575f5ffd5b506103086105893660046127f7565b60096020525f908152604090205481565b3480156105a5575f5ffd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d8575f5ffd5b506005546105f99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610312565b348015610629575f5ffd5b50610308610638366004612aa8565b611251565b348015610648575f5ffd5b5061030860015481565b34801561065d575f5ffd5b506102db61066c366004612b15565b611305565b34801561067c575f5ffd5b5061030860045481565b348015610691575f5ffd5b505f54610308565b3480156106a4575f5ffd5b50730576a174d229e3cfa37253523e645a78a0c91b576105f9565b6103086106cd366004612b15565b611381565b3480156106dd575f5ffd5b5061035f6106ec366004612b90565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610724575f5ffd5b5061030860025481565b348015610739575f5ffd5b5061074d610748366004612c33565b61143c565b6040516103129190612cf1565b348015610765575f5ffd5b506103086107743660046127f7565b600c6020525f908152604090205481565b348015610790575f5ffd5b506105f961079f366004612afe565b600b6020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156107d1575f5ffd5b506107e56107e0366004612afe565b611526565b6040516103129190612d30565b3480156107fd575f5ffd5b506102db61080c366004612afe565b6115fb565b34801561081c575f5ffd5b50610308611727565b348015610830575f5ffd5b5061035f61083f366004612d6f565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b348015610875575f5ffd5b506103087f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b3480156108a8575f5ffd5b506103086108b7366004612a46565b611781565b3480156108c7575f5ffd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156108fa575f5ffd5b506105f96117a3565b34801561090e575f5ffd5b5061074d6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6109543361100e565b80610972575033730576a174d229e3cfa37253523e645a78a0c91b57145b610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084015b60405180910390fd5b60016006541115610a40576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff1615610ab1576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b610abb82826117c0565b5050600160065550565b5f5f5f5f610ae585602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610bfb5782858301602001610b068261100e565b158015610b29575073ffffffffffffffffffffffffffffffffffffffff82163014155b15610b5c57507fffffffff000000000000000000000000000000000000000000000000000000009450610c629350505050565b6040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690631626ba7e90610bb0908b908590600401612de6565b602060405180830381865afa158015610bcb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bef9190612dfe565b95505050505050610c62565b610c0a6104a6878386866119d5565b15610c3b57507f1626ba7e000000000000000000000000000000000000000000000000000000009250610c62915050565b507fffffffff00000000000000000000000000000000000000000000000000000000925050505b92915050565b5f5f610c726119f1565b806020019051810190610c859190612e3d565b9392505050565b5f610c95611ac0565b610c9f8484611b3f565b9050610cae6040850185612e69565b90505f03610cbf57610cbf84611c13565b610c8582611c91565b610cd13361100e565b80610cef575033730576a174d229e3cfa37253523e645a78a0c91b57145b610d7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60016006541115610db8576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff16610e0c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e1785856117c0565b805190915015610eab576005546040517f56d0819e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906356d0819e90610e7d908890859088908890600401612eca565b5f604051808303815f87803b158015610e94575f5ffd5b505af1158015610ea6573d5f5f3e3d5ffd5b505050505b50506001600655505050565b6002546060905f849003610ec9578093505b80610ed48486612f38565b1115610f2157610ee48385612f38565b6040517f7ae596850000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016109fa565b8315611007578367ffffffffffffffff811115610f4057610f40612880565b604051908082528060200260200182016040528015610f69578160200160208202803683370190505b505f808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e4549193505b84811015610fbc575f828152600a60205260409020600101549150600101610f99565b505f5b858110156110045781848281518110610fda57610fda612f4b565b6020908102919091018101919091525f838152600a90915260409020600101549150600101610fbf565b50505b5092915050565b5f5f5f6110196119f1565b80602001905181019061102c9190612e3d565b915091508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161108291815260200190565b602060405180830381865afa15801561109d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c19190612f78565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611153576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b61115e838383611d05565b505050565b61116c3361100e565b8061118a575033730576a174d229e3cfa37253523e645a78a0c91b57145b611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60018190556040518181527f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe09060200160405180910390a150565b5f61125a611727565b84848460405160200161126f93929190612f93565b604051602081830303815290604052805190602001206040516020016112c79291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b61130d6119f1565b5115611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064016109fa565b61137e81611ead565b50565b6005545f9073ffffffffffffffffffffffffffffffffffffffff16156113ef576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b335f818152600c602052604090205461140a91908490611251565b335f908152600c6020526040812080549293509061142783612fd1565b9190505550611437338383611d05565b919050565b60606114473361100e565b80611465575033730576a174d229e3cfa37253523e645a78a0c91b57145b6114f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b5f61150b878787878715611505578761201d565b5a61201d565b925090508061151c57815160208301fd5b5095945050505050565b5f818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff1615611437575f828152600a60205260408082208151808301928390529160029082845b81548152602001906001019080831161156d5750505050509050805f6002811061159957611599612f4b565b60200201511580156115ad57506020810151155b80156115e257505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548314155b156115f057600291506115f5565b600191505b50919050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461166e576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b5f818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16806116c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116d38183612120565b8073ffffffffffffffffffffffffffffffffffffffff167fa36a540c5fea3a5e69d4b1c2247b28a93fd183ef1314af26a8db7b3ae080bcd08360405161171b91815260200190565b60405180910390a25050565b5f7f0000000000000000000000000000000000000000000000000000000000000000461461175c57611757612273565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600a602052815f5260405f20816002811061179a575f80fd5b01549150829050565b5f5f6117ad6119f1565b806020019051810190610c629190612f78565b5f828152600b60205260408082205460055491517ff2e433bf0000000000000000000000000000000000000000000000000000000081526004810186905260609373ffffffffffffffffffffffffffffffffffffffff928316939092169063f2e433bf906024016080604051808303815f875af1158015611843573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118679190613008565b602081015190915073ffffffffffffffffffffffffffffffffffffffff1615611891575050610c62565b73ffffffffffffffffffffffffffffffffffffffff82166119275760055473ffffffffffffffffffffffffffffffffffffffff16156118d257806040015191505b73ffffffffffffffffffffffffffffffffffffffff8216611922576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018690526024016109fa565b611931565b6119318286612120565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260086020526040812080548695509161196483612fd1565b909155505060048054905f61197883612fd1565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f0cd979445339c62199996f208428d987b1cea24d18e62b79ec24d94b636e8b7086856040516119c5929190612de6565b60405180910390a2505092915050565b5f5f5f6119e487878787612371565b9150915061151c81612459565b6060611757611abb6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b61260b565b33730576a174d229e3cfa37253523e645a78a0c91b5714611b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016109fa565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81207f1626ba7e00000000000000000000000000000000000000000000000000000000611bd982611ba0610140880188612e69565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ac592505050565b7fffffffff000000000000000000000000000000000000000000000000000000001614611c0a576001915050610c62565b505f9392505050565b5f805460208301359180611c2683612fd1565b919050551461137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206e6f6e63650000000000000000000000000000000000000060448201526064016109fa565b801561137e576040515f9033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d805f8114611cf9576040519150601f19603f3d011682016040523d82523d5f602084013e611cfe565b606091505b5050505050565b611d10348284612660565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600760205260408120805491611d4083612fd1565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f908152600960205260408120805491611d7583612fd1565b90915550505f818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055600a9091528082207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e480546001830181905590859055808452918320849055600280547f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e394929392909190611e3c83612fd1565b909155505060038054905f611e5083612fd1565b91905055508573ffffffffffffffffffffffffffffffffffffffff167f4bda649efe6b98b0f9c1d5e859c29e20910f45c66dabfe6fad4a4881f7faf9cc8587604051611e9d929190612de6565b60405180910390a2505050505050565b5f611eb7826126aa565b90505f8151602083015ff09050611f896040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461115e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5772697465206661696c6564000000000000000000000000000000000000000060448201526064016109fa565b5f6060600184600181111561203457612034612d03565b036120a8578673ffffffffffffffffffffffffffffffffffffffff16838660405161205f91906130ac565b5f604051808303818686f4925050503d805f8114612098576040519150601f19603f3d011682016040523d82523d5f602084013e61209d565b606091505b509092509050612116565b8673ffffffffffffffffffffffffffffffffffffffff168387876040516120cf91906130ac565b5f60405180830381858888f193505050503d805f811461210a576040519150601f19603f3d011682016040523d82523d5f602084013e61210f565b606091505b5090925090505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600960205260408120805491612150836130b7565b909155505060028054905f612164836130b7565b90915550505f818152600a60205260408082208151808301928390529160029082845b8154815260200190600101908083116121875750505050509050805f600281106121b3576121b3612f4b565b60200201511580156121c757506020810151155b80156121fc57505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548214155b15612236576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018390526024016109fa565b6020818101805183515f908152600a9093526040808420600190810192909255935191518352838320919091559281529081208181559091015550565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d0935256040518060400160405280600581526020017f312e312e300000000000000000000000000000000000000000000000000000008152506040516020016122fc9190612cf1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156123a657505f90506003612450565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156123f7573d5f5f3e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661244a575f60019250925050612450565b91505f90505b94509492505050565b5f81600481111561246c5761246c612d03565b036124745750565b600181600481111561248857612488612d03565b036124ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109fa565b600281600481111561250357612503612d03565b0361256a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109fa565b600381600481111561257e5761257e612d03565b0361137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016109fa565b6060813b6001811161262c57505060408051602081019091525f8152919050565b80612636816130b7565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b60015483101561115e576001546040517fb48978280000000000000000000000000000000000000000000000000000000081526109fa918591600401918252602082015260400190565b6060815160016126ba9190612f38565b826040516020016126cc9291906130eb565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461137e575f5ffd5b5f5f83601f840112612713575f5ffd5b50813567ffffffffffffffff81111561272a575f5ffd5b602083019150836020828501011115612741575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b03121561275f575f5ffd5b883561276a816126e2565b9750602089013561277a816126e2565b9650604089013561278a816126e2565b955060608901359450608089013567ffffffffffffffff8111156127ac575f5ffd5b6127b88b828c01612703565b90955093505060a089013567ffffffffffffffff8111156127d7575f5ffd5b6127e38b828c01612703565b999c989b5096995094979396929594505050565b5f60208284031215612807575f5ffd5b8135610c85816126e2565b5f5f5f5f5f60808688031215612826575f5ffd5b8535612831816126e2565b94506020860135612841816126e2565b935060408601359250606086013567ffffffffffffffff811115612863575f5ffd5b61286f88828901612703565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f8301126128bc575f5ffd5b813567ffffffffffffffff8111156128d6576128d6612880565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561292357612923612880565b60405281815283820160200185101561293a575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612967575f5ffd5b82359150602083013567ffffffffffffffff811115612984575f5ffd5b612990858286016128ad565b9150509250929050565b5f5f5f606084860312156129ac575f5ffd5b833567ffffffffffffffff8111156129c2575f5ffd5b840161016081870312156129d4575f5ffd5b95602085013595506040909401359392505050565b5f5f5f5f608085870312156129fc575f5ffd5b84359350602085013567ffffffffffffffff811115612a19575f5ffd5b612a25878288016128ad565b9350506040850135612a36816126e2565b9396929550929360600135925050565b5f5f60408385031215612a57575f5ffd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b81811015612a9d578351835260209384019390920191600101612a7f565b509095945050505050565b5f5f5f60608486031215612aba575f5ffd5b8335612ac5816126e2565b9250602084013567ffffffffffffffff811115612ae0575f5ffd5b612aec868287016128ad565b93969395505050506040919091013590565b5f60208284031215612b0e575f5ffd5b5035919050565b5f60208284031215612b25575f5ffd5b813567ffffffffffffffff811115612b3b575f5ffd5b612b47848285016128ad565b949350505050565b5f5f83601f840112612b5f575f5ffd5b50813567ffffffffffffffff811115612b76575f5ffd5b6020830191508360208260051b8501011115612741575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612ba7575f5ffd5b8835612bb2816126e2565b97506020890135612bc2816126e2565b9650604089013567ffffffffffffffff811115612bdd575f5ffd5b612be98b828c01612b4f565b909750955050606089013567ffffffffffffffff811115612c08575f5ffd5b612c148b828c01612b4f565b909550935050608089013567ffffffffffffffff8111156127d7575f5ffd5b5f5f5f5f5f60a08688031215612c47575f5ffd5b8535612c52816126e2565b945060208601359350604086013567ffffffffffffffff811115612c74575f5ffd5b612c80888289016128ad565b935050606086013560028110612c94575f5ffd5b949793965091946080013592915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610c856020830184612ca5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020810160038310612d69577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f5f5f5f5f5f60a08789031215612d84575f5ffd5b8635612d8f816126e2565b95506020870135612d9f816126e2565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dc8575f5ffd5b612dd489828a01612703565b979a9699509497509295939492505050565b828152604060208201525f612b476040830184612ca5565b5f60208284031215612e0e575f5ffd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c85575f5ffd5b5f5f60408385031215612e4e575f5ffd5b8251612e59816126e2565b6020939093015192949293505050565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e9c575f5ffd5b83018035915067ffffffffffffffff821115612eb6575f5ffd5b602001915036819003821315612741575f5ffd5b848152608060208201525f612ee26080830186612ca5565b73ffffffffffffffffffffffffffffffffffffffff949094166040830152506060015292915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610c6257610c62612f0b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612f88575f5ffd5b8151610c85816126e2565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f612fc16060830185612ca5565b9050826040830152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361300157613001612f0b565b5060010190565b5f6080828403128015613019575f5ffd5b506040516080810167ffffffffffffffff8111828210171561303d5761303d612880565b604052825161304b816126e2565b8152602083015161305b816126e2565b6020820152604083015161306e816126e2565b6040820152606083015163ffffffff81168114613089575f5ffd5b60608201529392505050565b5f81518060208401855e5f93019283525090919050565b5f610c858284613095565b5f816130c5576130c5612f0b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201525f600e8201525f612b47600f83018461309556fea2646970667358221220959b491a03df420a39d9217bff79fea47ed3d14b1b9e42dcdf18b41c9b14edca64736f6c634300081b0033a2646970667358221220e22adbd43bc3fea7d153c26066457f821c1d3642b50b27a868be63d09b94812164736f6c634300081b0033", - "deployedBytecode": "0x608060405234801561000f575f5ffd5b5060043610610085575f3560e01c80638da5cb5b116100585780638da5cb5b146101205780639683fe3e1461013f578063a6f9dae11461017c578063ffa1ad741461018f575f5ffd5b80630d1cfcae146100895780633f4ba83a146100da5780635c975abb146100e45780638456cb5914610118575b5f5ffd5b6100b07f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100e26101d8565b005b5f546101089074010000000000000000000000000000000000000000900460ff1681565b60405190151581526020016100d1565b6100e261029f565b5f546100b09073ffffffffffffffffffffffffffffffffffffffff1681565b61015261014d3660046106ff565b610378565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016100d1565b6100e261018a366004610742565b6105a0565b6101cb6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516100d19190610762565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461024e575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044015b60405180910390fd5b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16815560405133917faeb196d352664784d1900b0e7414a8face7d29f4dae8c4b0cf68ed477423bbf491a2565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610310575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610245565b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017815560405133917f5ee71a369c8672edded508e624ffc9257fa1ae6886ef32905c18e60196bca39991a2565b5f8054819074010000000000000000000000000000000000000000900460ff16156103cf576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fa3def92300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063a3def923906044016020604051808303815f875af1158015610461573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048591906107b5565b6040805173ffffffffffffffffffffffffffffffffffffffff891660208201529081018290529092505f90606001604051602081830303815290604052805190602001209050807f00000000000000000000000000000000000000000000000000000000000000008487876040516104fc906106ca565b73ffffffffffffffffffffffffffffffffffffffff94851681526020810193909352604083019190915290911660608201526080018190604051809103905ff590508015801561054e573d5f5f3e3d5ffd5b50915084838373ffffffffffffffffffffffffffffffffffffffff167f67a2e45041c70013518c5b9b849a6944a6c17ff44d66be1c707020460ecbd1db60405160405180910390a45094509492505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610611575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610245565b73ffffffffffffffffffffffffffffffffffffffff811661065e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b61376d806107cd83390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146106fa575f5ffd5b919050565b5f5f5f5f60808587031215610712575f5ffd5b61071b856106d7565b93506020850135925060408501359150610737606086016106d7565b905092959194509250565b5f60208284031215610752575f5ffd5b61075b826106d7565b9392505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f602082840312156107c5575f5ffd5b505191905056fe60c06040525f5f556001600655348015610017575f5ffd5b5060405161376d38038061376d83398101604081905261003691610469565b604080516001600160a01b038616602082015280820185905281518082038301815260609091019091528490849061006d8161016b565b5050506001600160a01b0384166100975760405163d92e233d60e01b815260040160405180910390fd5b6040516331a9108f60e11b8152600481018490525f906001600160a01b03861690636352211e90602401602060405180830381865afa1580156100dc573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061010091906104ad565b90506001600160a01b03811661013157604051630ede975960e01b8152600481018590526024015b60405180910390fd5b600580546001600160a01b0319166001600160a01b03841617905560018390554660a05261015d6101cd565b608052506105959350505050565b610173610295565b51156101c15760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610128565b6101ca816102fd565b50565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d093525604051806040016040528060058152602001640312e312e360dc1b81525060405160200161023e91906104cd565b60408051601f1981840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60606102f86102f3604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6103c1565b905090565b5f61030782610416565b90505f8151602083015ff0905061036d604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6001600160a01b0316816001600160a01b0316146103bc5760405162461bcd60e51b815260206004820152600c60248201526b15dc9a5d194819985a5b195960a21b6044820152606401610128565b505050565b6060813b600181116103e257505060408051602081019091525f8152919050565b806103ec81610516565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b606081516001610426919061052b565b82604051602001610438929190610544565b6040516020818303038152906040529050919050565b80516001600160a01b0381168114610464575f5ffd5b919050565b5f5f5f5f6080858703121561047c575f5ffd5b6104858561044e565b60208601516040870151919550935091506104a26060860161044e565b905092959194509250565b5f602082840312156104bd575f5ffd5b6104c68261044e565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52601160045260245ffd5b5f8161052457610524610502565b505f190190565b8082018082111561053e5761053e610502565b92915050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201525f600e820181905282518060208501600f85015e5f9201600f019182525092915050565b60805160a0516131a96105c45f395f81816105ab015261172a01525f81816108cd015261175f01526131a95ff3fe6080604052600436106102ac575f3560e01c8063a035b1fe11610165578063d843b7f4116100c6578063f5dcb7bb1161007c578063f698da2511610062578063f698da25146108bc578063fc0c546a146108ef578063ffa1ad7414610903575f5ffd5b8063f5dcb7bb1461086a578063f6171e441461089d575f5ffd5b8063e7d915cf116100ac578063e7d915cf146107f2578063ed24911d14610811578063f23a6e6114610825575f5ffd5b8063d843b7f414610785578063d8a4676f146107c6575f5ffd5b8063b94207d31161011b578063bdf8631711610101578063bdf8631714610719578063c7dec3fc1461072e578063cbd6407a1461075a575f5ffd5b8063b94207d3146106bf578063bc197c81146106d2575f5ffd5b8063a669aaf91161014b578063a669aaf914610671578063affed0e014610686578063b0d691fe14610699575f5ffd5b8063a035b1fe1461063d578063a4f9edbf14610652575f5ffd5b806358ce09091161020f57806391b7f5ed116101c55780639a8a0592116101ab5780639a8a05921461059a5780639c5e9590146105cd5780639ec4a5bf1461061e575f5ffd5b806391b7f5ed14610550578063982c0db31461056f575f5ffd5b806379412518116101f557806379412518146104bb5780637af73473146104ce5780638fb847ef1461050f575f5ffd5b806358ce0909146104605780636d70f7ae1461048c575f5ffd5b806317d70f7c116102645780633a871cdd1161024a5780633a871cdd1461040d5780634954bbf11461042c5780634ada3e611461044b575f5ffd5b806317d70f7c146103ce5780631bbbeeb8146103e2575f5ffd5b8063150b7a0211610294578063150b7a021461031b578063157305fe146103905780631626ba7e146103af575f5ffd5b806223de29146102b7578062427c54146102dd575f5ffd5b366102b357005b5f5ffd5b3480156102c2575f5ffd5b506102db6102d1366004612748565b5050505050505050565b005b3480156102e8575f5ffd5b506103086102f73660046127f7565b60086020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610326575f5ffd5b5061035f610335366004612812565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610312565b34801561039b575f5ffd5b506102db6103aa366004612956565b61094b565b3480156103ba575f5ffd5b5061035f6103c9366004612956565b610ac5565b3480156103d9575f5ffd5b50610308610c68565b3480156103ed575f5ffd5b506103086103fc3660046127f7565b60076020525f908152604090205481565b348015610418575f5ffd5b5061030861042736600461299a565b610c8c565b348015610437575f5ffd5b506102db6104463660046129e9565b610cc8565b348015610456575f5ffd5b5061030860035481565b34801561046b575f5ffd5b5061047f61047a366004612a46565b610eb7565b6040516103129190612a66565b348015610497575f5ffd5b506104ab6104a63660046127f7565b61100e565b6040519015158152602001610312565b6102db6104c9366004612aa8565b6110e0565b3480156104d9575f5ffd5b506103086104e83660046127f7565b73ffffffffffffffffffffffffffffffffffffffff165f9081526007602052604090205490565b34801561051a575f5ffd5b506103086105293660046127f7565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b34801561055b575f5ffd5b506102db61056a366004612afe565b611163565b34801561057a575f5ffd5b506103086105893660046127f7565b60096020525f908152604090205481565b3480156105a5575f5ffd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d8575f5ffd5b506005546105f99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610312565b348015610629575f5ffd5b50610308610638366004612aa8565b611251565b348015610648575f5ffd5b5061030860015481565b34801561065d575f5ffd5b506102db61066c366004612b15565b611305565b34801561067c575f5ffd5b5061030860045481565b348015610691575f5ffd5b505f54610308565b3480156106a4575f5ffd5b50730576a174d229e3cfa37253523e645a78a0c91b576105f9565b6103086106cd366004612b15565b611381565b3480156106dd575f5ffd5b5061035f6106ec366004612b90565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610724575f5ffd5b5061030860025481565b348015610739575f5ffd5b5061074d610748366004612c33565b61143c565b6040516103129190612cf1565b348015610765575f5ffd5b506103086107743660046127f7565b600c6020525f908152604090205481565b348015610790575f5ffd5b506105f961079f366004612afe565b600b6020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156107d1575f5ffd5b506107e56107e0366004612afe565b611526565b6040516103129190612d30565b3480156107fd575f5ffd5b506102db61080c366004612afe565b6115fb565b34801561081c575f5ffd5b50610308611727565b348015610830575f5ffd5b5061035f61083f366004612d6f565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b348015610875575f5ffd5b506103087f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b3480156108a8575f5ffd5b506103086108b7366004612a46565b611781565b3480156108c7575f5ffd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156108fa575f5ffd5b506105f96117a3565b34801561090e575f5ffd5b5061074d6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6109543361100e565b80610972575033730576a174d229e3cfa37253523e645a78a0c91b57145b610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084015b60405180910390fd5b60016006541115610a40576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff1615610ab1576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b610abb82826117c0565b5050600160065550565b5f5f5f5f610ae585602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610bfb5782858301602001610b068261100e565b158015610b29575073ffffffffffffffffffffffffffffffffffffffff82163014155b15610b5c57507fffffffff000000000000000000000000000000000000000000000000000000009450610c629350505050565b6040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690631626ba7e90610bb0908b908590600401612de6565b602060405180830381865afa158015610bcb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bef9190612dfe565b95505050505050610c62565b610c0a6104a6878386866119d5565b15610c3b57507f1626ba7e000000000000000000000000000000000000000000000000000000009250610c62915050565b507fffffffff00000000000000000000000000000000000000000000000000000000925050505b92915050565b5f5f610c726119f1565b806020019051810190610c859190612e3d565b9392505050565b5f610c95611ac0565b610c9f8484611b3f565b9050610cae6040850185612e69565b90505f03610cbf57610cbf84611c13565b610c8582611c91565b610cd13361100e565b80610cef575033730576a174d229e3cfa37253523e645a78a0c91b57145b610d7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60016006541115610db8576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff16610e0c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e1785856117c0565b805190915015610eab576005546040517f56d0819e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906356d0819e90610e7d908890859088908890600401612eca565b5f604051808303815f87803b158015610e94575f5ffd5b505af1158015610ea6573d5f5f3e3d5ffd5b505050505b50506001600655505050565b6002546060905f849003610ec9578093505b80610ed48486612f38565b1115610f2157610ee48385612f38565b6040517f7ae596850000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016109fa565b8315611007578367ffffffffffffffff811115610f4057610f40612880565b604051908082528060200260200182016040528015610f69578160200160208202803683370190505b505f808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e4549193505b84811015610fbc575f828152600a60205260409020600101549150600101610f99565b505f5b858110156110045781848281518110610fda57610fda612f4b565b6020908102919091018101919091525f838152600a90915260409020600101549150600101610fbf565b50505b5092915050565b5f5f5f6110196119f1565b80602001905181019061102c9190612e3d565b915091508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161108291815260200190565b602060405180830381865afa15801561109d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c19190612f78565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611153576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b61115e838383611d05565b505050565b61116c3361100e565b8061118a575033730576a174d229e3cfa37253523e645a78a0c91b57145b611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60018190556040518181527f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe09060200160405180910390a150565b5f61125a611727565b84848460405160200161126f93929190612f93565b604051602081830303815290604052805190602001206040516020016112c79291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b61130d6119f1565b5115611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064016109fa565b61137e81611ead565b50565b6005545f9073ffffffffffffffffffffffffffffffffffffffff16156113ef576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b335f818152600c602052604090205461140a91908490611251565b335f908152600c6020526040812080549293509061142783612fd1565b9190505550611437338383611d05565b919050565b60606114473361100e565b80611465575033730576a174d229e3cfa37253523e645a78a0c91b57145b6114f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b5f61150b878787878715611505578761201d565b5a61201d565b925090508061151c57815160208301fd5b5095945050505050565b5f818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff1615611437575f828152600a60205260408082208151808301928390529160029082845b81548152602001906001019080831161156d5750505050509050805f6002811061159957611599612f4b565b60200201511580156115ad57506020810151155b80156115e257505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548314155b156115f057600291506115f5565b600191505b50919050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461166e576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b5f818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16806116c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116d38183612120565b8073ffffffffffffffffffffffffffffffffffffffff167fa36a540c5fea3a5e69d4b1c2247b28a93fd183ef1314af26a8db7b3ae080bcd08360405161171b91815260200190565b60405180910390a25050565b5f7f0000000000000000000000000000000000000000000000000000000000000000461461175c57611757612273565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600a602052815f5260405f20816002811061179a575f80fd5b01549150829050565b5f5f6117ad6119f1565b806020019051810190610c629190612f78565b5f828152600b60205260408082205460055491517ff2e433bf0000000000000000000000000000000000000000000000000000000081526004810186905260609373ffffffffffffffffffffffffffffffffffffffff928316939092169063f2e433bf906024016080604051808303815f875af1158015611843573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118679190613008565b602081015190915073ffffffffffffffffffffffffffffffffffffffff1615611891575050610c62565b73ffffffffffffffffffffffffffffffffffffffff82166119275760055473ffffffffffffffffffffffffffffffffffffffff16156118d257806040015191505b73ffffffffffffffffffffffffffffffffffffffff8216611922576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018690526024016109fa565b611931565b6119318286612120565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260086020526040812080548695509161196483612fd1565b909155505060048054905f61197883612fd1565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f0cd979445339c62199996f208428d987b1cea24d18e62b79ec24d94b636e8b7086856040516119c5929190612de6565b60405180910390a2505092915050565b5f5f5f6119e487878787612371565b9150915061151c81612459565b6060611757611abb6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b61260b565b33730576a174d229e3cfa37253523e645a78a0c91b5714611b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016109fa565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81207f1626ba7e00000000000000000000000000000000000000000000000000000000611bd982611ba0610140880188612e69565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ac592505050565b7fffffffff000000000000000000000000000000000000000000000000000000001614611c0a576001915050610c62565b505f9392505050565b5f805460208301359180611c2683612fd1565b919050551461137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206e6f6e63650000000000000000000000000000000000000060448201526064016109fa565b801561137e576040515f9033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d805f8114611cf9576040519150601f19603f3d011682016040523d82523d5f602084013e611cfe565b606091505b5050505050565b611d10348284612660565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600760205260408120805491611d4083612fd1565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f908152600960205260408120805491611d7583612fd1565b90915550505f818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055600a9091528082207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e480546001830181905590859055808452918320849055600280547f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e394929392909190611e3c83612fd1565b909155505060038054905f611e5083612fd1565b91905055508573ffffffffffffffffffffffffffffffffffffffff167f4bda649efe6b98b0f9c1d5e859c29e20910f45c66dabfe6fad4a4881f7faf9cc8587604051611e9d929190612de6565b60405180910390a2505050505050565b5f611eb7826126aa565b90505f8151602083015ff09050611f896040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461115e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5772697465206661696c6564000000000000000000000000000000000000000060448201526064016109fa565b5f6060600184600181111561203457612034612d03565b036120a8578673ffffffffffffffffffffffffffffffffffffffff16838660405161205f91906130ac565b5f604051808303818686f4925050503d805f8114612098576040519150601f19603f3d011682016040523d82523d5f602084013e61209d565b606091505b509092509050612116565b8673ffffffffffffffffffffffffffffffffffffffff168387876040516120cf91906130ac565b5f60405180830381858888f193505050503d805f811461210a576040519150601f19603f3d011682016040523d82523d5f602084013e61210f565b606091505b5090925090505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600960205260408120805491612150836130b7565b909155505060028054905f612164836130b7565b90915550505f818152600a60205260408082208151808301928390529160029082845b8154815260200190600101908083116121875750505050509050805f600281106121b3576121b3612f4b565b60200201511580156121c757506020810151155b80156121fc57505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548214155b15612236576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018390526024016109fa565b6020818101805183515f908152600a9093526040808420600190810192909255935191518352838320919091559281529081208181559091015550565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d0935256040518060400160405280600581526020017f312e312e300000000000000000000000000000000000000000000000000000008152506040516020016122fc9190612cf1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156123a657505f90506003612450565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156123f7573d5f5f3e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661244a575f60019250925050612450565b91505f90505b94509492505050565b5f81600481111561246c5761246c612d03565b036124745750565b600181600481111561248857612488612d03565b036124ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109fa565b600281600481111561250357612503612d03565b0361256a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109fa565b600381600481111561257e5761257e612d03565b0361137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016109fa565b6060813b6001811161262c57505060408051602081019091525f8152919050565b80612636816130b7565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b60015483101561115e576001546040517fb48978280000000000000000000000000000000000000000000000000000000081526109fa918591600401918252602082015260400190565b6060815160016126ba9190612f38565b826040516020016126cc9291906130eb565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461137e575f5ffd5b5f5f83601f840112612713575f5ffd5b50813567ffffffffffffffff81111561272a575f5ffd5b602083019150836020828501011115612741575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b03121561275f575f5ffd5b883561276a816126e2565b9750602089013561277a816126e2565b9650604089013561278a816126e2565b955060608901359450608089013567ffffffffffffffff8111156127ac575f5ffd5b6127b88b828c01612703565b90955093505060a089013567ffffffffffffffff8111156127d7575f5ffd5b6127e38b828c01612703565b999c989b5096995094979396929594505050565b5f60208284031215612807575f5ffd5b8135610c85816126e2565b5f5f5f5f5f60808688031215612826575f5ffd5b8535612831816126e2565b94506020860135612841816126e2565b935060408601359250606086013567ffffffffffffffff811115612863575f5ffd5b61286f88828901612703565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f8301126128bc575f5ffd5b813567ffffffffffffffff8111156128d6576128d6612880565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561292357612923612880565b60405281815283820160200185101561293a575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612967575f5ffd5b82359150602083013567ffffffffffffffff811115612984575f5ffd5b612990858286016128ad565b9150509250929050565b5f5f5f606084860312156129ac575f5ffd5b833567ffffffffffffffff8111156129c2575f5ffd5b840161016081870312156129d4575f5ffd5b95602085013595506040909401359392505050565b5f5f5f5f608085870312156129fc575f5ffd5b84359350602085013567ffffffffffffffff811115612a19575f5ffd5b612a25878288016128ad565b9350506040850135612a36816126e2565b9396929550929360600135925050565b5f5f60408385031215612a57575f5ffd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b81811015612a9d578351835260209384019390920191600101612a7f565b509095945050505050565b5f5f5f60608486031215612aba575f5ffd5b8335612ac5816126e2565b9250602084013567ffffffffffffffff811115612ae0575f5ffd5b612aec868287016128ad565b93969395505050506040919091013590565b5f60208284031215612b0e575f5ffd5b5035919050565b5f60208284031215612b25575f5ffd5b813567ffffffffffffffff811115612b3b575f5ffd5b612b47848285016128ad565b949350505050565b5f5f83601f840112612b5f575f5ffd5b50813567ffffffffffffffff811115612b76575f5ffd5b6020830191508360208260051b8501011115612741575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612ba7575f5ffd5b8835612bb2816126e2565b97506020890135612bc2816126e2565b9650604089013567ffffffffffffffff811115612bdd575f5ffd5b612be98b828c01612b4f565b909750955050606089013567ffffffffffffffff811115612c08575f5ffd5b612c148b828c01612b4f565b909550935050608089013567ffffffffffffffff8111156127d7575f5ffd5b5f5f5f5f5f60a08688031215612c47575f5ffd5b8535612c52816126e2565b945060208601359350604086013567ffffffffffffffff811115612c74575f5ffd5b612c80888289016128ad565b935050606086013560028110612c94575f5ffd5b949793965091946080013592915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610c856020830184612ca5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020810160038310612d69577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f5f5f5f5f5f60a08789031215612d84575f5ffd5b8635612d8f816126e2565b95506020870135612d9f816126e2565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dc8575f5ffd5b612dd489828a01612703565b979a9699509497509295939492505050565b828152604060208201525f612b476040830184612ca5565b5f60208284031215612e0e575f5ffd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c85575f5ffd5b5f5f60408385031215612e4e575f5ffd5b8251612e59816126e2565b6020939093015192949293505050565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e9c575f5ffd5b83018035915067ffffffffffffffff821115612eb6575f5ffd5b602001915036819003821315612741575f5ffd5b848152608060208201525f612ee26080830186612ca5565b73ffffffffffffffffffffffffffffffffffffffff949094166040830152506060015292915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610c6257610c62612f0b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612f88575f5ffd5b8151610c85816126e2565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f612fc16060830185612ca5565b9050826040830152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361300157613001612f0b565b5060010190565b5f6080828403128015613019575f5ffd5b506040516080810167ffffffffffffffff8111828210171561303d5761303d612880565b604052825161304b816126e2565b8152602083015161305b816126e2565b6020820152604083015161306e816126e2565b6040820152606083015163ffffffff81168114613089575f5ffd5b60608201529392505050565b5f81518060208401855e5f93019283525090919050565b5f610c858284613095565b5f816130c5576130c5612f0b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201525f600e8201525f612b47600f83018461309556fea2646970667358221220959b491a03df420a39d9217bff79fea47ed3d14b1b9e42dcdf18b41c9b14edca64736f6c634300081b0033a2646970667358221220e22adbd43bc3fea7d153c26066457f821c1d3642b50b27a868be63d09b94812164736f6c634300081b0033", + "bytecode": "0x60a060405234801561000f575f5ffd5b5060405161401138038061401183398101604081905261002e91610050565b6001600160a01b03166080525f80546001600160a01b0319163317905561007d565b5f60208284031215610060575f5ffd5b81516001600160a01b0381168114610076575f5ffd5b9392505050565b608051613f6f6100a25f395f8181608e0152818161041b01526104ce0152613f6f5ff3fe608060405234801561000f575f5ffd5b5060043610610085575f3560e01c80638da5cb5b116100585780638da5cb5b146101205780639683fe3e1461013f578063a6f9dae11461017c578063ffa1ad741461018f575f5ffd5b80630d1cfcae146100895780633f4ba83a146100da5780635c975abb146100e45780638456cb5914610118575b5f5ffd5b6100b07f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100e26101d8565b005b5f546101089074010000000000000000000000000000000000000000900460ff1681565b60405190151581526020016100d1565b6100e261029f565b5f546100b09073ffffffffffffffffffffffffffffffffffffffff1681565b61015261014d3660046106ff565b610378565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016100d1565b6100e261018a366004610742565b6105a0565b6101cb6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516100d19190610762565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461024e575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044015b60405180910390fd5b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16815560405133917faeb196d352664784d1900b0e7414a8face7d29f4dae8c4b0cf68ed477423bbf491a2565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610310575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610245565b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017815560405133917f5ee71a369c8672edded508e624ffc9257fa1ae6886ef32905c18e60196bca39991a2565b5f8054819074010000000000000000000000000000000000000000900460ff16156103cf576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fa3def92300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063a3def923906044016020604051808303815f875af1158015610461573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048591906107b5565b6040805173ffffffffffffffffffffffffffffffffffffffff891660208201529081018290529092505f90606001604051602081830303815290604052805190602001209050807f00000000000000000000000000000000000000000000000000000000000000008487876040516104fc906106ca565b73ffffffffffffffffffffffffffffffffffffffff94851681526020810193909352604083019190915290911660608201526080018190604051809103905ff590508015801561054e573d5f5f3e3d5ffd5b50915084838373ffffffffffffffffffffffffffffffffffffffff167f67a2e45041c70013518c5b9b849a6944a6c17ff44d66be1c707020460ecbd1db60405160405180910390a45094509492505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610611575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610245565b73ffffffffffffffffffffffffffffffffffffffff811661065e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b61376d806107cd83390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146106fa575f5ffd5b919050565b5f5f5f5f60808587031215610712575f5ffd5b61071b856106d7565b93506020850135925060408501359150610737606086016106d7565b905092959194509250565b5f60208284031215610752575f5ffd5b61075b826106d7565b9392505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f602082840312156107c5575f5ffd5b505191905056fe60c06040525f5f556001600655348015610017575f5ffd5b5060405161376d38038061376d83398101604081905261003691610469565b604080516001600160a01b038616602082015280820185905281518082038301815260609091019091528490849061006d8161016b565b5050506001600160a01b0384166100975760405163d92e233d60e01b815260040160405180910390fd5b6040516331a9108f60e11b8152600481018490525f906001600160a01b03861690636352211e90602401602060405180830381865afa1580156100dc573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061010091906104ad565b90506001600160a01b03811661013157604051630ede975960e01b8152600481018590526024015b60405180910390fd5b600580546001600160a01b0319166001600160a01b03841617905560018390554660a05261015d6101cd565b608052506105959350505050565b610173610295565b51156101c15760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610128565b6101ca816102fd565b50565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d093525604051806040016040528060058152602001640312e312e360dc1b81525060405160200161023e91906104cd565b60408051601f1981840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60606102f86102f3604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6103c1565b905090565b5f61030782610416565b90505f8151602083015ff0905061036d604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6001600160a01b0316816001600160a01b0316146103bc5760405162461bcd60e51b815260206004820152600c60248201526b15dc9a5d194819985a5b195960a21b6044820152606401610128565b505050565b6060813b600181116103e257505060408051602081019091525f8152919050565b806103ec81610516565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b606081516001610426919061052b565b82604051602001610438929190610544565b6040516020818303038152906040529050919050565b80516001600160a01b0381168114610464575f5ffd5b919050565b5f5f5f5f6080858703121561047c575f5ffd5b6104858561044e565b60208601516040870151919550935091506104a26060860161044e565b905092959194509250565b5f602082840312156104bd575f5ffd5b6104c68261044e565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52601160045260245ffd5b5f8161052457610524610502565b505f190190565b8082018082111561053e5761053e610502565b92915050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201525f600e820181905282518060208501600f85015e5f9201600f019182525092915050565b60805160a0516131a96105c45f395f81816105ab015261172a01525f81816108cd015261175f01526131a95ff3fe6080604052600436106102ac575f3560e01c8063a035b1fe11610165578063d843b7f4116100c6578063f5dcb7bb1161007c578063f698da2511610062578063f698da25146108bc578063fc0c546a146108ef578063ffa1ad7414610903575f5ffd5b8063f5dcb7bb1461086a578063f6171e441461089d575f5ffd5b8063e7d915cf116100ac578063e7d915cf146107f2578063ed24911d14610811578063f23a6e6114610825575f5ffd5b8063d843b7f414610785578063d8a4676f146107c6575f5ffd5b8063b94207d31161011b578063bdf8631711610101578063bdf8631714610719578063c7dec3fc1461072e578063cbd6407a1461075a575f5ffd5b8063b94207d3146106bf578063bc197c81146106d2575f5ffd5b8063a669aaf91161014b578063a669aaf914610671578063affed0e014610686578063b0d691fe14610699575f5ffd5b8063a035b1fe1461063d578063a4f9edbf14610652575f5ffd5b806358ce09091161020f57806391b7f5ed116101c55780639a8a0592116101ab5780639a8a05921461059a5780639c5e9590146105cd5780639ec4a5bf1461061e575f5ffd5b806391b7f5ed14610550578063982c0db31461056f575f5ffd5b806379412518116101f557806379412518146104bb5780637af73473146104ce5780638fb847ef1461050f575f5ffd5b806358ce0909146104605780636d70f7ae1461048c575f5ffd5b806317d70f7c116102645780633a871cdd1161024a5780633a871cdd1461040d5780634954bbf11461042c5780634ada3e611461044b575f5ffd5b806317d70f7c146103ce5780631bbbeeb8146103e2575f5ffd5b8063150b7a0211610294578063150b7a021461031b578063157305fe146103905780631626ba7e146103af575f5ffd5b806223de29146102b7578062427c54146102dd575f5ffd5b366102b357005b5f5ffd5b3480156102c2575f5ffd5b506102db6102d1366004612748565b5050505050505050565b005b3480156102e8575f5ffd5b506103086102f73660046127f7565b60086020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610326575f5ffd5b5061035f610335366004612812565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610312565b34801561039b575f5ffd5b506102db6103aa366004612956565b61094b565b3480156103ba575f5ffd5b5061035f6103c9366004612956565b610ac5565b3480156103d9575f5ffd5b50610308610c68565b3480156103ed575f5ffd5b506103086103fc3660046127f7565b60076020525f908152604090205481565b348015610418575f5ffd5b5061030861042736600461299a565b610c8c565b348015610437575f5ffd5b506102db6104463660046129e9565b610cc8565b348015610456575f5ffd5b5061030860035481565b34801561046b575f5ffd5b5061047f61047a366004612a46565b610eb7565b6040516103129190612a66565b348015610497575f5ffd5b506104ab6104a63660046127f7565b61100e565b6040519015158152602001610312565b6102db6104c9366004612aa8565b6110e0565b3480156104d9575f5ffd5b506103086104e83660046127f7565b73ffffffffffffffffffffffffffffffffffffffff165f9081526007602052604090205490565b34801561051a575f5ffd5b506103086105293660046127f7565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b34801561055b575f5ffd5b506102db61056a366004612afe565b611163565b34801561057a575f5ffd5b506103086105893660046127f7565b60096020525f908152604090205481565b3480156105a5575f5ffd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d8575f5ffd5b506005546105f99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610312565b348015610629575f5ffd5b50610308610638366004612aa8565b611251565b348015610648575f5ffd5b5061030860015481565b34801561065d575f5ffd5b506102db61066c366004612b15565b611305565b34801561067c575f5ffd5b5061030860045481565b348015610691575f5ffd5b505f54610308565b3480156106a4575f5ffd5b50730576a174d229e3cfa37253523e645a78a0c91b576105f9565b6103086106cd366004612b15565b611381565b3480156106dd575f5ffd5b5061035f6106ec366004612b90565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610724575f5ffd5b5061030860025481565b348015610739575f5ffd5b5061074d610748366004612c33565b61143c565b6040516103129190612cf1565b348015610765575f5ffd5b506103086107743660046127f7565b600c6020525f908152604090205481565b348015610790575f5ffd5b506105f961079f366004612afe565b600b6020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156107d1575f5ffd5b506107e56107e0366004612afe565b611526565b6040516103129190612d30565b3480156107fd575f5ffd5b506102db61080c366004612afe565b6115fb565b34801561081c575f5ffd5b50610308611727565b348015610830575f5ffd5b5061035f61083f366004612d6f565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b348015610875575f5ffd5b506103087f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b3480156108a8575f5ffd5b506103086108b7366004612a46565b611781565b3480156108c7575f5ffd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156108fa575f5ffd5b506105f96117a3565b34801561090e575f5ffd5b5061074d6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6109543361100e565b80610972575033730576a174d229e3cfa37253523e645a78a0c91b57145b610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084015b60405180910390fd5b60016006541115610a40576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff1615610ab1576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b610abb82826117c0565b5050600160065550565b5f5f5f5f610ae585602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610bfb5782858301602001610b068261100e565b158015610b29575073ffffffffffffffffffffffffffffffffffffffff82163014155b15610b5c57507fffffffff000000000000000000000000000000000000000000000000000000009450610c629350505050565b6040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690631626ba7e90610bb0908b908590600401612de6565b602060405180830381865afa158015610bcb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bef9190612dfe565b95505050505050610c62565b610c0a6104a6878386866119d5565b15610c3b57507f1626ba7e000000000000000000000000000000000000000000000000000000009250610c62915050565b507fffffffff00000000000000000000000000000000000000000000000000000000925050505b92915050565b5f5f610c726119f1565b806020019051810190610c859190612e3d565b9392505050565b5f610c95611ac0565b610c9f8484611b3f565b9050610cae6040850185612e69565b90505f03610cbf57610cbf84611c13565b610c8582611c91565b610cd13361100e565b80610cef575033730576a174d229e3cfa37253523e645a78a0c91b57145b610d7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60016006541115610db8576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff16610e0c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e1785856117c0565b805190915015610eab576005546040517f56d0819e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906356d0819e90610e7d908890859088908890600401612eca565b5f604051808303815f87803b158015610e94575f5ffd5b505af1158015610ea6573d5f5f3e3d5ffd5b505050505b50506001600655505050565b6002546060905f849003610ec9578093505b80610ed48486612f38565b1115610f2157610ee48385612f38565b6040517f7ae596850000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016109fa565b8315611007578367ffffffffffffffff811115610f4057610f40612880565b604051908082528060200260200182016040528015610f69578160200160208202803683370190505b505f808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e4549193505b84811015610fbc575f828152600a60205260409020600101549150600101610f99565b505f5b858110156110045781848281518110610fda57610fda612f4b565b6020908102919091018101919091525f838152600a90915260409020600101549150600101610fbf565b50505b5092915050565b5f5f5f6110196119f1565b80602001905181019061102c9190612e3d565b915091508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161108291815260200190565b602060405180830381865afa15801561109d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c19190612f78565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611153576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b61115e838383611d05565b505050565b61116c3361100e565b8061118a575033730576a174d229e3cfa37253523e645a78a0c91b57145b611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60018190556040518181527f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe09060200160405180910390a150565b5f61125a611727565b84848460405160200161126f93929190612f93565b604051602081830303815290604052805190602001206040516020016112c79291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b61130d6119f1565b5115611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064016109fa565b61137e81611ead565b50565b6005545f9073ffffffffffffffffffffffffffffffffffffffff16156113ef576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b335f818152600c602052604090205461140a91908490611251565b335f908152600c6020526040812080549293509061142783612fd1565b9190505550611437338383611d05565b919050565b60606114473361100e565b80611465575033730576a174d229e3cfa37253523e645a78a0c91b57145b6114f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b5f61150b878787878715611505578761201d565b5a61201d565b925090508061151c57815160208301fd5b5095945050505050565b5f818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff1615611437575f828152600a60205260408082208151808301928390529160029082845b81548152602001906001019080831161156d5750505050509050805f6002811061159957611599612f4b565b60200201511580156115ad57506020810151155b80156115e257505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548314155b156115f057600291506115f5565b600191505b50919050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461166e576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b5f818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16806116c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116d38183612120565b8073ffffffffffffffffffffffffffffffffffffffff167fa36a540c5fea3a5e69d4b1c2247b28a93fd183ef1314af26a8db7b3ae080bcd08360405161171b91815260200190565b60405180910390a25050565b5f7f0000000000000000000000000000000000000000000000000000000000000000461461175c57611757612273565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600a602052815f5260405f20816002811061179a575f80fd5b01549150829050565b5f5f6117ad6119f1565b806020019051810190610c629190612f78565b5f828152600b60205260408082205460055491517ff2e433bf0000000000000000000000000000000000000000000000000000000081526004810186905260609373ffffffffffffffffffffffffffffffffffffffff928316939092169063f2e433bf906024016080604051808303815f875af1158015611843573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118679190613008565b602081015190915073ffffffffffffffffffffffffffffffffffffffff1615611891575050610c62565b73ffffffffffffffffffffffffffffffffffffffff82166119275760055473ffffffffffffffffffffffffffffffffffffffff16156118d257806040015191505b73ffffffffffffffffffffffffffffffffffffffff8216611922576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018690526024016109fa565b611931565b6119318286612120565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260086020526040812080548695509161196483612fd1565b909155505060048054905f61197883612fd1565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f0cd979445339c62199996f208428d987b1cea24d18e62b79ec24d94b636e8b7086856040516119c5929190612de6565b60405180910390a2505092915050565b5f5f5f6119e487878787612371565b9150915061151c81612459565b6060611757611abb6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b61260b565b33730576a174d229e3cfa37253523e645a78a0c91b5714611b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016109fa565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81207f1626ba7e00000000000000000000000000000000000000000000000000000000611bd982611ba0610140880188612e69565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ac592505050565b7fffffffff000000000000000000000000000000000000000000000000000000001614611c0a576001915050610c62565b505f9392505050565b5f805460208301359180611c2683612fd1565b919050551461137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206e6f6e63650000000000000000000000000000000000000060448201526064016109fa565b801561137e576040515f9033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d805f8114611cf9576040519150601f19603f3d011682016040523d82523d5f602084013e611cfe565b606091505b5050505050565b611d10348284612660565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600760205260408120805491611d4083612fd1565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f908152600960205260408120805491611d7583612fd1565b90915550505f818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055600a9091528082207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e480546001830181905590859055808452918320849055600280547f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e394929392909190611e3c83612fd1565b909155505060038054905f611e5083612fd1565b91905055508573ffffffffffffffffffffffffffffffffffffffff167f4bda649efe6b98b0f9c1d5e859c29e20910f45c66dabfe6fad4a4881f7faf9cc8587604051611e9d929190612de6565b60405180910390a2505050505050565b5f611eb7826126aa565b90505f8151602083015ff09050611f896040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461115e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5772697465206661696c6564000000000000000000000000000000000000000060448201526064016109fa565b5f6060600184600181111561203457612034612d03565b036120a8578673ffffffffffffffffffffffffffffffffffffffff16838660405161205f91906130ac565b5f604051808303818686f4925050503d805f8114612098576040519150601f19603f3d011682016040523d82523d5f602084013e61209d565b606091505b509092509050612116565b8673ffffffffffffffffffffffffffffffffffffffff168387876040516120cf91906130ac565b5f60405180830381858888f193505050503d805f811461210a576040519150601f19603f3d011682016040523d82523d5f602084013e61210f565b606091505b5090925090505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600960205260408120805491612150836130b7565b909155505060028054905f612164836130b7565b90915550505f818152600a60205260408082208151808301928390529160029082845b8154815260200190600101908083116121875750505050509050805f600281106121b3576121b3612f4b565b60200201511580156121c757506020810151155b80156121fc57505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548214155b15612236576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018390526024016109fa565b6020818101805183515f908152600a9093526040808420600190810192909255935191518352838320919091559281529081208181559091015550565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d0935256040518060400160405280600581526020017f312e312e300000000000000000000000000000000000000000000000000000008152506040516020016122fc9190612cf1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156123a657505f90506003612450565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156123f7573d5f5f3e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661244a575f60019250925050612450565b91505f90505b94509492505050565b5f81600481111561246c5761246c612d03565b036124745750565b600181600481111561248857612488612d03565b036124ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109fa565b600281600481111561250357612503612d03565b0361256a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109fa565b600381600481111561257e5761257e612d03565b0361137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016109fa565b6060813b6001811161262c57505060408051602081019091525f8152919050565b80612636816130b7565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b60015483101561115e576001546040517fb48978280000000000000000000000000000000000000000000000000000000081526109fa918591600401918252602082015260400190565b6060815160016126ba9190612f38565b826040516020016126cc9291906130eb565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461137e575f5ffd5b5f5f83601f840112612713575f5ffd5b50813567ffffffffffffffff81111561272a575f5ffd5b602083019150836020828501011115612741575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b03121561275f575f5ffd5b883561276a816126e2565b9750602089013561277a816126e2565b9650604089013561278a816126e2565b955060608901359450608089013567ffffffffffffffff8111156127ac575f5ffd5b6127b88b828c01612703565b90955093505060a089013567ffffffffffffffff8111156127d7575f5ffd5b6127e38b828c01612703565b999c989b5096995094979396929594505050565b5f60208284031215612807575f5ffd5b8135610c85816126e2565b5f5f5f5f5f60808688031215612826575f5ffd5b8535612831816126e2565b94506020860135612841816126e2565b935060408601359250606086013567ffffffffffffffff811115612863575f5ffd5b61286f88828901612703565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f8301126128bc575f5ffd5b813567ffffffffffffffff8111156128d6576128d6612880565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561292357612923612880565b60405281815283820160200185101561293a575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612967575f5ffd5b82359150602083013567ffffffffffffffff811115612984575f5ffd5b612990858286016128ad565b9150509250929050565b5f5f5f606084860312156129ac575f5ffd5b833567ffffffffffffffff8111156129c2575f5ffd5b840161016081870312156129d4575f5ffd5b95602085013595506040909401359392505050565b5f5f5f5f608085870312156129fc575f5ffd5b84359350602085013567ffffffffffffffff811115612a19575f5ffd5b612a25878288016128ad565b9350506040850135612a36816126e2565b9396929550929360600135925050565b5f5f60408385031215612a57575f5ffd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b81811015612a9d578351835260209384019390920191600101612a7f565b509095945050505050565b5f5f5f60608486031215612aba575f5ffd5b8335612ac5816126e2565b9250602084013567ffffffffffffffff811115612ae0575f5ffd5b612aec868287016128ad565b93969395505050506040919091013590565b5f60208284031215612b0e575f5ffd5b5035919050565b5f60208284031215612b25575f5ffd5b813567ffffffffffffffff811115612b3b575f5ffd5b612b47848285016128ad565b949350505050565b5f5f83601f840112612b5f575f5ffd5b50813567ffffffffffffffff811115612b76575f5ffd5b6020830191508360208260051b8501011115612741575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612ba7575f5ffd5b8835612bb2816126e2565b97506020890135612bc2816126e2565b9650604089013567ffffffffffffffff811115612bdd575f5ffd5b612be98b828c01612b4f565b909750955050606089013567ffffffffffffffff811115612c08575f5ffd5b612c148b828c01612b4f565b909550935050608089013567ffffffffffffffff8111156127d7575f5ffd5b5f5f5f5f5f60a08688031215612c47575f5ffd5b8535612c52816126e2565b945060208601359350604086013567ffffffffffffffff811115612c74575f5ffd5b612c80888289016128ad565b935050606086013560028110612c94575f5ffd5b949793965091946080013592915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610c856020830184612ca5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020810160038310612d69577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f5f5f5f5f5f60a08789031215612d84575f5ffd5b8635612d8f816126e2565b95506020870135612d9f816126e2565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dc8575f5ffd5b612dd489828a01612703565b979a9699509497509295939492505050565b828152604060208201525f612b476040830184612ca5565b5f60208284031215612e0e575f5ffd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c85575f5ffd5b5f5f60408385031215612e4e575f5ffd5b8251612e59816126e2565b6020939093015192949293505050565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e9c575f5ffd5b83018035915067ffffffffffffffff821115612eb6575f5ffd5b602001915036819003821315612741575f5ffd5b848152608060208201525f612ee26080830186612ca5565b73ffffffffffffffffffffffffffffffffffffffff949094166040830152506060015292915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610c6257610c62612f0b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612f88575f5ffd5b8151610c85816126e2565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f612fc16060830185612ca5565b9050826040830152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361300157613001612f0b565b5060010190565b5f6080828403128015613019575f5ffd5b506040516080810167ffffffffffffffff8111828210171561303d5761303d612880565b604052825161304b816126e2565b8152602083015161305b816126e2565b6020820152604083015161306e816126e2565b6040820152606083015163ffffffff81168114613089575f5ffd5b60608201529392505050565b5f81518060208401855e5f93019283525090919050565b5f610c858284613095565b5f816130c5576130c5612f0b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201525f600e8201525f612b47600f83018461309556fea2646970667358221220704524f95757c94019cddad03ecfec4f1e3e0d509ed6ce5bc971e103a7b7c95664736f6c634300081c0033a2646970667358221220c849c623397505378fe24f27bf2439f3514d6903bb02a163167e6a816813abb864736f6c634300081c0033", + "deployedBytecode": "0x608060405234801561000f575f5ffd5b5060043610610085575f3560e01c80638da5cb5b116100585780638da5cb5b146101205780639683fe3e1461013f578063a6f9dae11461017c578063ffa1ad741461018f575f5ffd5b80630d1cfcae146100895780633f4ba83a146100da5780635c975abb146100e45780638456cb5914610118575b5f5ffd5b6100b07f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100e26101d8565b005b5f546101089074010000000000000000000000000000000000000000900460ff1681565b60405190151581526020016100d1565b6100e261029f565b5f546100b09073ffffffffffffffffffffffffffffffffffffffff1681565b61015261014d3660046106ff565b610378565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016100d1565b6100e261018a366004610742565b6105a0565b6101cb6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516100d19190610762565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461024e575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044015b60405180910390fd5b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16815560405133917faeb196d352664784d1900b0e7414a8face7d29f4dae8c4b0cf68ed477423bbf491a2565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610310575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610245565b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017815560405133917f5ee71a369c8672edded508e624ffc9257fa1ae6886ef32905c18e60196bca39991a2565b5f8054819074010000000000000000000000000000000000000000900460ff16156103cf576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fa3def92300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063a3def923906044016020604051808303815f875af1158015610461573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048591906107b5565b6040805173ffffffffffffffffffffffffffffffffffffffff891660208201529081018290529092505f90606001604051602081830303815290604052805190602001209050807f00000000000000000000000000000000000000000000000000000000000000008487876040516104fc906106ca565b73ffffffffffffffffffffffffffffffffffffffff94851681526020810193909352604083019190915290911660608201526080018190604051809103905ff590508015801561054e573d5f5f3e3d5ffd5b50915084838373ffffffffffffffffffffffffffffffffffffffff167f67a2e45041c70013518c5b9b849a6944a6c17ff44d66be1c707020460ecbd1db60405160405180910390a45094509492505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610611575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610245565b73ffffffffffffffffffffffffffffffffffffffff811661065e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b61376d806107cd83390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146106fa575f5ffd5b919050565b5f5f5f5f60808587031215610712575f5ffd5b61071b856106d7565b93506020850135925060408501359150610737606086016106d7565b905092959194509250565b5f60208284031215610752575f5ffd5b61075b826106d7565b9392505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f602082840312156107c5575f5ffd5b505191905056fe60c06040525f5f556001600655348015610017575f5ffd5b5060405161376d38038061376d83398101604081905261003691610469565b604080516001600160a01b038616602082015280820185905281518082038301815260609091019091528490849061006d8161016b565b5050506001600160a01b0384166100975760405163d92e233d60e01b815260040160405180910390fd5b6040516331a9108f60e11b8152600481018490525f906001600160a01b03861690636352211e90602401602060405180830381865afa1580156100dc573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061010091906104ad565b90506001600160a01b03811661013157604051630ede975960e01b8152600481018590526024015b60405180910390fd5b600580546001600160a01b0319166001600160a01b03841617905560018390554660a05261015d6101cd565b608052506105959350505050565b610173610295565b51156101c15760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610128565b6101ca816102fd565b50565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d093525604051806040016040528060058152602001640312e312e360dc1b81525060405160200161023e91906104cd565b60408051601f1981840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60606102f86102f3604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6103c1565b905090565b5f61030782610416565b90505f8151602083015ff0905061036d604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6001600160a01b0316816001600160a01b0316146103bc5760405162461bcd60e51b815260206004820152600c60248201526b15dc9a5d194819985a5b195960a21b6044820152606401610128565b505050565b6060813b600181116103e257505060408051602081019091525f8152919050565b806103ec81610516565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b606081516001610426919061052b565b82604051602001610438929190610544565b6040516020818303038152906040529050919050565b80516001600160a01b0381168114610464575f5ffd5b919050565b5f5f5f5f6080858703121561047c575f5ffd5b6104858561044e565b60208601516040870151919550935091506104a26060860161044e565b905092959194509250565b5f602082840312156104bd575f5ffd5b6104c68261044e565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52601160045260245ffd5b5f8161052457610524610502565b505f190190565b8082018082111561053e5761053e610502565b92915050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201525f600e820181905282518060208501600f85015e5f9201600f019182525092915050565b60805160a0516131a96105c45f395f81816105ab015261172a01525f81816108cd015261175f01526131a95ff3fe6080604052600436106102ac575f3560e01c8063a035b1fe11610165578063d843b7f4116100c6578063f5dcb7bb1161007c578063f698da2511610062578063f698da25146108bc578063fc0c546a146108ef578063ffa1ad7414610903575f5ffd5b8063f5dcb7bb1461086a578063f6171e441461089d575f5ffd5b8063e7d915cf116100ac578063e7d915cf146107f2578063ed24911d14610811578063f23a6e6114610825575f5ffd5b8063d843b7f414610785578063d8a4676f146107c6575f5ffd5b8063b94207d31161011b578063bdf8631711610101578063bdf8631714610719578063c7dec3fc1461072e578063cbd6407a1461075a575f5ffd5b8063b94207d3146106bf578063bc197c81146106d2575f5ffd5b8063a669aaf91161014b578063a669aaf914610671578063affed0e014610686578063b0d691fe14610699575f5ffd5b8063a035b1fe1461063d578063a4f9edbf14610652575f5ffd5b806358ce09091161020f57806391b7f5ed116101c55780639a8a0592116101ab5780639a8a05921461059a5780639c5e9590146105cd5780639ec4a5bf1461061e575f5ffd5b806391b7f5ed14610550578063982c0db31461056f575f5ffd5b806379412518116101f557806379412518146104bb5780637af73473146104ce5780638fb847ef1461050f575f5ffd5b806358ce0909146104605780636d70f7ae1461048c575f5ffd5b806317d70f7c116102645780633a871cdd1161024a5780633a871cdd1461040d5780634954bbf11461042c5780634ada3e611461044b575f5ffd5b806317d70f7c146103ce5780631bbbeeb8146103e2575f5ffd5b8063150b7a0211610294578063150b7a021461031b578063157305fe146103905780631626ba7e146103af575f5ffd5b806223de29146102b7578062427c54146102dd575f5ffd5b366102b357005b5f5ffd5b3480156102c2575f5ffd5b506102db6102d1366004612748565b5050505050505050565b005b3480156102e8575f5ffd5b506103086102f73660046127f7565b60086020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610326575f5ffd5b5061035f610335366004612812565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610312565b34801561039b575f5ffd5b506102db6103aa366004612956565b61094b565b3480156103ba575f5ffd5b5061035f6103c9366004612956565b610ac5565b3480156103d9575f5ffd5b50610308610c68565b3480156103ed575f5ffd5b506103086103fc3660046127f7565b60076020525f908152604090205481565b348015610418575f5ffd5b5061030861042736600461299a565b610c8c565b348015610437575f5ffd5b506102db6104463660046129e9565b610cc8565b348015610456575f5ffd5b5061030860035481565b34801561046b575f5ffd5b5061047f61047a366004612a46565b610eb7565b6040516103129190612a66565b348015610497575f5ffd5b506104ab6104a63660046127f7565b61100e565b6040519015158152602001610312565b6102db6104c9366004612aa8565b6110e0565b3480156104d9575f5ffd5b506103086104e83660046127f7565b73ffffffffffffffffffffffffffffffffffffffff165f9081526007602052604090205490565b34801561051a575f5ffd5b506103086105293660046127f7565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b34801561055b575f5ffd5b506102db61056a366004612afe565b611163565b34801561057a575f5ffd5b506103086105893660046127f7565b60096020525f908152604090205481565b3480156105a5575f5ffd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d8575f5ffd5b506005546105f99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610312565b348015610629575f5ffd5b50610308610638366004612aa8565b611251565b348015610648575f5ffd5b5061030860015481565b34801561065d575f5ffd5b506102db61066c366004612b15565b611305565b34801561067c575f5ffd5b5061030860045481565b348015610691575f5ffd5b505f54610308565b3480156106a4575f5ffd5b50730576a174d229e3cfa37253523e645a78a0c91b576105f9565b6103086106cd366004612b15565b611381565b3480156106dd575f5ffd5b5061035f6106ec366004612b90565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610724575f5ffd5b5061030860025481565b348015610739575f5ffd5b5061074d610748366004612c33565b61143c565b6040516103129190612cf1565b348015610765575f5ffd5b506103086107743660046127f7565b600c6020525f908152604090205481565b348015610790575f5ffd5b506105f961079f366004612afe565b600b6020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156107d1575f5ffd5b506107e56107e0366004612afe565b611526565b6040516103129190612d30565b3480156107fd575f5ffd5b506102db61080c366004612afe565b6115fb565b34801561081c575f5ffd5b50610308611727565b348015610830575f5ffd5b5061035f61083f366004612d6f565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b348015610875575f5ffd5b506103087f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b3480156108a8575f5ffd5b506103086108b7366004612a46565b611781565b3480156108c7575f5ffd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156108fa575f5ffd5b506105f96117a3565b34801561090e575f5ffd5b5061074d6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6109543361100e565b80610972575033730576a174d229e3cfa37253523e645a78a0c91b57145b610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084015b60405180910390fd5b60016006541115610a40576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff1615610ab1576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b610abb82826117c0565b5050600160065550565b5f5f5f5f610ae585602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610bfb5782858301602001610b068261100e565b158015610b29575073ffffffffffffffffffffffffffffffffffffffff82163014155b15610b5c57507fffffffff000000000000000000000000000000000000000000000000000000009450610c629350505050565b6040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690631626ba7e90610bb0908b908590600401612de6565b602060405180830381865afa158015610bcb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bef9190612dfe565b95505050505050610c62565b610c0a6104a6878386866119d5565b15610c3b57507f1626ba7e000000000000000000000000000000000000000000000000000000009250610c62915050565b507fffffffff00000000000000000000000000000000000000000000000000000000925050505b92915050565b5f5f610c726119f1565b806020019051810190610c859190612e3d565b9392505050565b5f610c95611ac0565b610c9f8484611b3f565b9050610cae6040850185612e69565b90505f03610cbf57610cbf84611c13565b610c8582611c91565b610cd13361100e565b80610cef575033730576a174d229e3cfa37253523e645a78a0c91b57145b610d7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60016006541115610db8576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff16610e0c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e1785856117c0565b805190915015610eab576005546040517f56d0819e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906356d0819e90610e7d908890859088908890600401612eca565b5f604051808303815f87803b158015610e94575f5ffd5b505af1158015610ea6573d5f5f3e3d5ffd5b505050505b50506001600655505050565b6002546060905f849003610ec9578093505b80610ed48486612f38565b1115610f2157610ee48385612f38565b6040517f7ae596850000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016109fa565b8315611007578367ffffffffffffffff811115610f4057610f40612880565b604051908082528060200260200182016040528015610f69578160200160208202803683370190505b505f808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e4549193505b84811015610fbc575f828152600a60205260409020600101549150600101610f99565b505f5b858110156110045781848281518110610fda57610fda612f4b565b6020908102919091018101919091525f838152600a90915260409020600101549150600101610fbf565b50505b5092915050565b5f5f5f6110196119f1565b80602001905181019061102c9190612e3d565b915091508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161108291815260200190565b602060405180830381865afa15801561109d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c19190612f78565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611153576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b61115e838383611d05565b505050565b61116c3361100e565b8061118a575033730576a174d229e3cfa37253523e645a78a0c91b57145b611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60018190556040518181527f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe09060200160405180910390a150565b5f61125a611727565b84848460405160200161126f93929190612f93565b604051602081830303815290604052805190602001206040516020016112c79291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b61130d6119f1565b5115611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064016109fa565b61137e81611ead565b50565b6005545f9073ffffffffffffffffffffffffffffffffffffffff16156113ef576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b335f818152600c602052604090205461140a91908490611251565b335f908152600c6020526040812080549293509061142783612fd1565b9190505550611437338383611d05565b919050565b60606114473361100e565b80611465575033730576a174d229e3cfa37253523e645a78a0c91b57145b6114f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b5f61150b878787878715611505578761201d565b5a61201d565b925090508061151c57815160208301fd5b5095945050505050565b5f818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff1615611437575f828152600a60205260408082208151808301928390529160029082845b81548152602001906001019080831161156d5750505050509050805f6002811061159957611599612f4b565b60200201511580156115ad57506020810151155b80156115e257505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548314155b156115f057600291506115f5565b600191505b50919050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461166e576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b5f818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16806116c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116d38183612120565b8073ffffffffffffffffffffffffffffffffffffffff167fa36a540c5fea3a5e69d4b1c2247b28a93fd183ef1314af26a8db7b3ae080bcd08360405161171b91815260200190565b60405180910390a25050565b5f7f0000000000000000000000000000000000000000000000000000000000000000461461175c57611757612273565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600a602052815f5260405f20816002811061179a575f80fd5b01549150829050565b5f5f6117ad6119f1565b806020019051810190610c629190612f78565b5f828152600b60205260408082205460055491517ff2e433bf0000000000000000000000000000000000000000000000000000000081526004810186905260609373ffffffffffffffffffffffffffffffffffffffff928316939092169063f2e433bf906024016080604051808303815f875af1158015611843573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118679190613008565b602081015190915073ffffffffffffffffffffffffffffffffffffffff1615611891575050610c62565b73ffffffffffffffffffffffffffffffffffffffff82166119275760055473ffffffffffffffffffffffffffffffffffffffff16156118d257806040015191505b73ffffffffffffffffffffffffffffffffffffffff8216611922576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018690526024016109fa565b611931565b6119318286612120565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260086020526040812080548695509161196483612fd1565b909155505060048054905f61197883612fd1565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f0cd979445339c62199996f208428d987b1cea24d18e62b79ec24d94b636e8b7086856040516119c5929190612de6565b60405180910390a2505092915050565b5f5f5f6119e487878787612371565b9150915061151c81612459565b6060611757611abb6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b61260b565b33730576a174d229e3cfa37253523e645a78a0c91b5714611b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016109fa565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81207f1626ba7e00000000000000000000000000000000000000000000000000000000611bd982611ba0610140880188612e69565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ac592505050565b7fffffffff000000000000000000000000000000000000000000000000000000001614611c0a576001915050610c62565b505f9392505050565b5f805460208301359180611c2683612fd1565b919050551461137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206e6f6e63650000000000000000000000000000000000000060448201526064016109fa565b801561137e576040515f9033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d805f8114611cf9576040519150601f19603f3d011682016040523d82523d5f602084013e611cfe565b606091505b5050505050565b611d10348284612660565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600760205260408120805491611d4083612fd1565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f908152600960205260408120805491611d7583612fd1565b90915550505f818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055600a9091528082207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e480546001830181905590859055808452918320849055600280547f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e394929392909190611e3c83612fd1565b909155505060038054905f611e5083612fd1565b91905055508573ffffffffffffffffffffffffffffffffffffffff167f4bda649efe6b98b0f9c1d5e859c29e20910f45c66dabfe6fad4a4881f7faf9cc8587604051611e9d929190612de6565b60405180910390a2505050505050565b5f611eb7826126aa565b90505f8151602083015ff09050611f896040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461115e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5772697465206661696c6564000000000000000000000000000000000000000060448201526064016109fa565b5f6060600184600181111561203457612034612d03565b036120a8578673ffffffffffffffffffffffffffffffffffffffff16838660405161205f91906130ac565b5f604051808303818686f4925050503d805f8114612098576040519150601f19603f3d011682016040523d82523d5f602084013e61209d565b606091505b509092509050612116565b8673ffffffffffffffffffffffffffffffffffffffff168387876040516120cf91906130ac565b5f60405180830381858888f193505050503d805f811461210a576040519150601f19603f3d011682016040523d82523d5f602084013e61210f565b606091505b5090925090505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600960205260408120805491612150836130b7565b909155505060028054905f612164836130b7565b90915550505f818152600a60205260408082208151808301928390529160029082845b8154815260200190600101908083116121875750505050509050805f600281106121b3576121b3612f4b565b60200201511580156121c757506020810151155b80156121fc57505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548214155b15612236576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018390526024016109fa565b6020818101805183515f908152600a9093526040808420600190810192909255935191518352838320919091559281529081208181559091015550565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d0935256040518060400160405280600581526020017f312e312e300000000000000000000000000000000000000000000000000000008152506040516020016122fc9190612cf1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156123a657505f90506003612450565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156123f7573d5f5f3e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661244a575f60019250925050612450565b91505f90505b94509492505050565b5f81600481111561246c5761246c612d03565b036124745750565b600181600481111561248857612488612d03565b036124ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109fa565b600281600481111561250357612503612d03565b0361256a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109fa565b600381600481111561257e5761257e612d03565b0361137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016109fa565b6060813b6001811161262c57505060408051602081019091525f8152919050565b80612636816130b7565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b60015483101561115e576001546040517fb48978280000000000000000000000000000000000000000000000000000000081526109fa918591600401918252602082015260400190565b6060815160016126ba9190612f38565b826040516020016126cc9291906130eb565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461137e575f5ffd5b5f5f83601f840112612713575f5ffd5b50813567ffffffffffffffff81111561272a575f5ffd5b602083019150836020828501011115612741575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b03121561275f575f5ffd5b883561276a816126e2565b9750602089013561277a816126e2565b9650604089013561278a816126e2565b955060608901359450608089013567ffffffffffffffff8111156127ac575f5ffd5b6127b88b828c01612703565b90955093505060a089013567ffffffffffffffff8111156127d7575f5ffd5b6127e38b828c01612703565b999c989b5096995094979396929594505050565b5f60208284031215612807575f5ffd5b8135610c85816126e2565b5f5f5f5f5f60808688031215612826575f5ffd5b8535612831816126e2565b94506020860135612841816126e2565b935060408601359250606086013567ffffffffffffffff811115612863575f5ffd5b61286f88828901612703565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f8301126128bc575f5ffd5b813567ffffffffffffffff8111156128d6576128d6612880565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561292357612923612880565b60405281815283820160200185101561293a575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612967575f5ffd5b82359150602083013567ffffffffffffffff811115612984575f5ffd5b612990858286016128ad565b9150509250929050565b5f5f5f606084860312156129ac575f5ffd5b833567ffffffffffffffff8111156129c2575f5ffd5b840161016081870312156129d4575f5ffd5b95602085013595506040909401359392505050565b5f5f5f5f608085870312156129fc575f5ffd5b84359350602085013567ffffffffffffffff811115612a19575f5ffd5b612a25878288016128ad565b9350506040850135612a36816126e2565b9396929550929360600135925050565b5f5f60408385031215612a57575f5ffd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b81811015612a9d578351835260209384019390920191600101612a7f565b509095945050505050565b5f5f5f60608486031215612aba575f5ffd5b8335612ac5816126e2565b9250602084013567ffffffffffffffff811115612ae0575f5ffd5b612aec868287016128ad565b93969395505050506040919091013590565b5f60208284031215612b0e575f5ffd5b5035919050565b5f60208284031215612b25575f5ffd5b813567ffffffffffffffff811115612b3b575f5ffd5b612b47848285016128ad565b949350505050565b5f5f83601f840112612b5f575f5ffd5b50813567ffffffffffffffff811115612b76575f5ffd5b6020830191508360208260051b8501011115612741575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612ba7575f5ffd5b8835612bb2816126e2565b97506020890135612bc2816126e2565b9650604089013567ffffffffffffffff811115612bdd575f5ffd5b612be98b828c01612b4f565b909750955050606089013567ffffffffffffffff811115612c08575f5ffd5b612c148b828c01612b4f565b909550935050608089013567ffffffffffffffff8111156127d7575f5ffd5b5f5f5f5f5f60a08688031215612c47575f5ffd5b8535612c52816126e2565b945060208601359350604086013567ffffffffffffffff811115612c74575f5ffd5b612c80888289016128ad565b935050606086013560028110612c94575f5ffd5b949793965091946080013592915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610c856020830184612ca5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020810160038310612d69577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f5f5f5f5f5f60a08789031215612d84575f5ffd5b8635612d8f816126e2565b95506020870135612d9f816126e2565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dc8575f5ffd5b612dd489828a01612703565b979a9699509497509295939492505050565b828152604060208201525f612b476040830184612ca5565b5f60208284031215612e0e575f5ffd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c85575f5ffd5b5f5f60408385031215612e4e575f5ffd5b8251612e59816126e2565b6020939093015192949293505050565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e9c575f5ffd5b83018035915067ffffffffffffffff821115612eb6575f5ffd5b602001915036819003821315612741575f5ffd5b848152608060208201525f612ee26080830186612ca5565b73ffffffffffffffffffffffffffffffffffffffff949094166040830152506060015292915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610c6257610c62612f0b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612f88575f5ffd5b8151610c85816126e2565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f612fc16060830185612ca5565b9050826040830152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361300157613001612f0b565b5060010190565b5f6080828403128015613019575f5ffd5b506040516080810167ffffffffffffffff8111828210171561303d5761303d612880565b604052825161304b816126e2565b8152602083015161305b816126e2565b6020820152604083015161306e816126e2565b6040820152606083015163ffffffff81168114613089575f5ffd5b60608201529392505050565b5f81518060208401855e5f93019283525090919050565b5f610c858284613095565b5f816130c5576130c5612f0b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201525f600e8201525f612b47600f83018461309556fea2646970667358221220704524f95757c94019cddad03ecfec4f1e3e0d509ed6ce5bc971e103a7b7c95664736f6c634300081c0033a2646970667358221220c849c623397505378fe24f27bf2439f3514d6903bb02a163167e6a816813abb864736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/abis/0.8.27/AgentMech.json b/abis/0.8.28/AgentMech.json similarity index 99% rename from abis/0.8.27/AgentMech.json rename to abis/0.8.28/AgentMech.json index 202636c..067923c 100644 --- a/abis/0.8.27/AgentMech.json +++ b/abis/0.8.28/AgentMech.json @@ -1076,8 +1076,8 @@ "type": "receive" } ], - "bytecode": "0x60c06040525f5f556001600655348015610017575f5ffd5b5060405161376d38038061376d83398101604081905261003691610469565b604080516001600160a01b038616602082015280820185905281518082038301815260609091019091528490849061006d8161016b565b5050506001600160a01b0384166100975760405163d92e233d60e01b815260040160405180910390fd5b6040516331a9108f60e11b8152600481018490525f906001600160a01b03861690636352211e90602401602060405180830381865afa1580156100dc573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061010091906104ad565b90506001600160a01b03811661013157604051630ede975960e01b8152600481018590526024015b60405180910390fd5b600580546001600160a01b0319166001600160a01b03841617905560018390554660a05261015d6101cd565b608052506105959350505050565b610173610295565b51156101c15760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610128565b6101ca816102fd565b50565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d093525604051806040016040528060058152602001640312e312e360dc1b81525060405160200161023e91906104cd565b60408051601f1981840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60606102f86102f3604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6103c1565b905090565b5f61030782610416565b90505f8151602083015ff0905061036d604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6001600160a01b0316816001600160a01b0316146103bc5760405162461bcd60e51b815260206004820152600c60248201526b15dc9a5d194819985a5b195960a21b6044820152606401610128565b505050565b6060813b600181116103e257505060408051602081019091525f8152919050565b806103ec81610516565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b606081516001610426919061052b565b82604051602001610438929190610544565b6040516020818303038152906040529050919050565b80516001600160a01b0381168114610464575f5ffd5b919050565b5f5f5f5f6080858703121561047c575f5ffd5b6104858561044e565b60208601516040870151919550935091506104a26060860161044e565b905092959194509250565b5f602082840312156104bd575f5ffd5b6104c68261044e565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52601160045260245ffd5b5f8161052457610524610502565b505f190190565b8082018082111561053e5761053e610502565b92915050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201525f600e820181905282518060208501600f85015e5f9201600f019182525092915050565b60805160a0516131a96105c45f395f81816105ab015261172a01525f81816108cd015261175f01526131a95ff3fe6080604052600436106102ac575f3560e01c8063a035b1fe11610165578063d843b7f4116100c6578063f5dcb7bb1161007c578063f698da2511610062578063f698da25146108bc578063fc0c546a146108ef578063ffa1ad7414610903575f5ffd5b8063f5dcb7bb1461086a578063f6171e441461089d575f5ffd5b8063e7d915cf116100ac578063e7d915cf146107f2578063ed24911d14610811578063f23a6e6114610825575f5ffd5b8063d843b7f414610785578063d8a4676f146107c6575f5ffd5b8063b94207d31161011b578063bdf8631711610101578063bdf8631714610719578063c7dec3fc1461072e578063cbd6407a1461075a575f5ffd5b8063b94207d3146106bf578063bc197c81146106d2575f5ffd5b8063a669aaf91161014b578063a669aaf914610671578063affed0e014610686578063b0d691fe14610699575f5ffd5b8063a035b1fe1461063d578063a4f9edbf14610652575f5ffd5b806358ce09091161020f57806391b7f5ed116101c55780639a8a0592116101ab5780639a8a05921461059a5780639c5e9590146105cd5780639ec4a5bf1461061e575f5ffd5b806391b7f5ed14610550578063982c0db31461056f575f5ffd5b806379412518116101f557806379412518146104bb5780637af73473146104ce5780638fb847ef1461050f575f5ffd5b806358ce0909146104605780636d70f7ae1461048c575f5ffd5b806317d70f7c116102645780633a871cdd1161024a5780633a871cdd1461040d5780634954bbf11461042c5780634ada3e611461044b575f5ffd5b806317d70f7c146103ce5780631bbbeeb8146103e2575f5ffd5b8063150b7a0211610294578063150b7a021461031b578063157305fe146103905780631626ba7e146103af575f5ffd5b806223de29146102b7578062427c54146102dd575f5ffd5b366102b357005b5f5ffd5b3480156102c2575f5ffd5b506102db6102d1366004612748565b5050505050505050565b005b3480156102e8575f5ffd5b506103086102f73660046127f7565b60086020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610326575f5ffd5b5061035f610335366004612812565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610312565b34801561039b575f5ffd5b506102db6103aa366004612956565b61094b565b3480156103ba575f5ffd5b5061035f6103c9366004612956565b610ac5565b3480156103d9575f5ffd5b50610308610c68565b3480156103ed575f5ffd5b506103086103fc3660046127f7565b60076020525f908152604090205481565b348015610418575f5ffd5b5061030861042736600461299a565b610c8c565b348015610437575f5ffd5b506102db6104463660046129e9565b610cc8565b348015610456575f5ffd5b5061030860035481565b34801561046b575f5ffd5b5061047f61047a366004612a46565b610eb7565b6040516103129190612a66565b348015610497575f5ffd5b506104ab6104a63660046127f7565b61100e565b6040519015158152602001610312565b6102db6104c9366004612aa8565b6110e0565b3480156104d9575f5ffd5b506103086104e83660046127f7565b73ffffffffffffffffffffffffffffffffffffffff165f9081526007602052604090205490565b34801561051a575f5ffd5b506103086105293660046127f7565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b34801561055b575f5ffd5b506102db61056a366004612afe565b611163565b34801561057a575f5ffd5b506103086105893660046127f7565b60096020525f908152604090205481565b3480156105a5575f5ffd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d8575f5ffd5b506005546105f99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610312565b348015610629575f5ffd5b50610308610638366004612aa8565b611251565b348015610648575f5ffd5b5061030860015481565b34801561065d575f5ffd5b506102db61066c366004612b15565b611305565b34801561067c575f5ffd5b5061030860045481565b348015610691575f5ffd5b505f54610308565b3480156106a4575f5ffd5b50730576a174d229e3cfa37253523e645a78a0c91b576105f9565b6103086106cd366004612b15565b611381565b3480156106dd575f5ffd5b5061035f6106ec366004612b90565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610724575f5ffd5b5061030860025481565b348015610739575f5ffd5b5061074d610748366004612c33565b61143c565b6040516103129190612cf1565b348015610765575f5ffd5b506103086107743660046127f7565b600c6020525f908152604090205481565b348015610790575f5ffd5b506105f961079f366004612afe565b600b6020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156107d1575f5ffd5b506107e56107e0366004612afe565b611526565b6040516103129190612d30565b3480156107fd575f5ffd5b506102db61080c366004612afe565b6115fb565b34801561081c575f5ffd5b50610308611727565b348015610830575f5ffd5b5061035f61083f366004612d6f565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b348015610875575f5ffd5b506103087f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b3480156108a8575f5ffd5b506103086108b7366004612a46565b611781565b3480156108c7575f5ffd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156108fa575f5ffd5b506105f96117a3565b34801561090e575f5ffd5b5061074d6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6109543361100e565b80610972575033730576a174d229e3cfa37253523e645a78a0c91b57145b610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084015b60405180910390fd5b60016006541115610a40576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff1615610ab1576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b610abb82826117c0565b5050600160065550565b5f5f5f5f610ae585602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610bfb5782858301602001610b068261100e565b158015610b29575073ffffffffffffffffffffffffffffffffffffffff82163014155b15610b5c57507fffffffff000000000000000000000000000000000000000000000000000000009450610c629350505050565b6040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690631626ba7e90610bb0908b908590600401612de6565b602060405180830381865afa158015610bcb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bef9190612dfe565b95505050505050610c62565b610c0a6104a6878386866119d5565b15610c3b57507f1626ba7e000000000000000000000000000000000000000000000000000000009250610c62915050565b507fffffffff00000000000000000000000000000000000000000000000000000000925050505b92915050565b5f5f610c726119f1565b806020019051810190610c859190612e3d565b9392505050565b5f610c95611ac0565b610c9f8484611b3f565b9050610cae6040850185612e69565b90505f03610cbf57610cbf84611c13565b610c8582611c91565b610cd13361100e565b80610cef575033730576a174d229e3cfa37253523e645a78a0c91b57145b610d7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60016006541115610db8576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff16610e0c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e1785856117c0565b805190915015610eab576005546040517f56d0819e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906356d0819e90610e7d908890859088908890600401612eca565b5f604051808303815f87803b158015610e94575f5ffd5b505af1158015610ea6573d5f5f3e3d5ffd5b505050505b50506001600655505050565b6002546060905f849003610ec9578093505b80610ed48486612f38565b1115610f2157610ee48385612f38565b6040517f7ae596850000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016109fa565b8315611007578367ffffffffffffffff811115610f4057610f40612880565b604051908082528060200260200182016040528015610f69578160200160208202803683370190505b505f808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e4549193505b84811015610fbc575f828152600a60205260409020600101549150600101610f99565b505f5b858110156110045781848281518110610fda57610fda612f4b565b6020908102919091018101919091525f838152600a90915260409020600101549150600101610fbf565b50505b5092915050565b5f5f5f6110196119f1565b80602001905181019061102c9190612e3d565b915091508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161108291815260200190565b602060405180830381865afa15801561109d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c19190612f78565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611153576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b61115e838383611d05565b505050565b61116c3361100e565b8061118a575033730576a174d229e3cfa37253523e645a78a0c91b57145b611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60018190556040518181527f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe09060200160405180910390a150565b5f61125a611727565b84848460405160200161126f93929190612f93565b604051602081830303815290604052805190602001206040516020016112c79291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b61130d6119f1565b5115611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064016109fa565b61137e81611ead565b50565b6005545f9073ffffffffffffffffffffffffffffffffffffffff16156113ef576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b335f818152600c602052604090205461140a91908490611251565b335f908152600c6020526040812080549293509061142783612fd1565b9190505550611437338383611d05565b919050565b60606114473361100e565b80611465575033730576a174d229e3cfa37253523e645a78a0c91b57145b6114f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b5f61150b878787878715611505578761201d565b5a61201d565b925090508061151c57815160208301fd5b5095945050505050565b5f818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff1615611437575f828152600a60205260408082208151808301928390529160029082845b81548152602001906001019080831161156d5750505050509050805f6002811061159957611599612f4b565b60200201511580156115ad57506020810151155b80156115e257505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548314155b156115f057600291506115f5565b600191505b50919050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461166e576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b5f818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16806116c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116d38183612120565b8073ffffffffffffffffffffffffffffffffffffffff167fa36a540c5fea3a5e69d4b1c2247b28a93fd183ef1314af26a8db7b3ae080bcd08360405161171b91815260200190565b60405180910390a25050565b5f7f0000000000000000000000000000000000000000000000000000000000000000461461175c57611757612273565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600a602052815f5260405f20816002811061179a575f80fd5b01549150829050565b5f5f6117ad6119f1565b806020019051810190610c629190612f78565b5f828152600b60205260408082205460055491517ff2e433bf0000000000000000000000000000000000000000000000000000000081526004810186905260609373ffffffffffffffffffffffffffffffffffffffff928316939092169063f2e433bf906024016080604051808303815f875af1158015611843573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118679190613008565b602081015190915073ffffffffffffffffffffffffffffffffffffffff1615611891575050610c62565b73ffffffffffffffffffffffffffffffffffffffff82166119275760055473ffffffffffffffffffffffffffffffffffffffff16156118d257806040015191505b73ffffffffffffffffffffffffffffffffffffffff8216611922576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018690526024016109fa565b611931565b6119318286612120565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260086020526040812080548695509161196483612fd1565b909155505060048054905f61197883612fd1565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f0cd979445339c62199996f208428d987b1cea24d18e62b79ec24d94b636e8b7086856040516119c5929190612de6565b60405180910390a2505092915050565b5f5f5f6119e487878787612371565b9150915061151c81612459565b6060611757611abb6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b61260b565b33730576a174d229e3cfa37253523e645a78a0c91b5714611b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016109fa565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81207f1626ba7e00000000000000000000000000000000000000000000000000000000611bd982611ba0610140880188612e69565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ac592505050565b7fffffffff000000000000000000000000000000000000000000000000000000001614611c0a576001915050610c62565b505f9392505050565b5f805460208301359180611c2683612fd1565b919050551461137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206e6f6e63650000000000000000000000000000000000000060448201526064016109fa565b801561137e576040515f9033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d805f8114611cf9576040519150601f19603f3d011682016040523d82523d5f602084013e611cfe565b606091505b5050505050565b611d10348284612660565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600760205260408120805491611d4083612fd1565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f908152600960205260408120805491611d7583612fd1565b90915550505f818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055600a9091528082207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e480546001830181905590859055808452918320849055600280547f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e394929392909190611e3c83612fd1565b909155505060038054905f611e5083612fd1565b91905055508573ffffffffffffffffffffffffffffffffffffffff167f4bda649efe6b98b0f9c1d5e859c29e20910f45c66dabfe6fad4a4881f7faf9cc8587604051611e9d929190612de6565b60405180910390a2505050505050565b5f611eb7826126aa565b90505f8151602083015ff09050611f896040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461115e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5772697465206661696c6564000000000000000000000000000000000000000060448201526064016109fa565b5f6060600184600181111561203457612034612d03565b036120a8578673ffffffffffffffffffffffffffffffffffffffff16838660405161205f91906130ac565b5f604051808303818686f4925050503d805f8114612098576040519150601f19603f3d011682016040523d82523d5f602084013e61209d565b606091505b509092509050612116565b8673ffffffffffffffffffffffffffffffffffffffff168387876040516120cf91906130ac565b5f60405180830381858888f193505050503d805f811461210a576040519150601f19603f3d011682016040523d82523d5f602084013e61210f565b606091505b5090925090505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600960205260408120805491612150836130b7565b909155505060028054905f612164836130b7565b90915550505f818152600a60205260408082208151808301928390529160029082845b8154815260200190600101908083116121875750505050509050805f600281106121b3576121b3612f4b565b60200201511580156121c757506020810151155b80156121fc57505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548214155b15612236576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018390526024016109fa565b6020818101805183515f908152600a9093526040808420600190810192909255935191518352838320919091559281529081208181559091015550565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d0935256040518060400160405280600581526020017f312e312e300000000000000000000000000000000000000000000000000000008152506040516020016122fc9190612cf1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156123a657505f90506003612450565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156123f7573d5f5f3e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661244a575f60019250925050612450565b91505f90505b94509492505050565b5f81600481111561246c5761246c612d03565b036124745750565b600181600481111561248857612488612d03565b036124ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109fa565b600281600481111561250357612503612d03565b0361256a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109fa565b600381600481111561257e5761257e612d03565b0361137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016109fa565b6060813b6001811161262c57505060408051602081019091525f8152919050565b80612636816130b7565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b60015483101561115e576001546040517fb48978280000000000000000000000000000000000000000000000000000000081526109fa918591600401918252602082015260400190565b6060815160016126ba9190612f38565b826040516020016126cc9291906130eb565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461137e575f5ffd5b5f5f83601f840112612713575f5ffd5b50813567ffffffffffffffff81111561272a575f5ffd5b602083019150836020828501011115612741575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b03121561275f575f5ffd5b883561276a816126e2565b9750602089013561277a816126e2565b9650604089013561278a816126e2565b955060608901359450608089013567ffffffffffffffff8111156127ac575f5ffd5b6127b88b828c01612703565b90955093505060a089013567ffffffffffffffff8111156127d7575f5ffd5b6127e38b828c01612703565b999c989b5096995094979396929594505050565b5f60208284031215612807575f5ffd5b8135610c85816126e2565b5f5f5f5f5f60808688031215612826575f5ffd5b8535612831816126e2565b94506020860135612841816126e2565b935060408601359250606086013567ffffffffffffffff811115612863575f5ffd5b61286f88828901612703565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f8301126128bc575f5ffd5b813567ffffffffffffffff8111156128d6576128d6612880565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561292357612923612880565b60405281815283820160200185101561293a575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612967575f5ffd5b82359150602083013567ffffffffffffffff811115612984575f5ffd5b612990858286016128ad565b9150509250929050565b5f5f5f606084860312156129ac575f5ffd5b833567ffffffffffffffff8111156129c2575f5ffd5b840161016081870312156129d4575f5ffd5b95602085013595506040909401359392505050565b5f5f5f5f608085870312156129fc575f5ffd5b84359350602085013567ffffffffffffffff811115612a19575f5ffd5b612a25878288016128ad565b9350506040850135612a36816126e2565b9396929550929360600135925050565b5f5f60408385031215612a57575f5ffd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b81811015612a9d578351835260209384019390920191600101612a7f565b509095945050505050565b5f5f5f60608486031215612aba575f5ffd5b8335612ac5816126e2565b9250602084013567ffffffffffffffff811115612ae0575f5ffd5b612aec868287016128ad565b93969395505050506040919091013590565b5f60208284031215612b0e575f5ffd5b5035919050565b5f60208284031215612b25575f5ffd5b813567ffffffffffffffff811115612b3b575f5ffd5b612b47848285016128ad565b949350505050565b5f5f83601f840112612b5f575f5ffd5b50813567ffffffffffffffff811115612b76575f5ffd5b6020830191508360208260051b8501011115612741575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612ba7575f5ffd5b8835612bb2816126e2565b97506020890135612bc2816126e2565b9650604089013567ffffffffffffffff811115612bdd575f5ffd5b612be98b828c01612b4f565b909750955050606089013567ffffffffffffffff811115612c08575f5ffd5b612c148b828c01612b4f565b909550935050608089013567ffffffffffffffff8111156127d7575f5ffd5b5f5f5f5f5f60a08688031215612c47575f5ffd5b8535612c52816126e2565b945060208601359350604086013567ffffffffffffffff811115612c74575f5ffd5b612c80888289016128ad565b935050606086013560028110612c94575f5ffd5b949793965091946080013592915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610c856020830184612ca5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020810160038310612d69577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f5f5f5f5f5f60a08789031215612d84575f5ffd5b8635612d8f816126e2565b95506020870135612d9f816126e2565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dc8575f5ffd5b612dd489828a01612703565b979a9699509497509295939492505050565b828152604060208201525f612b476040830184612ca5565b5f60208284031215612e0e575f5ffd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c85575f5ffd5b5f5f60408385031215612e4e575f5ffd5b8251612e59816126e2565b6020939093015192949293505050565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e9c575f5ffd5b83018035915067ffffffffffffffff821115612eb6575f5ffd5b602001915036819003821315612741575f5ffd5b848152608060208201525f612ee26080830186612ca5565b73ffffffffffffffffffffffffffffffffffffffff949094166040830152506060015292915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610c6257610c62612f0b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612f88575f5ffd5b8151610c85816126e2565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f612fc16060830185612ca5565b9050826040830152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361300157613001612f0b565b5060010190565b5f6080828403128015613019575f5ffd5b506040516080810167ffffffffffffffff8111828210171561303d5761303d612880565b604052825161304b816126e2565b8152602083015161305b816126e2565b6020820152604083015161306e816126e2565b6040820152606083015163ffffffff81168114613089575f5ffd5b60608201529392505050565b5f81518060208401855e5f93019283525090919050565b5f610c858284613095565b5f816130c5576130c5612f0b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201525f600e8201525f612b47600f83018461309556fea2646970667358221220959b491a03df420a39d9217bff79fea47ed3d14b1b9e42dcdf18b41c9b14edca64736f6c634300081b0033", - "deployedBytecode": "0x6080604052600436106102ac575f3560e01c8063a035b1fe11610165578063d843b7f4116100c6578063f5dcb7bb1161007c578063f698da2511610062578063f698da25146108bc578063fc0c546a146108ef578063ffa1ad7414610903575f5ffd5b8063f5dcb7bb1461086a578063f6171e441461089d575f5ffd5b8063e7d915cf116100ac578063e7d915cf146107f2578063ed24911d14610811578063f23a6e6114610825575f5ffd5b8063d843b7f414610785578063d8a4676f146107c6575f5ffd5b8063b94207d31161011b578063bdf8631711610101578063bdf8631714610719578063c7dec3fc1461072e578063cbd6407a1461075a575f5ffd5b8063b94207d3146106bf578063bc197c81146106d2575f5ffd5b8063a669aaf91161014b578063a669aaf914610671578063affed0e014610686578063b0d691fe14610699575f5ffd5b8063a035b1fe1461063d578063a4f9edbf14610652575f5ffd5b806358ce09091161020f57806391b7f5ed116101c55780639a8a0592116101ab5780639a8a05921461059a5780639c5e9590146105cd5780639ec4a5bf1461061e575f5ffd5b806391b7f5ed14610550578063982c0db31461056f575f5ffd5b806379412518116101f557806379412518146104bb5780637af73473146104ce5780638fb847ef1461050f575f5ffd5b806358ce0909146104605780636d70f7ae1461048c575f5ffd5b806317d70f7c116102645780633a871cdd1161024a5780633a871cdd1461040d5780634954bbf11461042c5780634ada3e611461044b575f5ffd5b806317d70f7c146103ce5780631bbbeeb8146103e2575f5ffd5b8063150b7a0211610294578063150b7a021461031b578063157305fe146103905780631626ba7e146103af575f5ffd5b806223de29146102b7578062427c54146102dd575f5ffd5b366102b357005b5f5ffd5b3480156102c2575f5ffd5b506102db6102d1366004612748565b5050505050505050565b005b3480156102e8575f5ffd5b506103086102f73660046127f7565b60086020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610326575f5ffd5b5061035f610335366004612812565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610312565b34801561039b575f5ffd5b506102db6103aa366004612956565b61094b565b3480156103ba575f5ffd5b5061035f6103c9366004612956565b610ac5565b3480156103d9575f5ffd5b50610308610c68565b3480156103ed575f5ffd5b506103086103fc3660046127f7565b60076020525f908152604090205481565b348015610418575f5ffd5b5061030861042736600461299a565b610c8c565b348015610437575f5ffd5b506102db6104463660046129e9565b610cc8565b348015610456575f5ffd5b5061030860035481565b34801561046b575f5ffd5b5061047f61047a366004612a46565b610eb7565b6040516103129190612a66565b348015610497575f5ffd5b506104ab6104a63660046127f7565b61100e565b6040519015158152602001610312565b6102db6104c9366004612aa8565b6110e0565b3480156104d9575f5ffd5b506103086104e83660046127f7565b73ffffffffffffffffffffffffffffffffffffffff165f9081526007602052604090205490565b34801561051a575f5ffd5b506103086105293660046127f7565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b34801561055b575f5ffd5b506102db61056a366004612afe565b611163565b34801561057a575f5ffd5b506103086105893660046127f7565b60096020525f908152604090205481565b3480156105a5575f5ffd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d8575f5ffd5b506005546105f99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610312565b348015610629575f5ffd5b50610308610638366004612aa8565b611251565b348015610648575f5ffd5b5061030860015481565b34801561065d575f5ffd5b506102db61066c366004612b15565b611305565b34801561067c575f5ffd5b5061030860045481565b348015610691575f5ffd5b505f54610308565b3480156106a4575f5ffd5b50730576a174d229e3cfa37253523e645a78a0c91b576105f9565b6103086106cd366004612b15565b611381565b3480156106dd575f5ffd5b5061035f6106ec366004612b90565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610724575f5ffd5b5061030860025481565b348015610739575f5ffd5b5061074d610748366004612c33565b61143c565b6040516103129190612cf1565b348015610765575f5ffd5b506103086107743660046127f7565b600c6020525f908152604090205481565b348015610790575f5ffd5b506105f961079f366004612afe565b600b6020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156107d1575f5ffd5b506107e56107e0366004612afe565b611526565b6040516103129190612d30565b3480156107fd575f5ffd5b506102db61080c366004612afe565b6115fb565b34801561081c575f5ffd5b50610308611727565b348015610830575f5ffd5b5061035f61083f366004612d6f565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b348015610875575f5ffd5b506103087f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b3480156108a8575f5ffd5b506103086108b7366004612a46565b611781565b3480156108c7575f5ffd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156108fa575f5ffd5b506105f96117a3565b34801561090e575f5ffd5b5061074d6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6109543361100e565b80610972575033730576a174d229e3cfa37253523e645a78a0c91b57145b610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084015b60405180910390fd5b60016006541115610a40576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff1615610ab1576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b610abb82826117c0565b5050600160065550565b5f5f5f5f610ae585602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610bfb5782858301602001610b068261100e565b158015610b29575073ffffffffffffffffffffffffffffffffffffffff82163014155b15610b5c57507fffffffff000000000000000000000000000000000000000000000000000000009450610c629350505050565b6040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690631626ba7e90610bb0908b908590600401612de6565b602060405180830381865afa158015610bcb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bef9190612dfe565b95505050505050610c62565b610c0a6104a6878386866119d5565b15610c3b57507f1626ba7e000000000000000000000000000000000000000000000000000000009250610c62915050565b507fffffffff00000000000000000000000000000000000000000000000000000000925050505b92915050565b5f5f610c726119f1565b806020019051810190610c859190612e3d565b9392505050565b5f610c95611ac0565b610c9f8484611b3f565b9050610cae6040850185612e69565b90505f03610cbf57610cbf84611c13565b610c8582611c91565b610cd13361100e565b80610cef575033730576a174d229e3cfa37253523e645a78a0c91b57145b610d7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60016006541115610db8576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff16610e0c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e1785856117c0565b805190915015610eab576005546040517f56d0819e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906356d0819e90610e7d908890859088908890600401612eca565b5f604051808303815f87803b158015610e94575f5ffd5b505af1158015610ea6573d5f5f3e3d5ffd5b505050505b50506001600655505050565b6002546060905f849003610ec9578093505b80610ed48486612f38565b1115610f2157610ee48385612f38565b6040517f7ae596850000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016109fa565b8315611007578367ffffffffffffffff811115610f4057610f40612880565b604051908082528060200260200182016040528015610f69578160200160208202803683370190505b505f808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e4549193505b84811015610fbc575f828152600a60205260409020600101549150600101610f99565b505f5b858110156110045781848281518110610fda57610fda612f4b565b6020908102919091018101919091525f838152600a90915260409020600101549150600101610fbf565b50505b5092915050565b5f5f5f6110196119f1565b80602001905181019061102c9190612e3d565b915091508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161108291815260200190565b602060405180830381865afa15801561109d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c19190612f78565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611153576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b61115e838383611d05565b505050565b61116c3361100e565b8061118a575033730576a174d229e3cfa37253523e645a78a0c91b57145b611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60018190556040518181527f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe09060200160405180910390a150565b5f61125a611727565b84848460405160200161126f93929190612f93565b604051602081830303815290604052805190602001206040516020016112c79291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b61130d6119f1565b5115611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064016109fa565b61137e81611ead565b50565b6005545f9073ffffffffffffffffffffffffffffffffffffffff16156113ef576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b335f818152600c602052604090205461140a91908490611251565b335f908152600c6020526040812080549293509061142783612fd1565b9190505550611437338383611d05565b919050565b60606114473361100e565b80611465575033730576a174d229e3cfa37253523e645a78a0c91b57145b6114f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b5f61150b878787878715611505578761201d565b5a61201d565b925090508061151c57815160208301fd5b5095945050505050565b5f818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff1615611437575f828152600a60205260408082208151808301928390529160029082845b81548152602001906001019080831161156d5750505050509050805f6002811061159957611599612f4b565b60200201511580156115ad57506020810151155b80156115e257505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548314155b156115f057600291506115f5565b600191505b50919050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461166e576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b5f818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16806116c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116d38183612120565b8073ffffffffffffffffffffffffffffffffffffffff167fa36a540c5fea3a5e69d4b1c2247b28a93fd183ef1314af26a8db7b3ae080bcd08360405161171b91815260200190565b60405180910390a25050565b5f7f0000000000000000000000000000000000000000000000000000000000000000461461175c57611757612273565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600a602052815f5260405f20816002811061179a575f80fd5b01549150829050565b5f5f6117ad6119f1565b806020019051810190610c629190612f78565b5f828152600b60205260408082205460055491517ff2e433bf0000000000000000000000000000000000000000000000000000000081526004810186905260609373ffffffffffffffffffffffffffffffffffffffff928316939092169063f2e433bf906024016080604051808303815f875af1158015611843573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118679190613008565b602081015190915073ffffffffffffffffffffffffffffffffffffffff1615611891575050610c62565b73ffffffffffffffffffffffffffffffffffffffff82166119275760055473ffffffffffffffffffffffffffffffffffffffff16156118d257806040015191505b73ffffffffffffffffffffffffffffffffffffffff8216611922576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018690526024016109fa565b611931565b6119318286612120565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260086020526040812080548695509161196483612fd1565b909155505060048054905f61197883612fd1565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f0cd979445339c62199996f208428d987b1cea24d18e62b79ec24d94b636e8b7086856040516119c5929190612de6565b60405180910390a2505092915050565b5f5f5f6119e487878787612371565b9150915061151c81612459565b6060611757611abb6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b61260b565b33730576a174d229e3cfa37253523e645a78a0c91b5714611b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016109fa565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81207f1626ba7e00000000000000000000000000000000000000000000000000000000611bd982611ba0610140880188612e69565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ac592505050565b7fffffffff000000000000000000000000000000000000000000000000000000001614611c0a576001915050610c62565b505f9392505050565b5f805460208301359180611c2683612fd1565b919050551461137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206e6f6e63650000000000000000000000000000000000000060448201526064016109fa565b801561137e576040515f9033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d805f8114611cf9576040519150601f19603f3d011682016040523d82523d5f602084013e611cfe565b606091505b5050505050565b611d10348284612660565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600760205260408120805491611d4083612fd1565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f908152600960205260408120805491611d7583612fd1565b90915550505f818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055600a9091528082207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e480546001830181905590859055808452918320849055600280547f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e394929392909190611e3c83612fd1565b909155505060038054905f611e5083612fd1565b91905055508573ffffffffffffffffffffffffffffffffffffffff167f4bda649efe6b98b0f9c1d5e859c29e20910f45c66dabfe6fad4a4881f7faf9cc8587604051611e9d929190612de6565b60405180910390a2505050505050565b5f611eb7826126aa565b90505f8151602083015ff09050611f896040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461115e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5772697465206661696c6564000000000000000000000000000000000000000060448201526064016109fa565b5f6060600184600181111561203457612034612d03565b036120a8578673ffffffffffffffffffffffffffffffffffffffff16838660405161205f91906130ac565b5f604051808303818686f4925050503d805f8114612098576040519150601f19603f3d011682016040523d82523d5f602084013e61209d565b606091505b509092509050612116565b8673ffffffffffffffffffffffffffffffffffffffff168387876040516120cf91906130ac565b5f60405180830381858888f193505050503d805f811461210a576040519150601f19603f3d011682016040523d82523d5f602084013e61210f565b606091505b5090925090505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600960205260408120805491612150836130b7565b909155505060028054905f612164836130b7565b90915550505f818152600a60205260408082208151808301928390529160029082845b8154815260200190600101908083116121875750505050509050805f600281106121b3576121b3612f4b565b60200201511580156121c757506020810151155b80156121fc57505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548214155b15612236576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018390526024016109fa565b6020818101805183515f908152600a9093526040808420600190810192909255935191518352838320919091559281529081208181559091015550565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d0935256040518060400160405280600581526020017f312e312e300000000000000000000000000000000000000000000000000000008152506040516020016122fc9190612cf1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156123a657505f90506003612450565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156123f7573d5f5f3e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661244a575f60019250925050612450565b91505f90505b94509492505050565b5f81600481111561246c5761246c612d03565b036124745750565b600181600481111561248857612488612d03565b036124ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109fa565b600281600481111561250357612503612d03565b0361256a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109fa565b600381600481111561257e5761257e612d03565b0361137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016109fa565b6060813b6001811161262c57505060408051602081019091525f8152919050565b80612636816130b7565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b60015483101561115e576001546040517fb48978280000000000000000000000000000000000000000000000000000000081526109fa918591600401918252602082015260400190565b6060815160016126ba9190612f38565b826040516020016126cc9291906130eb565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461137e575f5ffd5b5f5f83601f840112612713575f5ffd5b50813567ffffffffffffffff81111561272a575f5ffd5b602083019150836020828501011115612741575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b03121561275f575f5ffd5b883561276a816126e2565b9750602089013561277a816126e2565b9650604089013561278a816126e2565b955060608901359450608089013567ffffffffffffffff8111156127ac575f5ffd5b6127b88b828c01612703565b90955093505060a089013567ffffffffffffffff8111156127d7575f5ffd5b6127e38b828c01612703565b999c989b5096995094979396929594505050565b5f60208284031215612807575f5ffd5b8135610c85816126e2565b5f5f5f5f5f60808688031215612826575f5ffd5b8535612831816126e2565b94506020860135612841816126e2565b935060408601359250606086013567ffffffffffffffff811115612863575f5ffd5b61286f88828901612703565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f8301126128bc575f5ffd5b813567ffffffffffffffff8111156128d6576128d6612880565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561292357612923612880565b60405281815283820160200185101561293a575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612967575f5ffd5b82359150602083013567ffffffffffffffff811115612984575f5ffd5b612990858286016128ad565b9150509250929050565b5f5f5f606084860312156129ac575f5ffd5b833567ffffffffffffffff8111156129c2575f5ffd5b840161016081870312156129d4575f5ffd5b95602085013595506040909401359392505050565b5f5f5f5f608085870312156129fc575f5ffd5b84359350602085013567ffffffffffffffff811115612a19575f5ffd5b612a25878288016128ad565b9350506040850135612a36816126e2565b9396929550929360600135925050565b5f5f60408385031215612a57575f5ffd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b81811015612a9d578351835260209384019390920191600101612a7f565b509095945050505050565b5f5f5f60608486031215612aba575f5ffd5b8335612ac5816126e2565b9250602084013567ffffffffffffffff811115612ae0575f5ffd5b612aec868287016128ad565b93969395505050506040919091013590565b5f60208284031215612b0e575f5ffd5b5035919050565b5f60208284031215612b25575f5ffd5b813567ffffffffffffffff811115612b3b575f5ffd5b612b47848285016128ad565b949350505050565b5f5f83601f840112612b5f575f5ffd5b50813567ffffffffffffffff811115612b76575f5ffd5b6020830191508360208260051b8501011115612741575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612ba7575f5ffd5b8835612bb2816126e2565b97506020890135612bc2816126e2565b9650604089013567ffffffffffffffff811115612bdd575f5ffd5b612be98b828c01612b4f565b909750955050606089013567ffffffffffffffff811115612c08575f5ffd5b612c148b828c01612b4f565b909550935050608089013567ffffffffffffffff8111156127d7575f5ffd5b5f5f5f5f5f60a08688031215612c47575f5ffd5b8535612c52816126e2565b945060208601359350604086013567ffffffffffffffff811115612c74575f5ffd5b612c80888289016128ad565b935050606086013560028110612c94575f5ffd5b949793965091946080013592915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610c856020830184612ca5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020810160038310612d69577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f5f5f5f5f5f60a08789031215612d84575f5ffd5b8635612d8f816126e2565b95506020870135612d9f816126e2565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dc8575f5ffd5b612dd489828a01612703565b979a9699509497509295939492505050565b828152604060208201525f612b476040830184612ca5565b5f60208284031215612e0e575f5ffd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c85575f5ffd5b5f5f60408385031215612e4e575f5ffd5b8251612e59816126e2565b6020939093015192949293505050565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e9c575f5ffd5b83018035915067ffffffffffffffff821115612eb6575f5ffd5b602001915036819003821315612741575f5ffd5b848152608060208201525f612ee26080830186612ca5565b73ffffffffffffffffffffffffffffffffffffffff949094166040830152506060015292915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610c6257610c62612f0b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612f88575f5ffd5b8151610c85816126e2565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f612fc16060830185612ca5565b9050826040830152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361300157613001612f0b565b5060010190565b5f6080828403128015613019575f5ffd5b506040516080810167ffffffffffffffff8111828210171561303d5761303d612880565b604052825161304b816126e2565b8152602083015161305b816126e2565b6020820152604083015161306e816126e2565b6040820152606083015163ffffffff81168114613089575f5ffd5b60608201529392505050565b5f81518060208401855e5f93019283525090919050565b5f610c858284613095565b5f816130c5576130c5612f0b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201525f600e8201525f612b47600f83018461309556fea2646970667358221220959b491a03df420a39d9217bff79fea47ed3d14b1b9e42dcdf18b41c9b14edca64736f6c634300081b0033", + "bytecode": "0x60c06040525f5f556001600655348015610017575f5ffd5b5060405161376d38038061376d83398101604081905261003691610469565b604080516001600160a01b038616602082015280820185905281518082038301815260609091019091528490849061006d8161016b565b5050506001600160a01b0384166100975760405163d92e233d60e01b815260040160405180910390fd5b6040516331a9108f60e11b8152600481018490525f906001600160a01b03861690636352211e90602401602060405180830381865afa1580156100dc573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061010091906104ad565b90506001600160a01b03811661013157604051630ede975960e01b8152600481018590526024015b60405180910390fd5b600580546001600160a01b0319166001600160a01b03841617905560018390554660a05261015d6101cd565b608052506105959350505050565b610173610295565b51156101c15760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610128565b6101ca816102fd565b50565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d093525604051806040016040528060058152602001640312e312e360dc1b81525060405160200161023e91906104cd565b60408051601f1981840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60606102f86102f3604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6103c1565b905090565b5f61030782610416565b90505f8151602083015ff0905061036d604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6001600160a01b0316816001600160a01b0316146103bc5760405162461bcd60e51b815260206004820152600c60248201526b15dc9a5d194819985a5b195960a21b6044820152606401610128565b505050565b6060813b600181116103e257505060408051602081019091525f8152919050565b806103ec81610516565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b606081516001610426919061052b565b82604051602001610438929190610544565b6040516020818303038152906040529050919050565b80516001600160a01b0381168114610464575f5ffd5b919050565b5f5f5f5f6080858703121561047c575f5ffd5b6104858561044e565b60208601516040870151919550935091506104a26060860161044e565b905092959194509250565b5f602082840312156104bd575f5ffd5b6104c68261044e565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52601160045260245ffd5b5f8161052457610524610502565b505f190190565b8082018082111561053e5761053e610502565b92915050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201525f600e820181905282518060208501600f85015e5f9201600f019182525092915050565b60805160a0516131a96105c45f395f81816105ab015261172a01525f81816108cd015261175f01526131a95ff3fe6080604052600436106102ac575f3560e01c8063a035b1fe11610165578063d843b7f4116100c6578063f5dcb7bb1161007c578063f698da2511610062578063f698da25146108bc578063fc0c546a146108ef578063ffa1ad7414610903575f5ffd5b8063f5dcb7bb1461086a578063f6171e441461089d575f5ffd5b8063e7d915cf116100ac578063e7d915cf146107f2578063ed24911d14610811578063f23a6e6114610825575f5ffd5b8063d843b7f414610785578063d8a4676f146107c6575f5ffd5b8063b94207d31161011b578063bdf8631711610101578063bdf8631714610719578063c7dec3fc1461072e578063cbd6407a1461075a575f5ffd5b8063b94207d3146106bf578063bc197c81146106d2575f5ffd5b8063a669aaf91161014b578063a669aaf914610671578063affed0e014610686578063b0d691fe14610699575f5ffd5b8063a035b1fe1461063d578063a4f9edbf14610652575f5ffd5b806358ce09091161020f57806391b7f5ed116101c55780639a8a0592116101ab5780639a8a05921461059a5780639c5e9590146105cd5780639ec4a5bf1461061e575f5ffd5b806391b7f5ed14610550578063982c0db31461056f575f5ffd5b806379412518116101f557806379412518146104bb5780637af73473146104ce5780638fb847ef1461050f575f5ffd5b806358ce0909146104605780636d70f7ae1461048c575f5ffd5b806317d70f7c116102645780633a871cdd1161024a5780633a871cdd1461040d5780634954bbf11461042c5780634ada3e611461044b575f5ffd5b806317d70f7c146103ce5780631bbbeeb8146103e2575f5ffd5b8063150b7a0211610294578063150b7a021461031b578063157305fe146103905780631626ba7e146103af575f5ffd5b806223de29146102b7578062427c54146102dd575f5ffd5b366102b357005b5f5ffd5b3480156102c2575f5ffd5b506102db6102d1366004612748565b5050505050505050565b005b3480156102e8575f5ffd5b506103086102f73660046127f7565b60086020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610326575f5ffd5b5061035f610335366004612812565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610312565b34801561039b575f5ffd5b506102db6103aa366004612956565b61094b565b3480156103ba575f5ffd5b5061035f6103c9366004612956565b610ac5565b3480156103d9575f5ffd5b50610308610c68565b3480156103ed575f5ffd5b506103086103fc3660046127f7565b60076020525f908152604090205481565b348015610418575f5ffd5b5061030861042736600461299a565b610c8c565b348015610437575f5ffd5b506102db6104463660046129e9565b610cc8565b348015610456575f5ffd5b5061030860035481565b34801561046b575f5ffd5b5061047f61047a366004612a46565b610eb7565b6040516103129190612a66565b348015610497575f5ffd5b506104ab6104a63660046127f7565b61100e565b6040519015158152602001610312565b6102db6104c9366004612aa8565b6110e0565b3480156104d9575f5ffd5b506103086104e83660046127f7565b73ffffffffffffffffffffffffffffffffffffffff165f9081526007602052604090205490565b34801561051a575f5ffd5b506103086105293660046127f7565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b34801561055b575f5ffd5b506102db61056a366004612afe565b611163565b34801561057a575f5ffd5b506103086105893660046127f7565b60096020525f908152604090205481565b3480156105a5575f5ffd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d8575f5ffd5b506005546105f99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610312565b348015610629575f5ffd5b50610308610638366004612aa8565b611251565b348015610648575f5ffd5b5061030860015481565b34801561065d575f5ffd5b506102db61066c366004612b15565b611305565b34801561067c575f5ffd5b5061030860045481565b348015610691575f5ffd5b505f54610308565b3480156106a4575f5ffd5b50730576a174d229e3cfa37253523e645a78a0c91b576105f9565b6103086106cd366004612b15565b611381565b3480156106dd575f5ffd5b5061035f6106ec366004612b90565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610724575f5ffd5b5061030860025481565b348015610739575f5ffd5b5061074d610748366004612c33565b61143c565b6040516103129190612cf1565b348015610765575f5ffd5b506103086107743660046127f7565b600c6020525f908152604090205481565b348015610790575f5ffd5b506105f961079f366004612afe565b600b6020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156107d1575f5ffd5b506107e56107e0366004612afe565b611526565b6040516103129190612d30565b3480156107fd575f5ffd5b506102db61080c366004612afe565b6115fb565b34801561081c575f5ffd5b50610308611727565b348015610830575f5ffd5b5061035f61083f366004612d6f565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b348015610875575f5ffd5b506103087f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b3480156108a8575f5ffd5b506103086108b7366004612a46565b611781565b3480156108c7575f5ffd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156108fa575f5ffd5b506105f96117a3565b34801561090e575f5ffd5b5061074d6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6109543361100e565b80610972575033730576a174d229e3cfa37253523e645a78a0c91b57145b610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084015b60405180910390fd5b60016006541115610a40576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff1615610ab1576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b610abb82826117c0565b5050600160065550565b5f5f5f5f610ae585602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610bfb5782858301602001610b068261100e565b158015610b29575073ffffffffffffffffffffffffffffffffffffffff82163014155b15610b5c57507fffffffff000000000000000000000000000000000000000000000000000000009450610c629350505050565b6040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690631626ba7e90610bb0908b908590600401612de6565b602060405180830381865afa158015610bcb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bef9190612dfe565b95505050505050610c62565b610c0a6104a6878386866119d5565b15610c3b57507f1626ba7e000000000000000000000000000000000000000000000000000000009250610c62915050565b507fffffffff00000000000000000000000000000000000000000000000000000000925050505b92915050565b5f5f610c726119f1565b806020019051810190610c859190612e3d565b9392505050565b5f610c95611ac0565b610c9f8484611b3f565b9050610cae6040850185612e69565b90505f03610cbf57610cbf84611c13565b610c8582611c91565b610cd13361100e565b80610cef575033730576a174d229e3cfa37253523e645a78a0c91b57145b610d7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60016006541115610db8576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff16610e0c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e1785856117c0565b805190915015610eab576005546040517f56d0819e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906356d0819e90610e7d908890859088908890600401612eca565b5f604051808303815f87803b158015610e94575f5ffd5b505af1158015610ea6573d5f5f3e3d5ffd5b505050505b50506001600655505050565b6002546060905f849003610ec9578093505b80610ed48486612f38565b1115610f2157610ee48385612f38565b6040517f7ae596850000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016109fa565b8315611007578367ffffffffffffffff811115610f4057610f40612880565b604051908082528060200260200182016040528015610f69578160200160208202803683370190505b505f808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e4549193505b84811015610fbc575f828152600a60205260409020600101549150600101610f99565b505f5b858110156110045781848281518110610fda57610fda612f4b565b6020908102919091018101919091525f838152600a90915260409020600101549150600101610fbf565b50505b5092915050565b5f5f5f6110196119f1565b80602001905181019061102c9190612e3d565b915091508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161108291815260200190565b602060405180830381865afa15801561109d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c19190612f78565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611153576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b61115e838383611d05565b505050565b61116c3361100e565b8061118a575033730576a174d229e3cfa37253523e645a78a0c91b57145b611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60018190556040518181527f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe09060200160405180910390a150565b5f61125a611727565b84848460405160200161126f93929190612f93565b604051602081830303815290604052805190602001206040516020016112c79291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b61130d6119f1565b5115611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064016109fa565b61137e81611ead565b50565b6005545f9073ffffffffffffffffffffffffffffffffffffffff16156113ef576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b335f818152600c602052604090205461140a91908490611251565b335f908152600c6020526040812080549293509061142783612fd1565b9190505550611437338383611d05565b919050565b60606114473361100e565b80611465575033730576a174d229e3cfa37253523e645a78a0c91b57145b6114f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b5f61150b878787878715611505578761201d565b5a61201d565b925090508061151c57815160208301fd5b5095945050505050565b5f818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff1615611437575f828152600a60205260408082208151808301928390529160029082845b81548152602001906001019080831161156d5750505050509050805f6002811061159957611599612f4b565b60200201511580156115ad57506020810151155b80156115e257505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548314155b156115f057600291506115f5565b600191505b50919050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461166e576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b5f818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16806116c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116d38183612120565b8073ffffffffffffffffffffffffffffffffffffffff167fa36a540c5fea3a5e69d4b1c2247b28a93fd183ef1314af26a8db7b3ae080bcd08360405161171b91815260200190565b60405180910390a25050565b5f7f0000000000000000000000000000000000000000000000000000000000000000461461175c57611757612273565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600a602052815f5260405f20816002811061179a575f80fd5b01549150829050565b5f5f6117ad6119f1565b806020019051810190610c629190612f78565b5f828152600b60205260408082205460055491517ff2e433bf0000000000000000000000000000000000000000000000000000000081526004810186905260609373ffffffffffffffffffffffffffffffffffffffff928316939092169063f2e433bf906024016080604051808303815f875af1158015611843573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118679190613008565b602081015190915073ffffffffffffffffffffffffffffffffffffffff1615611891575050610c62565b73ffffffffffffffffffffffffffffffffffffffff82166119275760055473ffffffffffffffffffffffffffffffffffffffff16156118d257806040015191505b73ffffffffffffffffffffffffffffffffffffffff8216611922576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018690526024016109fa565b611931565b6119318286612120565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260086020526040812080548695509161196483612fd1565b909155505060048054905f61197883612fd1565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f0cd979445339c62199996f208428d987b1cea24d18e62b79ec24d94b636e8b7086856040516119c5929190612de6565b60405180910390a2505092915050565b5f5f5f6119e487878787612371565b9150915061151c81612459565b6060611757611abb6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b61260b565b33730576a174d229e3cfa37253523e645a78a0c91b5714611b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016109fa565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81207f1626ba7e00000000000000000000000000000000000000000000000000000000611bd982611ba0610140880188612e69565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ac592505050565b7fffffffff000000000000000000000000000000000000000000000000000000001614611c0a576001915050610c62565b505f9392505050565b5f805460208301359180611c2683612fd1565b919050551461137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206e6f6e63650000000000000000000000000000000000000060448201526064016109fa565b801561137e576040515f9033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d805f8114611cf9576040519150601f19603f3d011682016040523d82523d5f602084013e611cfe565b606091505b5050505050565b611d10348284612660565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600760205260408120805491611d4083612fd1565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f908152600960205260408120805491611d7583612fd1565b90915550505f818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055600a9091528082207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e480546001830181905590859055808452918320849055600280547f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e394929392909190611e3c83612fd1565b909155505060038054905f611e5083612fd1565b91905055508573ffffffffffffffffffffffffffffffffffffffff167f4bda649efe6b98b0f9c1d5e859c29e20910f45c66dabfe6fad4a4881f7faf9cc8587604051611e9d929190612de6565b60405180910390a2505050505050565b5f611eb7826126aa565b90505f8151602083015ff09050611f896040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461115e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5772697465206661696c6564000000000000000000000000000000000000000060448201526064016109fa565b5f6060600184600181111561203457612034612d03565b036120a8578673ffffffffffffffffffffffffffffffffffffffff16838660405161205f91906130ac565b5f604051808303818686f4925050503d805f8114612098576040519150601f19603f3d011682016040523d82523d5f602084013e61209d565b606091505b509092509050612116565b8673ffffffffffffffffffffffffffffffffffffffff168387876040516120cf91906130ac565b5f60405180830381858888f193505050503d805f811461210a576040519150601f19603f3d011682016040523d82523d5f602084013e61210f565b606091505b5090925090505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600960205260408120805491612150836130b7565b909155505060028054905f612164836130b7565b90915550505f818152600a60205260408082208151808301928390529160029082845b8154815260200190600101908083116121875750505050509050805f600281106121b3576121b3612f4b565b60200201511580156121c757506020810151155b80156121fc57505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548214155b15612236576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018390526024016109fa565b6020818101805183515f908152600a9093526040808420600190810192909255935191518352838320919091559281529081208181559091015550565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d0935256040518060400160405280600581526020017f312e312e300000000000000000000000000000000000000000000000000000008152506040516020016122fc9190612cf1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156123a657505f90506003612450565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156123f7573d5f5f3e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661244a575f60019250925050612450565b91505f90505b94509492505050565b5f81600481111561246c5761246c612d03565b036124745750565b600181600481111561248857612488612d03565b036124ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109fa565b600281600481111561250357612503612d03565b0361256a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109fa565b600381600481111561257e5761257e612d03565b0361137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016109fa565b6060813b6001811161262c57505060408051602081019091525f8152919050565b80612636816130b7565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b60015483101561115e576001546040517fb48978280000000000000000000000000000000000000000000000000000000081526109fa918591600401918252602082015260400190565b6060815160016126ba9190612f38565b826040516020016126cc9291906130eb565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461137e575f5ffd5b5f5f83601f840112612713575f5ffd5b50813567ffffffffffffffff81111561272a575f5ffd5b602083019150836020828501011115612741575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b03121561275f575f5ffd5b883561276a816126e2565b9750602089013561277a816126e2565b9650604089013561278a816126e2565b955060608901359450608089013567ffffffffffffffff8111156127ac575f5ffd5b6127b88b828c01612703565b90955093505060a089013567ffffffffffffffff8111156127d7575f5ffd5b6127e38b828c01612703565b999c989b5096995094979396929594505050565b5f60208284031215612807575f5ffd5b8135610c85816126e2565b5f5f5f5f5f60808688031215612826575f5ffd5b8535612831816126e2565b94506020860135612841816126e2565b935060408601359250606086013567ffffffffffffffff811115612863575f5ffd5b61286f88828901612703565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f8301126128bc575f5ffd5b813567ffffffffffffffff8111156128d6576128d6612880565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561292357612923612880565b60405281815283820160200185101561293a575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612967575f5ffd5b82359150602083013567ffffffffffffffff811115612984575f5ffd5b612990858286016128ad565b9150509250929050565b5f5f5f606084860312156129ac575f5ffd5b833567ffffffffffffffff8111156129c2575f5ffd5b840161016081870312156129d4575f5ffd5b95602085013595506040909401359392505050565b5f5f5f5f608085870312156129fc575f5ffd5b84359350602085013567ffffffffffffffff811115612a19575f5ffd5b612a25878288016128ad565b9350506040850135612a36816126e2565b9396929550929360600135925050565b5f5f60408385031215612a57575f5ffd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b81811015612a9d578351835260209384019390920191600101612a7f565b509095945050505050565b5f5f5f60608486031215612aba575f5ffd5b8335612ac5816126e2565b9250602084013567ffffffffffffffff811115612ae0575f5ffd5b612aec868287016128ad565b93969395505050506040919091013590565b5f60208284031215612b0e575f5ffd5b5035919050565b5f60208284031215612b25575f5ffd5b813567ffffffffffffffff811115612b3b575f5ffd5b612b47848285016128ad565b949350505050565b5f5f83601f840112612b5f575f5ffd5b50813567ffffffffffffffff811115612b76575f5ffd5b6020830191508360208260051b8501011115612741575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612ba7575f5ffd5b8835612bb2816126e2565b97506020890135612bc2816126e2565b9650604089013567ffffffffffffffff811115612bdd575f5ffd5b612be98b828c01612b4f565b909750955050606089013567ffffffffffffffff811115612c08575f5ffd5b612c148b828c01612b4f565b909550935050608089013567ffffffffffffffff8111156127d7575f5ffd5b5f5f5f5f5f60a08688031215612c47575f5ffd5b8535612c52816126e2565b945060208601359350604086013567ffffffffffffffff811115612c74575f5ffd5b612c80888289016128ad565b935050606086013560028110612c94575f5ffd5b949793965091946080013592915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610c856020830184612ca5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020810160038310612d69577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f5f5f5f5f5f60a08789031215612d84575f5ffd5b8635612d8f816126e2565b95506020870135612d9f816126e2565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dc8575f5ffd5b612dd489828a01612703565b979a9699509497509295939492505050565b828152604060208201525f612b476040830184612ca5565b5f60208284031215612e0e575f5ffd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c85575f5ffd5b5f5f60408385031215612e4e575f5ffd5b8251612e59816126e2565b6020939093015192949293505050565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e9c575f5ffd5b83018035915067ffffffffffffffff821115612eb6575f5ffd5b602001915036819003821315612741575f5ffd5b848152608060208201525f612ee26080830186612ca5565b73ffffffffffffffffffffffffffffffffffffffff949094166040830152506060015292915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610c6257610c62612f0b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612f88575f5ffd5b8151610c85816126e2565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f612fc16060830185612ca5565b9050826040830152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361300157613001612f0b565b5060010190565b5f6080828403128015613019575f5ffd5b506040516080810167ffffffffffffffff8111828210171561303d5761303d612880565b604052825161304b816126e2565b8152602083015161305b816126e2565b6020820152604083015161306e816126e2565b6040820152606083015163ffffffff81168114613089575f5ffd5b60608201529392505050565b5f81518060208401855e5f93019283525090919050565b5f610c858284613095565b5f816130c5576130c5612f0b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201525f600e8201525f612b47600f83018461309556fea2646970667358221220704524f95757c94019cddad03ecfec4f1e3e0d509ed6ce5bc971e103a7b7c95664736f6c634300081c0033", + "deployedBytecode": "0x6080604052600436106102ac575f3560e01c8063a035b1fe11610165578063d843b7f4116100c6578063f5dcb7bb1161007c578063f698da2511610062578063f698da25146108bc578063fc0c546a146108ef578063ffa1ad7414610903575f5ffd5b8063f5dcb7bb1461086a578063f6171e441461089d575f5ffd5b8063e7d915cf116100ac578063e7d915cf146107f2578063ed24911d14610811578063f23a6e6114610825575f5ffd5b8063d843b7f414610785578063d8a4676f146107c6575f5ffd5b8063b94207d31161011b578063bdf8631711610101578063bdf8631714610719578063c7dec3fc1461072e578063cbd6407a1461075a575f5ffd5b8063b94207d3146106bf578063bc197c81146106d2575f5ffd5b8063a669aaf91161014b578063a669aaf914610671578063affed0e014610686578063b0d691fe14610699575f5ffd5b8063a035b1fe1461063d578063a4f9edbf14610652575f5ffd5b806358ce09091161020f57806391b7f5ed116101c55780639a8a0592116101ab5780639a8a05921461059a5780639c5e9590146105cd5780639ec4a5bf1461061e575f5ffd5b806391b7f5ed14610550578063982c0db31461056f575f5ffd5b806379412518116101f557806379412518146104bb5780637af73473146104ce5780638fb847ef1461050f575f5ffd5b806358ce0909146104605780636d70f7ae1461048c575f5ffd5b806317d70f7c116102645780633a871cdd1161024a5780633a871cdd1461040d5780634954bbf11461042c5780634ada3e611461044b575f5ffd5b806317d70f7c146103ce5780631bbbeeb8146103e2575f5ffd5b8063150b7a0211610294578063150b7a021461031b578063157305fe146103905780631626ba7e146103af575f5ffd5b806223de29146102b7578062427c54146102dd575f5ffd5b366102b357005b5f5ffd5b3480156102c2575f5ffd5b506102db6102d1366004612748565b5050505050505050565b005b3480156102e8575f5ffd5b506103086102f73660046127f7565b60086020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610326575f5ffd5b5061035f610335366004612812565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610312565b34801561039b575f5ffd5b506102db6103aa366004612956565b61094b565b3480156103ba575f5ffd5b5061035f6103c9366004612956565b610ac5565b3480156103d9575f5ffd5b50610308610c68565b3480156103ed575f5ffd5b506103086103fc3660046127f7565b60076020525f908152604090205481565b348015610418575f5ffd5b5061030861042736600461299a565b610c8c565b348015610437575f5ffd5b506102db6104463660046129e9565b610cc8565b348015610456575f5ffd5b5061030860035481565b34801561046b575f5ffd5b5061047f61047a366004612a46565b610eb7565b6040516103129190612a66565b348015610497575f5ffd5b506104ab6104a63660046127f7565b61100e565b6040519015158152602001610312565b6102db6104c9366004612aa8565b6110e0565b3480156104d9575f5ffd5b506103086104e83660046127f7565b73ffffffffffffffffffffffffffffffffffffffff165f9081526007602052604090205490565b34801561051a575f5ffd5b506103086105293660046127f7565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b34801561055b575f5ffd5b506102db61056a366004612afe565b611163565b34801561057a575f5ffd5b506103086105893660046127f7565b60096020525f908152604090205481565b3480156105a5575f5ffd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d8575f5ffd5b506005546105f99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610312565b348015610629575f5ffd5b50610308610638366004612aa8565b611251565b348015610648575f5ffd5b5061030860015481565b34801561065d575f5ffd5b506102db61066c366004612b15565b611305565b34801561067c575f5ffd5b5061030860045481565b348015610691575f5ffd5b505f54610308565b3480156106a4575f5ffd5b50730576a174d229e3cfa37253523e645a78a0c91b576105f9565b6103086106cd366004612b15565b611381565b3480156106dd575f5ffd5b5061035f6106ec366004612b90565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610724575f5ffd5b5061030860025481565b348015610739575f5ffd5b5061074d610748366004612c33565b61143c565b6040516103129190612cf1565b348015610765575f5ffd5b506103086107743660046127f7565b600c6020525f908152604090205481565b348015610790575f5ffd5b506105f961079f366004612afe565b600b6020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156107d1575f5ffd5b506107e56107e0366004612afe565b611526565b6040516103129190612d30565b3480156107fd575f5ffd5b506102db61080c366004612afe565b6115fb565b34801561081c575f5ffd5b50610308611727565b348015610830575f5ffd5b5061035f61083f366004612d6f565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b348015610875575f5ffd5b506103087f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b3480156108a8575f5ffd5b506103086108b7366004612a46565b611781565b3480156108c7575f5ffd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156108fa575f5ffd5b506105f96117a3565b34801561090e575f5ffd5b5061074d6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6109543361100e565b80610972575033730576a174d229e3cfa37253523e645a78a0c91b57145b610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084015b60405180910390fd5b60016006541115610a40576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff1615610ab1576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b610abb82826117c0565b5050600160065550565b5f5f5f5f610ae585602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610bfb5782858301602001610b068261100e565b158015610b29575073ffffffffffffffffffffffffffffffffffffffff82163014155b15610b5c57507fffffffff000000000000000000000000000000000000000000000000000000009450610c629350505050565b6040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690631626ba7e90610bb0908b908590600401612de6565b602060405180830381865afa158015610bcb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bef9190612dfe565b95505050505050610c62565b610c0a6104a6878386866119d5565b15610c3b57507f1626ba7e000000000000000000000000000000000000000000000000000000009250610c62915050565b507fffffffff00000000000000000000000000000000000000000000000000000000925050505b92915050565b5f5f610c726119f1565b806020019051810190610c859190612e3d565b9392505050565b5f610c95611ac0565b610c9f8484611b3f565b9050610cae6040850185612e69565b90505f03610cbf57610cbf84611c13565b610c8582611c91565b610cd13361100e565b80610cef575033730576a174d229e3cfa37253523e645a78a0c91b57145b610d7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60016006541115610db8576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff16610e0c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e1785856117c0565b805190915015610eab576005546040517f56d0819e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906356d0819e90610e7d908890859088908890600401612eca565b5f604051808303815f87803b158015610e94575f5ffd5b505af1158015610ea6573d5f5f3e3d5ffd5b505050505b50506001600655505050565b6002546060905f849003610ec9578093505b80610ed48486612f38565b1115610f2157610ee48385612f38565b6040517f7ae596850000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016109fa565b8315611007578367ffffffffffffffff811115610f4057610f40612880565b604051908082528060200260200182016040528015610f69578160200160208202803683370190505b505f808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e4549193505b84811015610fbc575f828152600a60205260409020600101549150600101610f99565b505f5b858110156110045781848281518110610fda57610fda612f4b565b6020908102919091018101919091525f838152600a90915260409020600101549150600101610fbf565b50505b5092915050565b5f5f5f6110196119f1565b80602001905181019061102c9190612e3d565b915091508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161108291815260200190565b602060405180830381865afa15801561109d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c19190612f78565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611153576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b61115e838383611d05565b505050565b61116c3361100e565b8061118a575033730576a174d229e3cfa37253523e645a78a0c91b57145b611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60018190556040518181527f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe09060200160405180910390a150565b5f61125a611727565b84848460405160200161126f93929190612f93565b604051602081830303815290604052805190602001206040516020016112c79291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b61130d6119f1565b5115611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064016109fa565b61137e81611ead565b50565b6005545f9073ffffffffffffffffffffffffffffffffffffffff16156113ef576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b335f818152600c602052604090205461140a91908490611251565b335f908152600c6020526040812080549293509061142783612fd1565b9190505550611437338383611d05565b919050565b60606114473361100e565b80611465575033730576a174d229e3cfa37253523e645a78a0c91b57145b6114f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b5f61150b878787878715611505578761201d565b5a61201d565b925090508061151c57815160208301fd5b5095945050505050565b5f818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff1615611437575f828152600a60205260408082208151808301928390529160029082845b81548152602001906001019080831161156d5750505050509050805f6002811061159957611599612f4b565b60200201511580156115ad57506020810151155b80156115e257505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548314155b156115f057600291506115f5565b600191505b50919050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461166e576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b5f818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16806116c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116d38183612120565b8073ffffffffffffffffffffffffffffffffffffffff167fa36a540c5fea3a5e69d4b1c2247b28a93fd183ef1314af26a8db7b3ae080bcd08360405161171b91815260200190565b60405180910390a25050565b5f7f0000000000000000000000000000000000000000000000000000000000000000461461175c57611757612273565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600a602052815f5260405f20816002811061179a575f80fd5b01549150829050565b5f5f6117ad6119f1565b806020019051810190610c629190612f78565b5f828152600b60205260408082205460055491517ff2e433bf0000000000000000000000000000000000000000000000000000000081526004810186905260609373ffffffffffffffffffffffffffffffffffffffff928316939092169063f2e433bf906024016080604051808303815f875af1158015611843573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118679190613008565b602081015190915073ffffffffffffffffffffffffffffffffffffffff1615611891575050610c62565b73ffffffffffffffffffffffffffffffffffffffff82166119275760055473ffffffffffffffffffffffffffffffffffffffff16156118d257806040015191505b73ffffffffffffffffffffffffffffffffffffffff8216611922576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018690526024016109fa565b611931565b6119318286612120565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260086020526040812080548695509161196483612fd1565b909155505060048054905f61197883612fd1565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f0cd979445339c62199996f208428d987b1cea24d18e62b79ec24d94b636e8b7086856040516119c5929190612de6565b60405180910390a2505092915050565b5f5f5f6119e487878787612371565b9150915061151c81612459565b6060611757611abb6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b61260b565b33730576a174d229e3cfa37253523e645a78a0c91b5714611b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016109fa565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81207f1626ba7e00000000000000000000000000000000000000000000000000000000611bd982611ba0610140880188612e69565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ac592505050565b7fffffffff000000000000000000000000000000000000000000000000000000001614611c0a576001915050610c62565b505f9392505050565b5f805460208301359180611c2683612fd1565b919050551461137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206e6f6e63650000000000000000000000000000000000000060448201526064016109fa565b801561137e576040515f9033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d805f8114611cf9576040519150601f19603f3d011682016040523d82523d5f602084013e611cfe565b606091505b5050505050565b611d10348284612660565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600760205260408120805491611d4083612fd1565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f908152600960205260408120805491611d7583612fd1565b90915550505f818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055600a9091528082207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e480546001830181905590859055808452918320849055600280547f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e394929392909190611e3c83612fd1565b909155505060038054905f611e5083612fd1565b91905055508573ffffffffffffffffffffffffffffffffffffffff167f4bda649efe6b98b0f9c1d5e859c29e20910f45c66dabfe6fad4a4881f7faf9cc8587604051611e9d929190612de6565b60405180910390a2505050505050565b5f611eb7826126aa565b90505f8151602083015ff09050611f896040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461115e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5772697465206661696c6564000000000000000000000000000000000000000060448201526064016109fa565b5f6060600184600181111561203457612034612d03565b036120a8578673ffffffffffffffffffffffffffffffffffffffff16838660405161205f91906130ac565b5f604051808303818686f4925050503d805f8114612098576040519150601f19603f3d011682016040523d82523d5f602084013e61209d565b606091505b509092509050612116565b8673ffffffffffffffffffffffffffffffffffffffff168387876040516120cf91906130ac565b5f60405180830381858888f193505050503d805f811461210a576040519150601f19603f3d011682016040523d82523d5f602084013e61210f565b606091505b5090925090505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600960205260408120805491612150836130b7565b909155505060028054905f612164836130b7565b90915550505f818152600a60205260408082208151808301928390529160029082845b8154815260200190600101908083116121875750505050509050805f600281106121b3576121b3612f4b565b60200201511580156121c757506020810151155b80156121fc57505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548214155b15612236576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018390526024016109fa565b6020818101805183515f908152600a9093526040808420600190810192909255935191518352838320919091559281529081208181559091015550565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d0935256040518060400160405280600581526020017f312e312e300000000000000000000000000000000000000000000000000000008152506040516020016122fc9190612cf1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156123a657505f90506003612450565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156123f7573d5f5f3e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661244a575f60019250925050612450565b91505f90505b94509492505050565b5f81600481111561246c5761246c612d03565b036124745750565b600181600481111561248857612488612d03565b036124ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109fa565b600281600481111561250357612503612d03565b0361256a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109fa565b600381600481111561257e5761257e612d03565b0361137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016109fa565b6060813b6001811161262c57505060408051602081019091525f8152919050565b80612636816130b7565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b60015483101561115e576001546040517fb48978280000000000000000000000000000000000000000000000000000000081526109fa918591600401918252602082015260400190565b6060815160016126ba9190612f38565b826040516020016126cc9291906130eb565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461137e575f5ffd5b5f5f83601f840112612713575f5ffd5b50813567ffffffffffffffff81111561272a575f5ffd5b602083019150836020828501011115612741575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b03121561275f575f5ffd5b883561276a816126e2565b9750602089013561277a816126e2565b9650604089013561278a816126e2565b955060608901359450608089013567ffffffffffffffff8111156127ac575f5ffd5b6127b88b828c01612703565b90955093505060a089013567ffffffffffffffff8111156127d7575f5ffd5b6127e38b828c01612703565b999c989b5096995094979396929594505050565b5f60208284031215612807575f5ffd5b8135610c85816126e2565b5f5f5f5f5f60808688031215612826575f5ffd5b8535612831816126e2565b94506020860135612841816126e2565b935060408601359250606086013567ffffffffffffffff811115612863575f5ffd5b61286f88828901612703565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f8301126128bc575f5ffd5b813567ffffffffffffffff8111156128d6576128d6612880565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561292357612923612880565b60405281815283820160200185101561293a575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612967575f5ffd5b82359150602083013567ffffffffffffffff811115612984575f5ffd5b612990858286016128ad565b9150509250929050565b5f5f5f606084860312156129ac575f5ffd5b833567ffffffffffffffff8111156129c2575f5ffd5b840161016081870312156129d4575f5ffd5b95602085013595506040909401359392505050565b5f5f5f5f608085870312156129fc575f5ffd5b84359350602085013567ffffffffffffffff811115612a19575f5ffd5b612a25878288016128ad565b9350506040850135612a36816126e2565b9396929550929360600135925050565b5f5f60408385031215612a57575f5ffd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b81811015612a9d578351835260209384019390920191600101612a7f565b509095945050505050565b5f5f5f60608486031215612aba575f5ffd5b8335612ac5816126e2565b9250602084013567ffffffffffffffff811115612ae0575f5ffd5b612aec868287016128ad565b93969395505050506040919091013590565b5f60208284031215612b0e575f5ffd5b5035919050565b5f60208284031215612b25575f5ffd5b813567ffffffffffffffff811115612b3b575f5ffd5b612b47848285016128ad565b949350505050565b5f5f83601f840112612b5f575f5ffd5b50813567ffffffffffffffff811115612b76575f5ffd5b6020830191508360208260051b8501011115612741575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612ba7575f5ffd5b8835612bb2816126e2565b97506020890135612bc2816126e2565b9650604089013567ffffffffffffffff811115612bdd575f5ffd5b612be98b828c01612b4f565b909750955050606089013567ffffffffffffffff811115612c08575f5ffd5b612c148b828c01612b4f565b909550935050608089013567ffffffffffffffff8111156127d7575f5ffd5b5f5f5f5f5f60a08688031215612c47575f5ffd5b8535612c52816126e2565b945060208601359350604086013567ffffffffffffffff811115612c74575f5ffd5b612c80888289016128ad565b935050606086013560028110612c94575f5ffd5b949793965091946080013592915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610c856020830184612ca5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020810160038310612d69577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f5f5f5f5f5f60a08789031215612d84575f5ffd5b8635612d8f816126e2565b95506020870135612d9f816126e2565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dc8575f5ffd5b612dd489828a01612703565b979a9699509497509295939492505050565b828152604060208201525f612b476040830184612ca5565b5f60208284031215612e0e575f5ffd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c85575f5ffd5b5f5f60408385031215612e4e575f5ffd5b8251612e59816126e2565b6020939093015192949293505050565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e9c575f5ffd5b83018035915067ffffffffffffffff821115612eb6575f5ffd5b602001915036819003821315612741575f5ffd5b848152608060208201525f612ee26080830186612ca5565b73ffffffffffffffffffffffffffffffffffffffff949094166040830152506060015292915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610c6257610c62612f0b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612f88575f5ffd5b8151610c85816126e2565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f612fc16060830185612ca5565b9050826040830152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361300157613001612f0b565b5060010190565b5f6080828403128015613019575f5ffd5b506040516080810167ffffffffffffffff8111828210171561303d5761303d612880565b604052825161304b816126e2565b8152602083015161305b816126e2565b6020820152604083015161306e816126e2565b6040820152606083015163ffffffff81168114613089575f5ffd5b60608201529392505050565b5f81518060208401855e5f93019283525090919050565b5f610c858284613095565b5f816130c5576130c5612f0b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201525f600e8201525f612b47600f83018461309556fea2646970667358221220704524f95757c94019cddad03ecfec4f1e3e0d509ed6ce5bc971e103a7b7c95664736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/contracts/AgentFactory.sol b/contracts/AgentFactory.sol index 3c3b6b5..b69cef3 100644 --- a/contracts/AgentFactory.sol +++ b/contracts/AgentFactory.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.27; +pragma solidity ^0.8.28; import {AgentMech} from "./AgentMech.sol"; import {GenericManager} from "../lib/autonolas-registries/contracts/GenericManager.sol"; diff --git a/contracts/AgentMech.sol b/contracts/AgentMech.sol index a62632b..f510d76 100644 --- a/contracts/AgentMech.sol +++ b/contracts/AgentMech.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.27; +pragma solidity ^0.8.28; import {ERC721Mech} from "../lib/gnosis-mech/contracts/ERC721Mech.sol"; diff --git a/hardhat.config.js b/hardhat.config.js index 174e3d6..ca1b65f 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -233,7 +233,7 @@ module.exports = { solidity: { compilers: [ { - version: "0.8.27", + version: "0.8.28", settings: { optimizer: { enabled: true,