From 7705097d5b9b49f49468e205805dca864add1693 Mon Sep 17 00:00:00 2001 From: vishal Date: Sun, 6 Aug 2023 20:46:42 +0530 Subject: [PATCH] Eip1559 WIP --- subgraph/tests/deploy_orderbook.rs | 2 +- .../utils/deploy/touch_deployer/data.json | 3 + .../tests/utils/deploy/touch_deployer/mod.rs | 84 +++++-------------- 3 files changed, 25 insertions(+), 64 deletions(-) create mode 100644 subgraph/tests/utils/deploy/touch_deployer/data.json diff --git a/subgraph/tests/deploy_orderbook.rs b/subgraph/tests/deploy_orderbook.rs index aaf8aef35..50f63faa1 100644 --- a/subgraph/tests/deploy_orderbook.rs +++ b/subgraph/tests/deploy_orderbook.rs @@ -1,6 +1,6 @@ use utils::{ deploy::{deploy1820::deploy1820, deploy_orderbook::deploy_orderbook}, - utils::{deploy_anvil_and_docker, stop_docker}, + utils::deploy_anvil_and_docker, }; mod utils; diff --git a/subgraph/tests/utils/deploy/touch_deployer/data.json b/subgraph/tests/utils/deploy/touch_deployer/data.json new file mode 100644 index 000000000..333fe496c --- /dev/null +++ b/subgraph/tests/utils/deploy/touch_deployer/data.json @@ -0,0 +1,3 @@ +{ + "data": "0x60c06040523480156200001157600080fd5b5060405162005cee38038062005cee833981016040819052620000349162000453565b6000816000015190506000816001600160a01b031663f933c72f6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200007e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620000a8919081019062000504565b90506040518060c00160405280609c815260200162005c52609c913980519060200120818051906020012014620000ff5780604051634c1af20160e11b8152600401620000f6919062000572565b60405180910390fd5b813f7fba4c010b1990025e29241b302df5601101dbe9df778b00f1e865071f3aa32f1581146200014657604051630eec293f60e11b815260048101829052602401620000f6565b6020840151803f7fc99f290f9f20034372f82bccd8912519fce161e748ecca195fb077ec2d03b81c8114620001925760405163cc0415fd60e01b815260048101829052602401620000f6565b604086015180516020909101207fe4c000f3728f30e612b34e401529ce5266061cc1233dc54a6a89524929571d8f8114620001e4576040516343d0fe5760e11b815260048101829052602401620000f6565b6001600160a01b03808716608052831660a052865160208801516040808a015190517f1788931a083e1bfada6cb062b5426ea97c7866b814b4d1173909e4018f2122f1936200023793339330936200058e565b60405180910390a1604080518082018252601581527f4945787072657373696f6e4465706c6f79657256310000000000000000000000602082015290516365ba36c160e01b8152731820a4b7618bde71dce8cdc73aab6c95905fad24916329965a1d91309184916365ba36c191620002b29160040162000572565b602060405180830381865afa158015620002d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f69190620005d7565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152306044820152606401600060405180830381600087803b1580156200034357600080fd5b505af115801562000358573d6000803e3d6000fd5b5050505050505050505050620005f1565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200039757600080fd5b919050565b60005b83811015620003b95781810151838201526020016200039f565b50506000910152565b600082601f830112620003d457600080fd5b81516001600160401b0380821115620003f157620003f162000369565b604051601f8301601f19908116603f011681019082821181831017156200041c576200041c62000369565b816040528381528660208588010111156200043657600080fd5b620004498460208301602089016200039c565b9695505050505050565b6000602082840312156200046657600080fd5b81516001600160401b03808211156200047e57600080fd5b90830190606082860312156200049357600080fd5b604051606081018181108382111715620004b157620004b162000369565b604052620004bf836200037f565b8152620004cf602084016200037f565b6020820152604083015182811115620004e757600080fd5b620004f587828601620003c2565b60408301525095945050505050565b6000602082840312156200051757600080fd5b81516001600160401b038111156200052e57600080fd5b6200053c84828501620003c2565b949350505050565b600081518084526200055e8160208601602086016200039c565b601f01601f19169290920160200192915050565b60208152600062000587602083018462000544565b9392505050565b6001600160a01b038681168252858116602083015284811660408301528316606082015260a060808201819052600090620005cc9083018462000544565b979650505050505050565b600060208284031215620005ea57600080fd5b5051919050565b60805160a05161562062000632600039600081816101500152818161039b015261051701526000818160990152818161037901526104db01526156206000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635511cb67116100505780635511cb67146100e05780635563754c1461012a578063975057e71461014b57600080fd5b806301ffc9a71461006c5780633a35cf1714610094575b600080fd5b61007f61007a366004614912565b610172565b60405190151581526020015b60405180910390f35b6100bb7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b6100f36100ee366004614b63565b61020b565b6040805173ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292169181019190915260600161008b565b61013d610138366004614c82565b6103c9565b60405161008b929190614d8e565b6100bb7f000000000000000000000000000000000000000000000000000000000000000081565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5511cb6700000000000000000000000000000000000000000000000000000000148061020557507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60008060008061021c8787876105d4565b90507ff66a0c19428b142e06d7aa23d5f18b9b9ff08408fefcdfb8bb27cb34929f7786338888886040516102539493929190614e56565b60405180910390a16000806102f261026b8a8a6106e3565b60408051602c83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019091527effff0000000000000000000000000000000000000000000000000000000000600190920160e81b919091167f61000080600c6000396000f3000000000000000000000000000000000000000017815290600d820190565b9150915061031b818a8a866040518060c00160405280609c8152602001615584609c9139610721565b6000610326836107a9565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507fce6e4a4a7b561c65155990775d2faf8a581292f97859ce67e366fd53686b31f1910160405180910390a17f00000000000000000000000000000000000000000000000000000000000000009a7f00000000000000000000000000000000000000000000000000000000000000009a509098509650505050505050565b60608060006103e08a8a6103db610817565b610826565b90506000816040015190506103f782828851610939565b905061040582888388610995565b506060600061042584608001518560400151610abe90919063ffffffff16565b905060005b8d518110156104805761046e8e828151811061044857610448614eab565b60200260200101516040518060c00160405280609c8152602001615584609c9139610ac7565b8061047881614f09565b91505061042a565b508067ffffffffffffffff81111561049a5761049a614954565b6040519080825280602002602001820160405280156104c3578160200160208202803683370190505b5091506104d860208901602084018a51610b28565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663adea61287f00000000000000000000000000000000000000000000000000000000000000008c8f8f8e878f6040518863ffffffff1660e01b815260040161055e9796959493929190614f41565b600060405180830381865afa15801561057b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526105c191908101906150b1565b9450945050505097509795505050505050565b600083518251111561062457815184516040517f7d2d70db000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044015b60405180910390fd5b600061063385856103db610817565b604081015160608201519192509060005b85518161ffff1610156106c55760408401839052606084018290526106b2848261068f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615144565b898561ffff16815181106106a5576106a5614eab565b6020026020010151610995565b50806106bd81615158565b915050610644565b506080830151604084015160209103045b93505050505b9392505050565b60008251825160020181016020029150602084016020820281015b8082101561071857815151840193506020820191506106fe565b50505092915050565b81855260208501945082835160200260200184015b80821015610751578151875260209687019690910190610736565b5050835160208581019181028601015b808210156107a0578151805180895260209889019882016107828387610ac7565b61078d818b84610b50565b818a019950505050602082019150610761565b50505050505050565b6000806000600d9050835160e81c61ffff168101846000f0915073ffffffffffffffffffffffffffffffffffffffff8216610810576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5092915050565b6060610821610bb5565b905090565b61085f6040518060c001604052806060815260200160008152602001600081526020016000815260200160008152602001606081525090565b6040805160c081018252858152845160208201529081016108a160027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615144565b81526020016108f96108d460027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615144565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00190565b815260200161092960027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615144565b8152602001929092525092915050565b6000602082028301925060018211156109835761097d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08401606086015190610e5d565b60608501525b61098d8484610e73565b509092915050565b600060027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04856040015110156109f8576040517f271592cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845160208581029091010151805181015b80821015610a6357600080600484019350835161ffff8116915061ffff8160101c16925050610a5a8982898c60a001518681518110610a4a57610a4a614eab565b602002602001015163ffffffff16565b96505050610a09565b604087015160209086030480851115610ab2576040517ff993c6e7000000000000000000000000000000000000000000000000000000008152600481018690526024810182905260440161061b565b50939695505050505050565b60209190030490565b6002810160028301835184015b80821015610b2157815161ffff811660020284015161ffff16807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000083161784525050600482019150610ad4565b5050505050565b8060200283015b80841015610b4a578351835260209384019390920191610b2f565b50505050565b6020810680820384015b80851015610b75578451845260209485019490930192610b5a565b508015610b4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600882021c8084511681198651161784525050505050565b60606000604051806109e00160405280610bcd604e90565b67ffffffffffffffff1667ffffffffffffffff168152602001610e8b8152602001610ef88152602001610f5b8152602001610f7b8152602001610f8a8152602001610f8a8152602001610f968152602001610faf815260200161101a81526020016110af8152602001611114815260200161118f815260200161122681526020016112fe815260200161130e815260200161131d815260200161132d815260200161133c815260200161134b815260200161135a8152602001611369815260200161132d8152602001611378815260200161138781526020016113938152602001610f8a8152602001610f8a81526020016113a281526020016113b281526020016113c281526020016113d281526020016113e281526020016113f281526020016114028152602001611412815260200161142281526020016114318152602001611440815260200161144f8152602001611460815260200161147d815260200161144f815260200161148c815260200161149b81526020016114aa81526020016114b981526020016114c881526020016114d781526020016114e681526020016114f581526020016115048152602001611513815260200161152281526020016115318152602001611540815260200161154f815260200161155e815260200161156d815260200161157c815260200161158b815260200161159a81526020016115a981526020016115b981526020016115c981526020016115d981526020016115e881526020016115f781526020016116068152602001611615815260200161162481526020016116338152602001610f968152602001611642815260200161165281526020016116628152602001611672815260200161168181526020016116d581525090508091505090565b6000818311610e6c57816106dc565b5090919050565b8160800151811115610e8757608082018190525b5050565b600060ff600884901c81169084166101008183011115610ee1576040517f2ccabbc2000000000000000000000000000000000000000000000000000000008152600481018390526024810182905260440161061b565b610eee86856116e461171a565b9695505050505050565b600060ff600884901c81169084166101008183011115610f4e576040517f2ccabbc2000000000000000000000000000000000000000000000000000000008152600481018390526024810182905260440161061b565b610eee8685611730611774565b6000610f73610f6a8584611785565b85906008610939565b949350505050565b6000610f7384836117b9611774565b6000610f7384836117c5565b6000614908610fa685848361171a565b95945050505050565b6000600f8316600784811c16600d85901c808201610f00600888901b167e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0600989901c161781176110008988866117d4565b965061100d89828961101a565b9998505050505050505050565b60408301516060840151600091600f85811692600487901c90911691600887901c916110478988876117e8565b60408a01527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0870160608a015261108089848987610995565b50606089018190526040890151611099908a9086610939565b6040999099019190915250959695505050505050565b600060ff8316600f81106110f2576040517f316e6a370000000000000000000000000000000000000000000000000000000081526004810182905260240161061b565b60018101600481901b85176106d661110b88838861101a565b88906001611802565b6020830151600090601f84811691600586901c90911690600a86901c9081106111795760208701516040517f890a8e6a00000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260440161061b565b6106d66111878887866117e8565b889084610939565b6000600c83901c600f80851690600486901c16818110156111e6576040517f508a8d2f000000000000000000000000000000000000000000000000000000008152600481018390526024810182905260440161061b565b6060870151610fff87169060005b858110156112185760608a0182905261120e8a848a61101a565b97506001016111f4565b509598975050505050505050565b600060018381169084901c816112a7576040860151602090850304808210611284576040517f1cb73c16000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161061b565b6040870151606088015161129c916020850201610e5d565b6060880152506112f4565b856020015181106112f45760208601516040517f890a8e6a00000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260440161061b565b610eee86856117c5565b6000610f73848361180f8661185e565b6000610f73848361186e611908565b6000610f738483611919866119d3565b6000610f7384836119f1611774565b6000610f738483611a8661171a565b6000610f738483611af7611908565b6000610f738483611b56611774565b6000610f738483611bac61171a565b6000610f738483611c39611774565b6000610f738483611785565b6000610f738483611ce861171a565b6000610f738483611d028661185e565b6000610f738483611d0e8661185e565b6000610f738483611d1a8661185e565b6000610f738483610e5d8661185e565b6000610f738483611d268661185e565b6000610f738483611d358661185e565b6000610f738483611d418661185e565b6000610f738483611d4d8661185e565b6000610f738483611d5961171a565b6000610f738483611d6d611774565b6000610f738483611d7d61171a565b6000614908610fa68584838761185e565b6000610f7382611d91611474866001615179565b879291906119d3565b6000610f738483611da1611774565b6000610f738483611da5611774565b6000610f738483611da961171a565b6000610f738483611dad611774565b6000610f738483611db1611774565b6000610f738483611dbd61171a565b6000610f738483611dc8611774565b6000610f738483611dd461171a565b6000610f738483611ddf61171a565b6000610f738483611dea61171a565b6000610f738483611e0261171a565b6000610f738483611e14611774565b6000610f738483611e2061171a565b6000610f738483611e2b61171a565b6000610f738483611e3661171a565b6000610f738483611e4161171a565b6000610f738483611e4c611774565b6000610f738483611e58611774565b6000610f738483611e64611774565b6000610f738483611e7061171a565b6000610f738483611e7b8661185e565b6000610f738483611eb68661185e565b6000610f738483611ee78661185e565b6000610f738483611efd611fbf565b6000610f738483611fd061171a565b6000610f73848361201d61171a565b6000610f73848361206a61171a565b6000610f7384836120ec61171a565b6000610f73848361213961171a565b6000610f738483612186611908565b6000614908610fa68584836121e5565b6000610f7384836121f38661224a565b6000610f73848361225d866122f7565b6000610f73848361230a611774565b600060ff83168082036116c0576040517f904c1f6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fa66116ce8685846117e8565b86906117c5565b6000610f738483612369611774565b60ff80831660020a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160089390931c161c1690565b6000610f736117298585611785565b85906117c5565b60ff83811660020a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192831660089490941c1692831b9190921b19919091161790565b6000610f73611729858560026117e8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00160006117b38383612381565b50919050565b60006106dc83836123e1565b60200160006117b38383610e73565b6000602082028301925061098d8484610e73565b6000811561098d57602082028303925061098d8484612381565b6000602082028303610f73565b600081604051602001611822919061518c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b6000610fa66116ce8686856117e8565b6040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390526000919085169062fdd58e906044015b602060405180830381865afa1580156118e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7391906151c2565b6000610f73611729858560036117e8565b6040517f4e1273f400000000000000000000000000000000000000000000000000000000815260609073ffffffffffffffffffffffffffffffffffffffff851690634e1273f49061197090869086906004016151db565b600060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610f73919081019061523e565b6000610fa66119e98686600160028702016117e8565b869084610939565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152600091908416906370a08231906024015b602060405180830381865afa158015611a62573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dc91906151c2565b60008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020591906151c2565b6040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905260009190851690634ee2cd7e906044016118c7565b6040517f981b24d00000000000000000000000000000000000000000000000000000000081526004810182905260009073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401611a45565b60008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1d9190615273565b73ffffffffffffffffffffffffffffffffffffffff1692915050565b6040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810182905260009073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccb9190615273565b73ffffffffffffffffffffffffffffffffffffffff169392505050565b73ffffffffffffffffffffffffffffffffffffffff163190565b60006106dc8284615179565b60006106dc8284615144565b60006106dc82846153c9565b6000818310610e6c57816106dc565b60006106dc82846153d5565b60006106dc82846153e9565b60006106dc8284615400565b60006106dc82600285901c60038616612569565b6000610f73828460038716612569565b60006106dc82600285901c600386166125ee565b60606000841161098d5781610f73565b1490565b1090565b1590565b1190565b60006106dc8383612650565b600061020582612663565b60006106dc83836126db565b6000610205826126f6565b60006102058261275f565b6000670de0b6b3a76400008206801515028203610205565b6000670de0b6b3a76400008206610205565b60006106dc83836127ce565b60006102058261284e565b600061020582612871565b6000610205826128a2565b60006102058261372e565b60006106dc8383613893565b60006106dc83836138a2565b60006106dc83836139af565b600061020582613a0f565b6000828201838110611e8d5780610f73565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082600003611ec857506000610205565b82820282848281611edb57611edb615115565b0403611e8d5780610f73565b6000818311611ef75760006106dc565b50900390565b6040517fd97b2e4800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152604482018390526000919086169063d97b2e4890606401602060405180830381865afa158015611f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa091906151c2565b73ffffffffffffffffffffffffffffffffffffffff1695945050505050565b6000610f73611729858560046117e8565b60008173ffffffffffffffffffffffffffffffffffffffff1663ec14b06e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663cd3293de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bf9573d6000803e3d6000fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120db9190615413565b600381111561020557610205615434565b60008173ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bf9573d6000803e3d6000fd5b60008173ffffffffffffffffffffffffffffffffffffffff166347e4bbb96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b6040517fdb8554fc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390526000919085169063db8554fc906044016118c7565b6000610f73848460026117e8565b6040517f88d6860400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906118c79086908690600401615463565b6000610fa66116ce8686600286016117e8565b6040517fcaa0eb3b00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906122b690879087908790600401615492565b602060405180830381865afa1580156122d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa691906151c2565b6000610fa66116ce8686600386016117e8565b60008060015b600881116123615760006123248683613a7e565b905060006123328684613a7e565b905060006123408383611ee7565b9050612350856001860383613b2e565b945050600190920191506123109050565b509392505050565b6000610f738385600f16600487901c600f1685613bb8565b81606001518111610e875760608201516040830151602091030460408301516020908303046040517f625e32e40000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161061b565b60008060008473ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015612431573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245591906154e1565b5093505092505060008213612499576040517f3351e26f0000000000000000000000000000000000000000000000000000000081526004810183905260240161061b565b836124a48242615400565b11156124e6576040517f2730eb48000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260440161061b565b610fa68573ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125589190615531565b60ff16600161256685613c5e565b91905b6000826012111561259e57601283900360028316156125945761258c8582613cce565b9150506106dc565b61258c8582613d54565b60128311156125e7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee830160018316156125dd5761258c8582613d8c565b61258c8582613dda565b50826106dc565b6000826012111561261157601283900360018316156125dd5761258c8582613d8c565b60128311156125e7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee830160028316156125945761258c8582613cce565b6000828280821681831860011c01610fa6565b6000817ffffffffffffffffffffffffffffffffffffffffffffffffff7e52fe5afe400008111156126c3576040517f6149f6b90000000000000000000000000000000000000000000000000000000081526004810184905260240161061b565b5050670de0b6b3a76400008082068015159103020190565b60006106dc6126f384670de0b6b3a764000085613dfd565b90565b600081680736ea4425c11ac63081111561273f576040517f1af63aca0000000000000000000000000000000000000000000000000000000081526004810184905260240161061b565b6714057b7ef767814f8102610f7361275f670de0b6b3a7640000835b0490565b600081680a688906bd8affffff8111156127a8576040517fb3b6ba1f0000000000000000000000000000000000000000000000000000000081526004810184905260240161061b565b60006127c0670de0b6b3a7640000604084901b615144565b9050610f736126f382613f08565b600082828115806127dd575080155b156127ed57600092505050610205565b8181028183828161280057612800615115565b0414612842576040517fae7f3b37000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260440161061b565b610eee6126f38261467c565b6000610205826ec097ce7bc90715b34b9f10000000008161275b5761275b615115565b60006102056714057b7ef767814f670de0b6b3a76400006128946126f38661372e565b028161275b5761275b615115565b600081670de0b6b3a76400008110156128ea576040517f36d32ef00000000000000000000000000000000000000000000000000000000081526004810184905260240161061b565b826001811461303b57600a8114613063576064811461308b576103e881146130b35761271081146130db57620186a0811461310357620f4240811461312b57629896808114613153576305f5e100811461317b57633b9aca0081146131a3576402540be40081146131cb5764174876e80081146131f35764e8d4a51000811461321b576509184e72a000811461324357655af3107a4000811461326b5766038d7ea4c68000811461329357662386f26fc1000081146132bb5767016345785d8a000081146132e357670de0b6b3a7640000811461330b57678ac7230489e8000081146133145768056bc75e2d63100000811461332457683635c9adc5dea0000081146133345769021e19e0c9bab240000081146133445769152d02c7e14af680000081146133545769d3c21bcecceda10000008114613364576a084595161401484a0000008114613374576a52b7d2dcc80cd2e40000008114613384576b033b2e3c9fd0803ce80000008114613394576b204fce5e3e2502611000000081146133a4576c01431e0fae6d7217caa000000081146133b4576c0c9f2c9cd04674edea4000000081146133c4576c7e37be2022c0914b268000000081146133d4576d04ee2d6d415b85acef810000000081146133e4576d314dc6448d9338c15b0a0000000081146133f4576e01ed09bead87c0378d8e64000000008114613404576e13426172c74d822b878fe8000000008114613414576ec097ce7bc90715b34b9f10000000008114613424576f0785ee10d5da46d900f436a0000000008114613434576f4b3b4ca85a86c47a098a2240000000008114613445577002f050fe938943acc45f65568000000000811461345657701d6329f1c35ca4bfabb9f5610000000000811461346757710125dfa371a19e6f7cb54395ca0000000000811461347857710b7abc627050305adf14a3d9e400000000008114613489577172cb5bd86321e38cb6ce6682e80000000000811461349a5772047bf19673df52e37f2410011d10000000000081146134ab57722cd76fe086b93ce2f768a00b22a0000000000081146134bc577301c06a5ec5433c60ddaa16406f5a40000000000081146134cd5773118427b3b4a05bc8a8a4de84598680000000000081146134de5773af298d050e4395d69670b12b7f4100000000000081146134ef577406d79f82328ea3da61e066ebb2f88a00000000000081146135005774446c3b15f9926687d2c40534fdb5640000000000008114613511577502ac3a4edbbfb8014e3ba83411e915e8000000000000811461352257751aba4714957d300d0e549208b31adb1000000000000081146135335776010b46c6cdd6e3e0828f4db456ff0c8ea0000000000000811461354457760a70c3c40a64e6c51999090b65f67d9240000000000000811461355557766867a5a867f103b2fffa5a71fba0e7b6800000000000008114613566577704140c78940f6a24fdffc78873d4490d21000000000000008114613577577728c87cb5c89a2571ebfdcb54864ada834a00000000000000811461358857780197d4df19d605767337e9f14d3eec8920e400000000000000811461359957780fee50b7025c36a0802f236d04753d5b48e80000000000000081146135aa57789f4f2726179a224501d762422c946590d9100000000000000081146135bb5779063917877cec0556b21269d695bdcbf7a87aa00000000000000081146135cc57793e3aeb4ae1383562f4b82261d969f7ac94ca400000000000000081146135dd577a026e4d30eccc3215dd8f3157d27e23acbdcfe6800000000000000081146135ee577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000081146135ff577af316271c7fc3908a8bef464e3945ef7a25360a00000000000000008114613610577b097edd871cfda3a5697758bf0e3cbb5ac5741c6400000000000000008114613621577b5ef4a74721e864761ea977768e5f518bb6891be800000000000000008114613632577c03b58e88c75313ec9d329eaaa18fb92f75215b171000000000000000008114613643577c25179157c93ec73e23fa32aa4f9d3bda934d8ee6a000000000000000008114613654577d0172ebad6ddc73c86d67c5faa71c245689c10795024000000000000000008114613665577d0e7d34c64a9c85d4460dbbca87196b61618a4bd2168000000000000000008114613676577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e10000000000000000008114613687577e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca0000000000000000008114613698577e3899162693736ac531a5a58f1fbb4b746504382ca7e400000000000000000081146136a9577f0235fadd81c2822bb3f07877973d50f28bf22a31be8ee800000000000000000081146136ba577f161bcca7119915b50764b4abe86529797775a5f171951000000000000000000081146136cb577fdd15fe86affad91249ef0eb713f39ebeaa987b6e6fd2a000000000000000000081146136dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92506136e9565b7fffffffffffffffffffffffffffffffffffffffffffffffff0633275e3af8000092506136e9565b7fffffffffffffffffffffffffffffffffffffffffffffffff1413de11e25c000092506136e9565b7fffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c0000092506136e9565b7fffffffffffffffffffffffffffffffffffffffffffffffff2fd54b793124000092506136e9565b7fffffffffffffffffffffffffffffffffffffffffffffffff3db6022cd888000092506136e9565b7fffffffffffffffffffffffffffffffffffffffffffffffff4b96b8e07fec000092506136e9565b7fffffffffffffffffffffffffffffffffffffffffffffffff59776f942750000092506136e9565b7fffffffffffffffffffffffffffffffffffffffffffffffff67582647ceb4000092506136e9565b7fffffffffffffffffffffffffffffffffffffffffffffffff7538dcfb7618000092506136e9565b7fffffffffffffffffffffffffffffffffffffffffffffffff831993af1d7c000092506136e9565b7fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000092506136e9565b7fffffffffffffffffffffffffffffffffffffffffffffffff9edb01166c44000092506136e9565b7fffffffffffffffffffffffffffffffffffffffffffffffffacbbb7ca13a8000092506136e9565b7fffffffffffffffffffffffffffffffffffffffffffffffffba9c6e7dbb0c000092506136e9565b7fffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000092506136e9565b7fffffffffffffffffffffffffffffffffffffffffffffffffd65ddbe509d4000092506136e9565b7fffffffffffffffffffffffffffffffffffffffffffffffffe43e9298b138000092506136e9565b7ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000092506136e9565b600092506136e9565b670de0b6b3a764000092506136e9565b671bc16d674ec8000092506136e9565b6729a2241af62c000092506136e9565b673782dace9d90000092506136e9565b674563918244f4000092506136e9565b6753444835ec58000092506136e9565b676124fee993bc000092506136e9565b676f05b59d3b20000092506136e9565b677ce66c50e284000092506136e9565b678ac7230489e8000092506136e9565b6798a7d9b8314c000092506136e9565b67a688906bd8b0000092506136e9565b67b469471f8014000092506136e9565b67c249fdd32778000092506136e9565b67d02ab486cedc000092506136e9565b67de0b6b3a7640000092506136e9565b67ebec21ee1da4000092506136e9565b67f9ccd8a1c508000092506136e9565b680107ad8f556c6c000092506136e9565b6801158e460913d0000092506136e9565b6801236efcbcbb34000092506136e9565b6801314fb3706298000092506136e9565b68013f306a2409fc000092506136e9565b68014d1120d7b160000092506136e9565b68015af1d78b58c4000092506136e9565b680168d28e3f0028000092506136e9565b680176b344f2a78c000092506136e9565b68018493fba64ef0000092506136e9565b68019274b259f654000092506136e9565b6801a055690d9db8000092506136e9565b6801ae361fc1451c000092506136e9565b6801bc16d674ec80000092506136e9565b6801c9f78d2893e4000092506136e9565b6801d7d843dc3b48000092506136e9565b6801e5b8fa8fe2ac000092506136e9565b6801f399b1438a10000092506136e9565b6802017a67f73174000092506136e9565b68020f5b1eaad8d8000092506136e9565b68021d3bd55e803c000092506136e9565b68022b1c8c1227a0000092506136e9565b680238fd42c5cf04000092506136e9565b680246ddf9797668000092506136e9565b680254beb02d1dcc000092506136e9565b6802629f66e0c530000092506136e9565b680270801d946c94000092506136e9565b68027e60d44813f8000092506136e9565b68028c418afbbb5c000092506136e9565b68029a2241af62c0000092506136e9565b6802a802f8630a24000092506136e9565b6802b5e3af16b188000092506136e9565b6802c3c465ca58ec000092506136e9565b6802d1a51c7e0050000092506136e9565b6802df85d331a7b4000092506136e9565b6802ed6689e54f18000092506136e9565b6802fb474098f67c000092506136e9565b68030927f74c9de0000092506136e9565b68031708ae004544000092506136e9565b680324e964b3eca8000092506136e9565b680332ca1b67940c000092505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036117b3576106dc672e19dc008126bf2b670de0b6b3a76400006128946126f3875b600081670de0b6b3a7640000811015613776576040517f36d32ef00000000000000000000000000000000000000000000000000000000081526004810184905260240161061b565b6000613802670de0b6b3a7640000830460016fffffffffffffffffffffffffffffffff821160071b91821c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211871b91821c969096119490961792909217171791909117919091171790565b9050670de0b6b3a7640000810282821c7ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000081016138425750949350505050565b671bc16d674ec800006706f05b59d3b200005b801561388557670de0b6b3a764000083800204925081831061387d579283019260019290921c915b60011c613855565b50825b979650505050505050565b60006106dc6126f38484614801565b600082828183036138cd5780156138ba5760006138c4565b670de0b6b3a76400005b92505050610205565b670de0b6b3a764000082036138ee57670de0b6b3a764000092505050610205565b8060000361390857670de0b6b3a764000092505050610205565b670de0b6b3a76400008103613921578492505050610205565b670de0b6b3a764000082111561394d5761394661275f6139408761372e565b86613893565b92506139a7565b600061396b6126f3846ec097ce7bc90715b34b9f1000000000615144565b9050600061398461275f61397e8461372e565b88613893565b90506139a26126f3826ec097ce7bc90715b34b9f1000000000615144565b945050505b505092915050565b60008281600184166139c957670de0b6b3a76400006139cb565b815b9050600184901c93505b8315613a09576139e58283614801565b915060018416156139fd576139fa8183614801565b90505b600184901c93506139d5565b80610fa6565b6000817812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f21811115613a68576040517fedc236ad0000000000000000000000000000000000000000000000000000000081526004810184905260240161061b565b6106dc6126f3670de0b6b3a7640000830261467c565b6000816008811115613aec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161061b565b82600003613afd5760009150610810565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115613b9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161061b565b505060209190910290811b63ffffffff90911b19919091161790565b6000826008811115613c26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161061b565b6000855b85811015613c525763ffffffff6020820290811b199890981685891b17979150600101613c2a565b50959695505050505050565b600080821215613cca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015260640161061b565b5090565b6000604e8210613d0e578215613d04577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613d07565b60005b9050610205565b50600a81900a8281029083818381613d2857613d28615115565b0414610810577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f73565b600a81900a613d6381846153e9565b9050604e8210610205578215613d8357613d7e82600a6153c9565b6106dc565b50600092915050565b6000604e8210613db0578215613da3576001613da6565b60005b60ff169050610205565b600a82900a808481613dc457613dc4615115565b0491508082028414610810575060010192915050565b6000604e821015613d835781600a0a8381613df757613df7615115565b046106dc565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003613e5557838281613e4b57613e4b615115565b04925050506106dc565b838110613e9f576040517f63a0577800000000000000000000000000000000000000000000000000000000815260048101879052602481018690526044810185905260640161061b565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b7780000000000000000000000000000000000000000000000067ff0000000000000082161561402957678000000000000000821615613f505768016a09e667f3bcc9090260401c5b674000000000000000821615613f6f576801306fe0a31b7152df0260401c5b672000000000000000821615613f8e576801172b83c7d517adce0260401c5b671000000000000000821615613fad5768010b5586cf9890f62a0260401c5b670800000000000000821615613fcc576801059b0d31585743ae0260401c5b670400000000000000821615613feb57680102c9a3e778060ee70260401c5b67020000000000000082161561400a5768010163da9fb33356d80260401c5b67010000000000000082161561402957680100b1afa5abcbed610260401c5b66ff0000000000008216156141285766800000000000008216156140565768010058c86da1c09ea20260401c5b6640000000000000821615614074576801002c605e2e8cec500260401c5b662000000000000082161561409257680100162f3904051fa10260401c5b66100000000000008216156140b0576801000b175effdc76ba0260401c5b66080000000000008216156140ce57680100058ba01fb9f96d0260401c5b66040000000000008216156140ec5768010002c5cc37da94920260401c5b660200000000000082161561410a576801000162e525ee05470260401c5b66010000000000008216156141285768010000b17255775c040260401c5b65ff000000000082161561421e5765800000000000821615614153576801000058b91b5bc9ae0260401c5b6540000000000082161561417057680100002c5c89d5ec6d0260401c5b6520000000000082161561418d5768010000162e43f4f8310260401c5b651000000000008216156141aa57680100000b1721bcfc9a0260401c5b650800000000008216156141c75768010000058b90cf1e6e0260401c5b650400000000008216156141e4576801000002c5c863b73f0260401c5b6502000000000082161561420157680100000162e430e5a20260401c5b6501000000000082161561421e576801000000b1721835510260401c5b64ff0000000082161561430b5764800000000082161561424757680100000058b90c0b490260401c5b6440000000008216156142635768010000002c5c8601cc0260401c5b64200000000082161561427f576801000000162e42fff00260401c5b64100000000082161561429b5768010000000b17217fbb0260401c5b6408000000008216156142b7576801000000058b90bfce0260401c5b6404000000008216156142d357680100000002c5c85fe30260401c5b6402000000008216156142ef5768010000000162e42ff10260401c5b64010000000082161561430b57680100000000b17217f80260401c5b63ff0000008216156143ef5763800000008216156143325768010000000058b90bfc0260401c5b634000000082161561434d576801000000002c5c85fe0260401c5b632000000082161561436857680100000000162e42ff0260401c5b6310000000821615614383576801000000000b17217f0260401c5b630800000082161561439e57680100000000058b90c00260401c5b63040000008216156143b95768010000000002c5c8600260401c5b63020000008216156143d4576801000000000162e4300260401c5b63010000008216156143ef5768010000000000b172180260401c5b62ff00008216156144ca5762800000821615614414576801000000000058b90c0260401c5b6240000082161561442e57680100000000002c5c860260401c5b622000008216156144485768010000000000162e430260401c5b6210000082161561446257680100000000000b17210260401c5b6208000082161561447c5768010000000000058b910260401c5b62040000821615614496576801000000000002c5c80260401c5b620200008216156144b057680100000000000162e40260401c5b620100008216156144ca576801000000000000b1720260401c5b61ff0082161561459c576180008216156144ed57680100000000000058b90260401c5b6140008216156145065768010000000000002c5d0260401c5b61200082161561451f576801000000000000162e0260401c5b6110008216156145385768010000000000000b170260401c5b610800821615614551576801000000000000058c0260401c5b61040082161561456a57680100000000000002c60260401c5b61020082161561458357680100000000000001630260401c5b61010082161561459c57680100000000000000b10260401c5b60ff8216156146655760808216156145bd57680100000000000000590260401c5b60408216156145d5576801000000000000002c0260401c5b60208216156145ed57680100000000000000160260401c5b6010821615614605576801000000000000000b0260401c5b600882161561461d57680100000000000000060260401c5b600482161561463557680100000000000000030260401c5b600282161561464d57680100000000000000010260401c5b600182161561466557680100000000000000010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b60008160000361468e57506000919050565b5060018170010000000000000000000000000000000081106146b55760409190911b9060801c5b6801000000000000000081106146d05760209190911b9060401c5b64010000000081106146e75760109190911b9060201c5b6201000081106146fc5760089190911b9060101c5b61010081106147105760049190911b9060081c5b601081106147235760029190911b9060041c5b6004811061473357600182901b91505b600182848161474457614744615115565b048301901c9150600182848161475c5761475c615115565b048301901c9150600182848161477457614774615115565b048301901c9150600182848161478c5761478c615115565b048301901c915060018284816147a4576147a4615115565b048301901c915060018284816147bc576147bc615115565b048301901c915060018284816147d4576147d4615115565b048301901c915060008284816147ec576147ec615115565b0490508083106147fa578092505b5050919050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050806000036148535750670de0b6b3a764000090049050610205565b670de0b6b3a7640000811061489e576040517f5173648d000000000000000000000000000000000000000000000000000000008152600481018690526024810185905260440161061b565b6000670de0b6b3a7640000858709620400008185030493109091037d40000000000000000000000000000000000000000000000000000000000002919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690291505092915050565b614910615554565b565b60006020828403121561492457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106dc57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156149ca576149ca614954565b604052919050565b600067ffffffffffffffff8211156149ec576149ec614954565b5060051b60200190565b6000601f8381840112614a0857600080fd5b82356020614a1d614a18836149d2565b614983565b82815260059290921b85018101918181019087841115614a3c57600080fd5b8287015b84811015614af157803567ffffffffffffffff80821115614a615760008081fd5b818a0191508a603f830112614a765760008081fd5b85820135604082821115614a8c57614a8c614954565b614abb887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c85011601614983565b92508183528c81838601011115614ad25760008081fd5b8181850189850137506000908201870152845250918301918301614a40565b50979650505050505050565b600082601f830112614b0e57600080fd5b81356020614b1e614a18836149d2565b82815260059290921b84018101918181019086841115614b3d57600080fd5b8286015b84811015614b585780358352918301918301614b41565b509695505050505050565b600080600060608486031215614b7857600080fd5b833567ffffffffffffffff80821115614b9057600080fd5b614b9c878388016149f6565b94506020860135915080821115614bb257600080fd5b614bbe87838801614afd565b93506040860135915080821115614bd457600080fd5b50614be186828701614afd565b9150509250925092565b600082601f830112614bfc57600080fd5b81356020614c0c614a18836149d2565b82815260059290921b84018101918181019086841115614c2b57600080fd5b8286015b84811015614b5857803567ffffffffffffffff811115614c4f5760008081fd5b614c5d8986838b0101614afd565b845250918301918301614c2f565b803561ffff81168114614c7d57600080fd5b919050565b600080600080600080600060e0888a031215614c9d57600080fd5b873567ffffffffffffffff80821115614cb557600080fd5b614cc18b838c016149f6565b985060208a0135915080821115614cd757600080fd5b614ce38b838c01614afd565b975060408a0135965060608a0135915080821115614d0057600080fd5b614d0c8b838c01614beb565b9550614d1a60808b01614c6b565b945060a08a0135915080821115614d3057600080fd5b50614d3d8a828b01614afd565b92505060c0880135905092959891949750929550565b600081518084526020808501945080840160005b83811015614d8357815187529582019590820190600101614d67565b509495945050505050565b604081526000614da16040830185614d53565b8281036020840152610fa68185614d53565b600081518084526020808501808196508360051b810191508286016000805b86811015614e48578385038a5282518051808752835b81811015614e03578281018901518882018a01528801614de8565b5086810188018490529a87019a601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169095018601945091850191600101614dd2565b509298975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff85168152608060208201526000614e856080830186614db3565b8281036040840152614e978186614d53565b905082810360608401526138888185614d53565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614f3a57614f3a614eda565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8816815260006020888184015260e06040840152614f7760e0840189614db3565b8381036060850152614f898189614d53565b905083810360808501528087518083528383019150838160051b840101848a016000805b8481101561501e578684037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018652825180518086529089019089860190845b818110156150095783518352928b0192918b0191600101614fed565b50509689019694505091870191600101614fad565b50505086810360a0880152615033818a614d53565b9550505050505061504a60c083018461ffff169052565b98975050505050505050565b600082601f83011261506757600080fd5b81516020615077614a18836149d2565b82815260059290921b8401810191818101908684111561509657600080fd5b8286015b84811015614b58578051835291830191830161509a565b600080604083850312156150c457600080fd5b825167ffffffffffffffff808211156150dc57600080fd5b6150e886838701615056565b935060208501519150808211156150fe57600080fd5b5061510b85828601615056565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261515357615153615115565b500490565b600061ffff80831681810361516f5761516f614eda565b6001019392505050565b8082018082111561020557610205614eda565b815160009082906020808601845b838110156151b65781518552938201939082019060010161519a565b50929695505050505050565b6000602082840312156151d457600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561522a57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016151f8565b50505083810382850152610eee8186614d53565b60006020828403121561525057600080fd5b815167ffffffffffffffff81111561526757600080fd5b610f7384828501615056565b60006020828403121561528557600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146106dc57600080fd5b600181815b8085111561530257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156152e8576152e8614eda565b808516156152f557918102915b93841c93908002906152ae565b509250929050565b60008261531957506001610205565b8161532657506000610205565b816001811461533c576002811461534657615362565b6001915050610205565b60ff84111561535757615357614eda565b50506001821b610205565b5060208310610133831016604e8410600b8410161715615385575081810a610205565b61538f83836152a9565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156153c1576153c1614eda565b029392505050565b60006106dc838361530a565b6000826153e4576153e4615115565b500690565b808202811582820484141761020557610205614eda565b8181038181111561020557610205614eda565b60006020828403121561542557600080fd5b8151600481106106dc57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610f736040830184614d53565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000610fa66060830184614d53565b805169ffffffffffffffffffff81168114614c7d57600080fd5b600080600080600060a086880312156154f957600080fd5b615502866154c7565b9450602086015193506040860151925060608601519150615525608087016154c7565b90509295509295909350565b60006020828403121561554357600080fd5b815160ff811681146106dc57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfe0c5e0c750c840d190d270d790de90e710f500fa6103f11e8122812461255126312721280128e129c12aa127212b812c6134413521360136e137d138c139b13aa13b913c813d713e613f51404141314611473148114b314c114cf14dd14eb14f91507151515231531153f154d155b156915771585159315a115af15bd15cc15db15ea15f81606161416221630163e164c17781800180f181e182c189e0c5e0c750c840d190d270d790de90e710f500fa6103f11e8122812461255126312721280128e129c12aa127212b812c6134413521360136e137d138c139b13aa13b913c813d713e613f51404141314611473148114b314c114cf14dd14eb14f91507151515231531153f154d155b156915771585159315a115af15bd15cc15db15ea15f81606161416221630163e164c17781800180f181e182c189e0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000113fff0a89c674ee7874a40059110d789ced5d6d6fdc3612fe9e5f4118012ee9ad1cefba497cfdd6a6f7125c9b14692e87439a03b8127797b0246e44c9f6f6d0ff7e3343ea5dd46adffc86fd90d8962871f8cc33c32139a43e3f61ec7ff08fb1939847e2e43b7612085f05c29bbc7c7532327702a17dbcf323dd619ce950fa82a9199bca543395a5f83b67f0085e61573ccc047bc6e355ba90f19ca998a50bc174cafdcbe7a7f95bd552243c0ee0c59fe9422e484d18782649ed1335597e807a641c881b962a46a558227880d5cd12159d569f4129b19a8b111bbffc62afff3172d71a8a789e2ebaaa7d97455391144d87bab156aad248d159f1d988bd2eeaa59f5f2c08325e66542697e264c91390221589ae205395b28a8eca125f9c14b7feb0bf99bafec881ce525bc9d85ee1a1e45a500527a44bd2363e45cf340821621721fe4a77985691606992c53e4f456090214406520214094072168bebfa0347ae1c902ba3fef220e05ca4bb71cb57cb9537806037cb1019763e6912ec17d4158f59060c4166181a115d2e9816c88a54b0319baee08796bf0b53427710e76c2f28d2eb878372d1018a6d2d36b668ba131a7fc1651ccaf8d25b260063139f8ffc5268f637015607ad64bfa63c14dfcfa0291687826cfe2515008d6a32bc37f97bd9fb84fba1a077fc4933aa858a9a87b06c227416a66c0a2d08d070cb5a0e85f20c84a9d846a5c13c08401c8d4685a21971a9f860626b14dfe315f91b750419b04a4243b11289ae6dc1535bd5b50c4336259ac96037e3300a752a5ec5a9b8499b0a7f1b6b91800ec1266c09e60b10894ca2f0a8600f8587f355984531a93451d78610b9be36f1aee63d3bb94aa87f4b8f77d646b41f37cf88eb2db85e3431fc1521326680b7297689998853998812557afe94fd4b8b5916b2994a988ef9522f549a22ac8867c8d1d2fc85f02fe9120ba5a65028032581c1aa2b1980c9385dd256689fd5d0de175ca56ada541bca34bc68d95665599d7af4d48e50e412d675759b9d29c235dcf81dd8cf5418780e3bff452440b908d10f15c014309f03f8ea0a0847e19691df786afc3bc70224d34c2f852f671263b155ae1213f79830089fba9641bad88c9416b30e9cc7e75bfa808a4d2664574814201836da1d9c8dd1082643aaa356f60767061f5dd48a1877d6fa7ac4fe32a44eab57176b8ba65ac5acadf7db117b35a45e13e179a4e2ae8adf92ee6dcf690a53509ac5ae40f47ca8ed347890bf6d239ba2b7d67b64bd44df023761702106db9b4baa27f9c39d8e10ccab3bba32e6968ac84653a5ef23c796c568a416ce6b992e98cea65e5980ccb40ca334c4511857557ce866839c354a964e25bbbaeef1106e19743d0cb1bb6a8d0b6bcad5d0cde3d743ea72bb996d2849cfdc33429648e485ab81e10c06d2187fe2f860163b23c44079d70b19b6c6041f0c23e99ef52c312b1564989c02b5e37c906ec89a4100149ade3e9058bf66523300eb21f0730d672ad72972ffc0e3393ef7d98653d502be8ae05d3402a0114732671e1b9fec44bbc63b693ee0cff0d203f372cd48a8d074f738a8b88dea2ae9343cf0e906c5c97bc366f72401a01337c93e6004da0e86cf1c5560ebbc56153fa109151e3ea621a1c6c00a6c08bbf166ff5073fd691e18d7bc3fc5d09bfb7e926fbd0bc662dd51da64689476ec651e7d2f43a68c3d8c4a9c36876278918854b2ea8e8d60dc8ccc37c4077f019c8e715492247cc560c85c3108632168169206968c2665b78e8386519384b313af9d1631d420d2d5b29392783daf0c2b1935a1c079834ae39aa439db7c24dfa14b6a9e4b895d5320ffc0798f675a415728d315bb14becf2f272f5f3db733ac95f0a07467cd19c13d8d1d698ceeeea041459397d0436f6e90afefd8205de37e91f8de78fcf2a537e5218fc1cdaa59533f7f1729016d4bd829aabf7e7883cf01a1513be61af77d0591db8686b59f695a92c3b353b2c32760adc81b2c45503dbbceb7366177471a6dfdc0afa9dfb2a2869674a79a70e6909eb6f74de38d27342564b057bfb8a39db923e16736147ece5eb049773cdc1ffb357aa3a1c6db1483a2e76fd8e4f9f621f48eccdd43ec5d707a6b47e3e036306d10c32767dbf89fc9d9e3f33e5bfa9212c07538a72ae5a1a7b3e5326cc55139d2e66e07d0f709daed91b28d5f0354bec252f5bcbc35375e40664b6fca52c4e0eeb1dc77275960b78f7eb2431783755765fb10ed3d08e6df15f803ece6e5f9f8dc53d771b91c5f5be824cce87609313ec2b05b859ae394d68e12eea707cb9ac82bd8c2a5f434fcf564bc4d17068f1dfb304bb50a84bd1cc372c4a11ea01b1c7b0430ef6fdc51e0d79364a7b3a43d972fbe66989590e22cfeacb2f404a84d29e72e5dac464c9e8a533687d011f311d205a0fdbb48d429fb20ae68095fcef237d8b918cdce0e66ec115f4d8567441b8edc5907728969bd13b39cb90dd0de6449228069310c19ae049b73dd7002968a0743a07398504c9c810e735b002dce5b6eea7477ef380d957fe999e952575a07656b58a4a87cbe46b4b1490e9ba3b2757954975ba524394db1a73c5a760bdf217bf1c460f1dbd2b61a54153fc6bc0556b402eb6bfe6d2476b50cbc4fb335df0730f28fb23095cb30cf5c044e0025162239659fcc051f180bb62e245e6581f065c4439c5784968ab948466c9a01d92192e22c9234f53955fb4bed58336d3079b8d3731d5ad659845a05643dd21765c323dee38bfc02deb3c5ca7b78c1b94e2baf5a89f41233c32abab7aacc39a0c1f1613e1a0fc3d5518f5be8119584b8f7641cb7ba5a2e758f4aa01359aa6b1c39827d09ee2f98427b1c31713a3f6537ecbf6c05ff7e3f6a6b4b6d01b84e6d45fca635b411a1f06d2f06b7659445a89886333dfad03bd22669acea20f18253bdb2b5e65e53af8c8feabd67ea957143bdd29da714a956e0f386877e86d9d3e06f559085aaa6dcbae73d2a695b2529f79a3060ddd4c9cf067e093a797754c19e540030bb54a0b369cbeb65539a26430d1c3ddc9d6a8eb4538ff0a76e55fab8a3687cd19ebda13ba09299bc1101049012a7258a2ca677b92229f97c7c51fe790d5a1668871a146c66d78c02375368febeaecc951ff3baecbc9249fc980a4ac23782079d79e1935a8a779b0c9851f9eafce2bca4c3c82da1e629eeb6eaccad793b63638682a048d9d2ecbdca1f60f0df229fedc2d4f959a8aed992ebb4d82c083147f7ee0110708dfc83644f5416075eb65c2b7ba0ae63233d3d826da94a4fb755cc80c0bed4986f192aad5d39f96783455f638507dcf6e89a97ca0dc50b567049fa0731984aee52310db4e146e223291f0229f3b9b7c2cb95fc1cdd229d5b839782c53152f4fdfb9f75179d3103988abddb8c9c665fb6d7e7da718ad914abd98ba92e5547af7e34a08a19d4a2a82a856c2a68491cf66e779be1712b05a6ba22319389c63836f67005cb8a80ab36007311a550f6066dbb354b5be4fbc58dd4986f1b8b1113a116769151d352586355e018166f1116f7e4890b0e43104fb696864d92f8b97bf71c29d1ead0ea9e52b6a11b2f384079dc158a68811b536cb99a5a1b8ac7ebe7892979c0cc86be2d341f694b74be8d0664154860f48c83fb2a707e1ab713422344df9a6269ad66897766f763e79557207d815c182ec18ccb704f1250ed33e88f763cb406a8e6e4e2d78c875eaa5a734e2a02c50a438b107b9489e5656361dd2cbf55f21434d9ce8b7165db8e6ddc8a71f43cd9571e36b8476d7c717628da11d4e30d039ec98e790c5fdd98434f3dc0ad0ff2e6b4cd9dd08d08dd9cb447af5eb9b53faf8e38b9d46a334a3c8c67ba5dbbb5a3eec366cccee78ae9945656f3f8f6501f5dcf60a9b87a53005f69cd0a9f8fd5e11238eec2bce6a9530f529305b43c5a35022a5124cb7079af9a0a30ff4adf81e3dad1f76bcff4202378ad72a3160ae8386f8bba58d93e78db9395728f985cdb47e8d6c032997afc6adeb3fa8360f144a60b688ff419877e044249f4ffe69092d50817decb899eea407a64c65df950ec60cee066387a1be4bb7531bb926b02a8f5a1ea0bd95ac0f98f1461604364780b303265d70b0523b76efcf289889ad75509a3000ac3b89b5b8174279c08873ea07a926fd26bd58f8c3e651f9061387972cd93c0b8d647c5b3be1c1984af234fa661bd31cddc8430fc5ec2d03b4eadedba8cf6fe530a9bbc0692d631850d4ca632e6c9aa0149a6f3a300eced192ef5e1b8089ab850c103c76cd20bda2c54aa95895a7158c6070d7458655ffbc0bc9541a11727e0440f4ce2c6c7b64fc50ac30b0a43f0950fdee6a8d97db8cca3352637170aa44e208688048f870510266dfee953fd35499fddb06fd8eaf9d3a78f39aa98bb9354116419b7faca0aca63f682dd0c0bc74c77797bbde54ea060abfb50095be307470f18aab909651fbc3986ee642e4244cdc7676b40f15514d192c7a3c1841abd06968181c1a342a5bfe3ef4f345b1f8297db211e9323eecb0b43d496edd3586d7afa4d7e722025a3237f5677cc9fdbc2ac2f41dc629639417b66d6e2dd447b5ec775c59e65b196f3188f50e51ac20a9b67f7bc12c7cf78a432cd783857c69a7f3bc9437e690e909eae9886f83481277e3b796cda809eb37fea07e3aa350e91d011103928334aba67d33d3b4144cd77a60c9a8407688dd7b1312c5f3ad126ed9d902a8ef4752ea6ca19261b5c89048f97492a5b3fcb33dce70ab7b24cd515ed9a283eb6503970edb878b281b2418bf9b6b08a42edee30bcd9b72facf244472f995320ca7bcb20d7e19110f79b10bd49df5596b4f2bf4bb33779e0f93708f6abed29a65455d7938e0ade4cc17da9e02a09443255ead2bb9a78571c402fce576828fb63eb6c8af7f8ec0ff0eca709ce6c957f8e19bde9605d5e29747e44420dbddacef5faf737de56641e1e8598932436adeb7d7ebe8459edc4030807d7583f0062688d1ff1a94dd6ce50ddbb1e175161d0b8c120b7570905f22d111197313a177b72457c05b168d7e19de4126c61967cfce73b5cc19cd18104e66409adc2808eaee3ec5778fba7c9c1c847c2efed5c98120a70a5579d46676f550e2779984da49f989695e9ae66e26d666edfe74676fa58db40d3b675ac273d762a1a785d35e9fb0ac1daf6e1795a96b5f0d317f24ab4860c94f38d25198e4acda2538de9181398477158fac0b0806046ce56e811edd129961c1ecf8fe2e8308092fb95d38770839c0da67cf375277b08fe27aae2d3f8369333ca566d7902d416671a150795ac514ad5225df0bb33c7446be4ff01bf7dc7d9a558bd3079314b2e93e2b4648a7741658af23f80a0e6eb49f954cb25a65ad68e20aee6aeef9dbc505d779090cb6203847a63f660f26dd8fe9d40c0dfc6adf380e66b2a4bf94a4d480f89d40601d246c95f5dc7f050139db44b25c495d4fb2f557bee099dc2472801e1b52960029cc2398c985ae2980b4f5da9f02fffb2d2edee85fe32629fcff1bff1d9faaf53384ee3ddf2805dfb758a4921f66667adc94a6cbfa93f1bfe40fdbb59f66623ed1e0b607680d1dc5e86848388475d9207e4f2f07a0f0d4318a587f51eca414200549acb77c347a2e2b7c4c7f17a3e9e1f828fe73bf01154730bc794a3b2ef3b813b7c2a21d4c9dc757eb6329d15c8597bfb0f0d43f2220c8b8844d8098fdc091fee5badb6491b64bfda2736c9e45e87101d64e385a96b286a67744db93cdc29339c8af4a67202d0f5858648c1d3e55e698bae09f64335c7f45a881122fc60f30ee7cbd39bbaf6469a163068a9a9ed3b46bb421875b12bd67aaef671b6f27b2b2377d528fa9a9ab1c8777862d088a6b3f10b2498a7dd55ef057ecdcfedf0c0234d06ed177d381fb6488435bfd6f98a0d40692c591ca888d1246dd34be932b02ba7169f733c4e7b53fb72576ac332a43be9f4a7d40ccf6ea3ebce96014f2d348507f4125297639e3ead9930bda0f8dc133e673e206ccf8ce345eb9a964b16dab2eaca8e83edad55c4413506a9b582120a6dc296341bd20d065d5cfeb69fcb40ca8b613bc3f1e397bd22e9fcf398eb855aff69b78b83ec9beea3715aa3b1919dd1e7dfc97248b8c1f652e5a4db5cd3a6b9da5acb1ae1e2865dda932f4ffe0fcd42f13b011bffe5282f43e495b402706170706c69636174696f6e2f6a736f6e03676465666c61746500" + } \ No newline at end of file diff --git a/subgraph/tests/utils/deploy/touch_deployer/mod.rs b/subgraph/tests/utils/deploy/touch_deployer/mod.rs index d8e5e7327..804c41412 100644 --- a/subgraph/tests/utils/deploy/touch_deployer/mod.rs +++ b/subgraph/tests/utils/deploy/touch_deployer/mod.rs @@ -1,7 +1,6 @@ -use ethers::abi::Token; use ethers::prelude::SignerMiddleware; use ethers::providers::{Http, Middleware}; -use ethers::types::{Bytes, TransactionRequest, H160, U256}; +use ethers::types::{Bytes, Eip1559TransactionRequest, H160, U256}; use ethers::{ prelude::abigen, providers::Provider, @@ -11,7 +10,7 @@ use ethers::{ use serde_json::Value; use std::fs::File; use std::io::Read; -use std::ops::Mul; +use std::str::FromStr; use std::sync::Arc; use std::time::Duration; abigen!( @@ -29,15 +28,9 @@ pub async fn deploy_touch_deployer(anvil: &AnvilInstance) -> anyhow::Result::try_from(&anvil.endpoint())?.interval(Duration::from_millis(10u64)); - let rainterpreter = rainterpreter_deploy(&provider, &anvil).await?; - let rainterpreter_store = rainterpreter_store_deploy(&provider, &anvil).await?; - let expression_deployer = rainterpreter_expression_deployer_deploy( - rainterpreter, - rainterpreter_store, - &provider, - &anvil, - ) - .await?; + rainterpreter_deploy(&provider, &anvil).await?; + rainterpreter_store_deploy(&provider, &anvil).await?; + let expression_deployer = rainterpreter_expression_deployer_deploy(&provider, anvil).await?; Ok(expression_deployer) } @@ -70,8 +63,6 @@ pub async fn rainterpreter_store_deploy( } pub async fn rainterpreter_expression_deployer_deploy( - interpreter: H160, - store: H160, provider: &Provider, anvil: &AnvilInstance, ) -> anyhow::Result { @@ -81,61 +72,28 @@ pub async fn rainterpreter_expression_deployer_deploy( provider.clone(), deployer.with_chain_id(anvil.chain_id()), )); - let meta = get_rain_meta_document_from_opmeta()?; - let interpreter = Token::Address(interpreter); - let store = Token::Address(store); - let meta = Token::Bytes(meta.into()); + let mut data = String::new(); + let mut file = File::open("tests/utils/deploy/touch_deployer/data.json")?; + file.read_to_string(&mut data)?; - let mut bytecode = String::new(); - let mut file = - File::open("tests/utils/deploy/touch_deployer/RainterpreterExpressionDeployer.json")?; - file.read_to_string(&mut bytecode)?; + let data: Value = serde_json::from_str(&data)?; + let data = data["data"].as_str().unwrap(); - let bytecode: Value = serde_json::from_str(&bytecode)?; - let bytecode = bytecode["bytecode"]["object"].to_string().replace("0x", ""); - let seprator = "0000000000000000000000000000000000000000000000000000000000000020"; - let encoded = ethers::abi::encode(&[interpreter, store, meta]); + let mut tx = Eip1559TransactionRequest::new(); + tx.to = Some(H160::zero().into()); + tx.value = Some(U256::zero()); + tx.max_fee_per_gas = Some(U256::from(50_000_000_000u128)); + tx.max_priority_fee_per_gas = Some(U256::from(20_000_000_000u128)); + tx.data = Some(Bytes::from_str(data)?); + tx.chain_id = Some(provider.get_chainid().await.unwrap().as_u64().into()); + tx.gas = Some(U256::from(21000)); - let data = [ - bytecode.clone(), - seprator.to_string(), - hex::encode(encoded.clone()), - ] - .join("") - .replace('"', ""); + let tx_receipt = deployer.send_transaction(tx, None).await?.await?.unwrap(); - let gas_price = U256::from(20000000000i64); - let gas_limit = U256::from(4000000); - - let tx = TransactionRequest { - from: Some(deployer.address()), - data: Some(Bytes::from(data.as_bytes().to_vec())), - nonce: Some( - provider - .get_transaction_count(deployer.address(), None) - .await?, - ), - gas_price: gas_price.into(), - gas: gas_limit.into(), - value: U256::zero().into(), - ..Default::default() - }; - - let tx = provider.send_transaction(tx, None).await?.await?.unwrap(); - - let trx = provider - .get_transaction(tx.transaction_hash) - .await? - .unwrap(); - - let contract = RainterpreterExpressionDeployer::new(tx.contract_address.unwrap(), deployer); + let contract = + RainterpreterExpressionDeployer::new(tx_receipt.contract_address.unwrap(), deployer); println!("{:?}", contract.interpreter().await?); Ok(contract.address()) } - -fn get_rain_meta_document_from_opmeta() -> anyhow::Result> { - let meta_string = "ff0a89c674ee7874a40059110d789ced5d6d6fdc3612fe9e5f4118012ee9ad1cefba497cfdd6a6f7125c9b14692e87439a03b8127797b0246e44c9f6f6d0ff7e3343ea5dd46adffc86fd90d8962871f8cc33c32139a43e3f61ec7ff08fb1939847e2e43b7612085f05c29bbc7c7532327702a17dbcf323dd619ce950fa82a9199bca543395a5f83b67f0085e61573ccc047bc6e355ba90f19ca998a50bc174cafdcbe7a7f95bd552243c0ee0c59fe9422e484d18782649ed1335597e807a641c881b962a46a558227880d5cd12159d569f4129b19a8b111bbffc62afff3172d71a8a789e2ebaaa7d97455391144d87bab156aad248d159f1d988bd2eeaa59f5f2c08325e66542697e264c91390221589ae205395b28a8eca125f9c14b7feb0bf99bafec881ce525bc9d85ee1a1e45a500527a44bd2363e45cf340821621721fe4a77985691606992c53e4f456090214406520214094072168bebfa0347ae1c902ba3fef220e05ca4bb71cb57cb9537806037cb1019763e6912ec17d4158f59060c4166181a115d2e9816c88a54b0319baee08796bf0b53427710e76c2f28d2eb878372d1018a6d2d36b668ba131a7fc1651ccaf8d25b260063139f8ffc5268f637015607ad64bfa63c14dfcfa0291687826cfe2515008d6a32bc37f97bd9fb84fba1a077fc4933aa858a9a87b06c227416a66c0a2d08d070cb5a0e85f20c84a9d846a5c13c08401c8d4685a21971a9f860626b14dfe315f91b750419b04a4243b11289ae6dc1535bd5b50c4336259ac96037e3300a752a5ec5a9b8499b0a7f1b6b91800ec1266c09e60b10894ca2f0a8600f8587f355984531a93451d78610b9be36f1aee63d3bb94aa87f4b8f77d646b41f37cf88eb2db85e3431fc1521326680b7297689998853998812557afe94fd4b8b5916b2994a988ef9522f549a22ac8867c8d1d2fc85f02fe9120ba5a65028032581c1aa2b1980c9385dd256689fd5d0de175ca56ada541bca34bc68d95665599d7af4d48e50e412d675759b9d29c235dcf81dd8cf5418780e3bff452440b908d10f15c014309f03f8ea0a0847e19691df786afc3bc70224d34c2f852f671263b155ae1213f79830089fba9641bad88c9416b30e9cc7e75bfa808a4d2664574814201836da1d9c8dd1082643aaa356f60767061f5dd48a1877d6fa7ac4fe32a44eab57176b8ba65ac5acadf7db117b35a45e13e179a4e2ae8adf92ee6dcf690a53509ac5ae40f47ca8ed347890bf6d239ba2b7d67b64bd44df023761702106db9b4baa27f9c39d8e10ccab3bba32e6968ac84653a5ef23c796c568a416ce6b992e98cea65e5980ccb40ca334c4511857557ce866839c354a964e25bbbaeef1106e19743d0cb1bb6a8d0b6bcad5d0cde3d743ea72bb996d2849cfdc33429648e485ab81e10c06d2187fe2f860163b23c44079d70b19b6c6041f0c23e99ef52c312b1564989c02b5e37c906ec89a4100149ade3e9058bf66523300eb21f0730d672ad72972ffc0e3393ef7d98653d502be8ae05d3402a0114732671e1b9fec44bbc63b693ee0cff0d203f372cd48a8d074f738a8b88dea2ae9343cf0e906c5c97bc366f72401a01337c93e6004da0e86cf1c5560ebbc56153fa109151e3ea621a1c6c00a6c08bbf166ff5073fd691e18d7bc3fc5d09bfb7e926fbd0bc662dd51da64689476ec651e7d2f43a68c3d8c4a9c36876278918854b2ea8e8d60dc8ccc37c4077f019c8e715492247cc560c85c3108632168169206968c2665b78e8386519384b313af9d1631d420d2d5b29392783daf0c2b1935a1c079834ae39aa439db7c24dfa14b6a9e4b895d5320ffc0798f675a415728d315bb14becf2f272f5f3db733ac95f0a07467cd19c13d8d1d698ceeeea041459397d0436f6e90afefd8205de37e91f8de78fcf2a537e5218fc1cdaa59533f7f1729016d4bd829aabf7e7883cf01a1513be61af77d0591db8686b59f695a92c3b353b2c32760adc81b2c45503dbbceb7366177471a6dfdc0afa9dfb2a2869674a79a70e6909eb6f74de38d27342564b057bfb8a39db923e16736147ece5eb049773cdc1ffb357aa3a1c6db1483a2e76fd8e4f9f621f48eccdd43ec5d707a6b47e3e036306d10c32767dbf89fc9d9e3f33e5bfa9212c07538a72ae5a1a7b3e5326cc55139d2e66e07d0f709daed91b28d5f0354bec252f5bcbc35375e40664b6fca52c4e0eeb1dc77275960b78f7eb2431783755765fb10ed3d08e6df15f803ece6e5f9f8dc53d771b91c5f5be824cce87609313ec2b05b859ae394d68e12eea707cb9ac82bd8c2a5f434fcf564bc4d17068f1dfb304bb50a84bd1cc372c4a11ea01b1c7b0430ef6fdc51e0d79364a7b3a43d972fbe66989590e22cfeacb2f404a84d29e72e5dac464c9e8a533687d011f311d205a0fdbb48d429fb20ae68095fcef237d8b918cdce0e66ec115f4d8567441b8edc5907728969bd13b39cb90dd0de6449228069310c19ae049b73dd7002968a0743a07398504c9c810e735b002dce5b6eea7477ef380d957fe999e952575a07656b58a4a87cbe46b4b1490e9ba3b2757954975ba524394db1a73c5a760bdf217bf1c460f1dbd2b61a54153fc6bc0556b402eb6bfe6d2476b50cbc4fb335df0730f28fb23095cb30cf5c044e0025162239659fcc051f180bb62e245e6581f065c4439c5784968ab948466c9a01d92192e22c9234f53955fb4bed58336d3079b8d3731d5ad659845a05643dd21765c323dee38bfc02deb3c5ca7b78c1b94e2baf5a89f41233c32abab7aacc39a0c1f1613e1a0fc3d5518f5be8119584b8f7641cb7ba5a2e758f4aa01359aa6b1c39827d09ee2f98427b1c31713a3f6537ecbf6c05ff7e3f6a6b4b6d01b84e6d45fca635b411a1f06d2f06b7659445a89886333dfad03bd22669acea20f18253bdb2b5e65e53af8c8feabd67ea957143bdd29da714a956e0f386877e86d9d3e06f559085aaa6dcbae73d2a695b2529f79a3060ddd4c9cf067e093a797754c19e540030bb54a0b369cbeb65539a26430d1c3ddc9d6a8eb4538ff0a76e55fab8a3687cd19ebda13ba09299bc1101049012a7258a2ca677b92229f97c7c51fe790d5a1668871a146c66d78c02375368febeaecc951ff3baecbc9249fc980a4ac23782079d79e1935a8a779b0c9851f9eafce2bca4c3c82da1e629eeb6eaccad793b63638682a048d9d2ecbdca1f60f0df229fedc2d4f959a8aed992ebb4d82c083147f7ee0110708dfc83644f5416075eb65c2b7ba0ae63233d3d826da94a4fb755cc80c0bed4986f192aad5d39f96783455f638507dcf6e89a97ca0dc50b567049fa0731984aee52310db4e146e223291f0229f3b9b7c2cb95fc1cdd229d5b839782c53152f4fdfb9f75179d3103988abddb8c9c665fb6d7e7da718ad914abd98ba92e5547af7e34a08a19d4a2a82a856c2a68491cf66e779be1712b05a6ba22319389c63836f67005cb8a80ab36007311a550f6066dbb354b5be4fbc58dd4986f1b8b1113a116769151d352586355e018166f1116f7e4890b0e43104fb696864d92f8b97bf71c29d1ead0ea9e52b6a11b2f384079dc158a68811b536cb99a5a1b8ac7ebe7892979c0cc86be2d341f694b74be8d0664154860f48c83fb2a707e1ab713422344df9a6269ad66897766f763e79557207d815c182ec18ccb704f1250ed33e88f763cb406a8e6e4e2d78c875eaa5a734e2a02c50a438b107b9489e5656361dd2cbf55f21434d9ce8b7165db8e6ddc8a71f43cd9571e36b8476d7c717628da11d4e30d039ec98e790c5fdd98434f3dc0ad0ff2e6b4cd9dd08d08dd9cb447af5eb9b53faf8e38b9d46a334a3c8c67ba5dbbb5a3eec366cccee78ae9945656f3f8f6501f5dcf60a9b87a53005f69cd0a9f8fd5e11238eec2bce6a9530f529305b43c5a35022a5124cb7079af9a0a30ff4adf81e3dad1f76bcff4202378ad72a3160ae8386f8bba58d93e78db9395728f985cdb47e8d6c032997afc6adeb3fa8360f144a60b688ff419877e044249f4ffe69092d50817decb899eea407a64c65df950ec60cee066387a1be4bb7531bb926b02a8f5a1ea0bd95ac0f98f1461604364780b303265d70b0523b76efcf289889ad75509a3000ac3b89b5b8174279c08873ea07a926fd26bd58f8c3e651f9061387972cd93c0b8d647c5b3be1c1984af234fa661bd31cddc8430fc5ec2d03b4eadedba8cf6fe530a9bbc0692d631850d4ca632e6c9aa0149a6f3a300eced192ef5e1b8089ab850c103c76cd20bda2c54aa95895a7158c6070d7458655ffbc0bc9541a11727e0440f4ce2c6c7b64fc50ac30b0a43f0950fdee6a8d97db8cca3352637170aa44e208688048f870510266dfee953fd35499fddb06fd8eaf9d3a78f39aa98bb9354116419b7faca0aca63f682dd0c0bc74c77797bbde54ea060abfb50095be307470f18aab909651fbc3986ee642e4244cdc7676b40f15514d192c7a3c1841abd06968181c1a342a5bfe3ef4f345b1f8297db211e9323eecb0b43d496edd3586d7afa4d7e722025a3237f5677cc9fdbc2ac2f41dc629639417b66d6e2dd447b5ec775c59e65b196f3188f50e51ac20a9b67f7bc12c7cf78a432cd783857c69a7f3bc9437e690e909eae9886f83481277e3b796cda809eb37fea07e3aa350e91d011103928334aba67d33d3b4144cd77a60c9a8407688dd7b1312c5f3ad126ed9d902a8ef4752ea6ca19261b5c89048f97492a5b3fcb33dce70ab7b24cd515ed9a283eb6503970edb878b281b2418bf9b6b08a42edee30bcd9b72facf244472f995320ca7bcb20d7e19110f79b10bd49df5596b4f2bf4bb33779e0f93708f6abed29a65455d7938e0ade4cc17da9e02a09443255ead2bb9a78571c402fce576828fb63eb6c8af7f8ec0ff0eca709ce6c957f8e19bde9605d5e29747e44420dbddacef5faf737de56641e1e8598932436adeb7d7ebe8459edc4030807d7583f0062688d1ff1a94dd6ce50ddbb1e175161d0b8c120b7570905f22d111197313a177b72457c05b168d7e19de4126c61967cfce73b5cc19cd18104e66409adc2808eaee3ec5778fba7c9c1c847c2efed5c98120a70a5579d46676f550e2779984da49f989695e9ae66e26d666edfe74676fa58db40d3b675ac273d762a1a785d35e9fb0ac1daf6e1795a96b5f0d317f24ab4860c94f38d25198e4acda2538de9181398477158fac0b0806046ce56e811edd129961c1ecf8fe2e8308092fb95d38770839c0da67cf375277b08fe27aae2d3f8369333ca566d7902d416671a150795ac514ad5225df0bb33c7446be4ff01bf7dc7d9a558bd3079314b2e93e2b4648a7741658af23f80a0e6eb49f954cb25a65ad68e20aee6aeef9dbc505d779090cb6203847a63f660f26dd8fe9d40c0dfc6adf380e66b2a4bf94a4d480f89d40601d246c95f5dc7f050139db44b25c495d4fb2f557bee099dc2472801e1b52960029cc2398c985ae2980b4f5da9f02fffb2d2edee85fe32629fcff1bff1d9faaf53384ee3ddf2805dfb758a4921f66667adc94a6cbfa93f1bfe40fdbb59f66623ed1e0b607680d1dc5e86848388475d9207e4f2f07a0f0d4318a587f51eca414200549acb77c347a2e2b7c4c7f17a3e9e1f828fe73bf01154730bc794a3b2ef3b813b7c2a21d4c9dc757eb6329d15c8597bfb0f0d43f2220c8b8844d8098fdc091fee5badb6491b64bfda2736c9e45e87101d64e385a96b286a67744db93cdc29339c8af4a67202d0f5858648c1d3e55e698bae09f64335c7f45a881122fc60f30ee7cbd39bbaf6469a163068a9a9ed3b46bb421875b12bd67aaef671b6f27b2b2377d528fa9a9ab1c8777862d088a6b3f10b2498a7dd55ef057ecdcfedf0c0234d06ed177d381fb6488435bfd6f98a0d40692c591ca888d1246dd34be932b02ba7169f733c4e7b53fb72576ac332a43be9f4a7d40ccf6ea3ebce96014f2d348507f4125297639e3ead9930bda0f8dc133e673e206ccf8ce345eb9a964b16dab2eaca8e83edad55c4413506a9b582120a6dc296341bd20d065d5cfeb69fcb40ca8b613bc3f1e397bd22e9fcf398eb855aff69b78b83ec9beea3715aa3b1919dd1e7dfc97248b8c1f652e5a4db5cd3a6b9da5acb1ae1e2865dda932f4ffe0fcd42f13b011bffe5282f43e495b402706170706c69636174696f6e2f6a736f6e03676465666c617465"; - Ok(hex::decode(meta_string)?) -}