diff --git a/demo/.github/workflows/contracts.yml b/demo/.github/workflows/contracts.yml deleted file mode 100644 index 7dbfc27..0000000 --- a/demo/.github/workflows/contracts.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Contracts -on: - push: - branches: - - main - pull_request: {} - workflow_dispatch: {} - -jobs: - test: - name: "Contracts: Unit Tests" - runs-on: ubuntu-latest - defaults: - run: - working-directory: ./contracts - env: - PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} - INFURA_KEY: ${{ secrets.INFURA_KEY }} - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v2 - with: - node-version: 16 - - - name: Install dependencies - run: npm ci - - - name: Run tests - run: npx hardhat test diff --git a/demo/.gitignore b/demo/.gitignore deleted file mode 100644 index 58d8196..0000000 --- a/demo/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.vercel \ No newline at end of file diff --git a/demo/README.md b/demo/app/README.md similarity index 100% rename from demo/README.md rename to demo/app/README.md diff --git a/demo/img/arch-overview-trade.png b/demo/img/arch-overview-trade.png deleted file mode 100644 index 2f2f15a..0000000 Binary files a/demo/img/arch-overview-trade.png and /dev/null differ diff --git a/demo/img/arch-overview.png b/demo/img/arch-overview.png deleted file mode 100644 index 6143838..0000000 Binary files a/demo/img/arch-overview.png and /dev/null differ diff --git a/demo/img/architecture-overview.png b/demo/img/architecture-overview.png deleted file mode 100644 index 72c8fe7..0000000 Binary files a/demo/img/architecture-overview.png and /dev/null differ diff --git a/deployment-lock.json b/deployment-lock.json index 08b5bfd..fbbb836 100644 --- a/deployment-lock.json +++ b/deployment-lock.json @@ -11,8 +11,8 @@ "args": [] }, "FakedOracle": { - "addr": "0x9B3b67BB033cFACDfA77638b739cC9bFd68bD449", - "code": "0x6101606040523480156200001257600080fd5b5060405162003d8138038062003d81833981810160405281019062000038919062000450565b87878787878787878560008190806001815401808255809150506001900390600052602060002001600090919091909150908162000077919062000779565b5050600180819055508773ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508673ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250508373ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff16815250508061014081815250508173ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff168152505033600360010160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050505050505050505062000860565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200025e8262000231565b9050919050565b620002708162000251565b81146200027c57600080fd5b50565b600081519050620002908162000265565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002eb82620002a0565b810181811067ffffffffffffffff821117156200030d576200030c620002b1565b5b80604052505050565b6000620003226200021d565b9050620003308282620002e0565b919050565b600067ffffffffffffffff821115620003535762000352620002b1565b5b6200035e82620002a0565b9050602081019050919050565b60005b838110156200038b5780820151818401526020810190506200036e565b60008484015250505050565b6000620003ae620003a88462000335565b62000316565b905082815260208101848484011115620003cd57620003cc6200029b565b5b620003da8482856200036b565b509392505050565b600082601f830112620003fa57620003f962000296565b5b81516200040c84826020860162000397565b91505092915050565b6000819050919050565b6200042a8162000415565b81146200043657600080fd5b50565b6000815190506200044a816200041f565b92915050565b600080600080600080600080610100898b03121562000474576200047362000227565b5b6000620004848b828c016200027f565b9850506020620004978b828c016200027f565b975050604089015167ffffffffffffffff811115620004bb57620004ba6200022c565b5b620004c98b828c01620003e2565b9650506060620004dc8b828c016200027f565b9550506080620004ef8b828c016200027f565b94505060a0620005028b828c016200027f565b93505060c0620005158b828c016200027f565b92505060e0620005288b828c0162000439565b9150509295985092959890939650565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200058b57607f821691505b602082108103620005a157620005a062000543565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200060b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005cc565b620006178683620005cc565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200065a620006546200064e8462000415565b6200062f565b62000415565b9050919050565b6000819050919050565b620006768362000639565b6200068e620006858262000661565b848454620005d9565b825550505050565b600090565b620006a562000696565b620006b28184846200066b565b505050565b5b81811015620006da57620006ce6000826200069b565b600181019050620006b8565b5050565b601f8211156200072957620006f381620005a7565b620006fe84620005bc565b810160208510156200070e578190505b620007266200071d85620005bc565b830182620006b7565b50505b505050565b600082821c905092915050565b60006200074e600019846008026200072e565b1980831691505092915050565b60006200076983836200073b565b9150826002028217905092915050565b620007848262000538565b67ffffffffffffffff811115620007a0576200079f620002b1565b5b620007ac825462000572565b620007b9828285620006de565b600060209050601f831160018114620007f15760008415620007dc578287015190505b620007e885826200075b565b86555062000858565b601f1984166200080186620005a7565b60005b828110156200082b5784890151825560018201915060208501945060208101905062000804565b868310156200084b578489015162000847601f8916826200073b565b8355505b6001600288020188555050505b505050505050565b60805160a05160c05160e051610100516101205161014051613487620008fa600039600081816107150152610c4e015260008181610f75015281816110d0015261115301526000818161065201528181610fbb01526110940152600081816106760152610ca2015260008181610f5101526113f501526000818161069a01526108c00152600081816112c0015261136c01526134876000f3fe6080604052600436106101185760003560e01c80634585e33b116100a05780637b103999116100645780637b103999146103c9578063d004f0f7146103f4578063d37191de14610431578063dce1137514610461578063f9ae27f91461048c5761011f565b80634585e33b146102ba5780634b56a42e146102e35780635727977c146103215780637184af9914610360578063741bef1a1461039e5761011f565b80632808e6c8116100e75780632808e6c8146101cb5780632b7ac3f3146101f6578063341edfb4146102215780633f20b4c91461025157806340691db41461027c5761011f565b806308c9e24e146101215780630d641e9c1461014c5780631b83ca1e146101755780631c4695f4146101a05761011f565b3661011f57005b005b34801561012d57600080fd5b506101366104c9565b60405161014391906119d0565b60405180910390f35b34801561015857600080fd5b50610173600480360381019061016e9190611a3c565b610502565b005b34801561018157600080fd5b5061018a610617565b60405161019791906119d0565b60405180910390f35b3480156101ac57600080fd5b506101b5610650565b6040516101c29190611ae8565b60405180910390f35b3480156101d757600080fd5b506101e0610674565b6040516101ed9190611b24565b60405180910390f35b34801561020257600080fd5b5061020b610698565b6040516102189190611b60565b60405180910390f35b61023b60048036038101906102369190611cee565b6106bc565b6040516102489190611d8c565b60405180910390f35b34801561025d57600080fd5b50610266610713565b6040516102739190611db6565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190611df6565b610737565b6040516102b1929190611ec3565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc9190611f53565b6107ff565b005b3480156102ef57600080fd5b5061030a60048036038101906103059190611ff6565b610bc5565b604051610318929190611ec3565b60405180910390f35b34801561032d57600080fd5b5061034860048036038101906103439190611cee565b610bfe565b60405161035793929190612090565b60405180910390f35b34801561036c57600080fd5b5061038760048036038101906103829190611a3c565b610c9b565b6040516103959291906120c7565b60405180910390f35b3480156103aa57600080fd5b506103b3610f4f565b6040516103c09190611b24565b60405180910390f35b3480156103d557600080fd5b506103de610f73565b6040516103eb91906120ff565b60405180910390f35b34801561040057600080fd5b5061041b6004803603810190610416919061211a565b610f97565b6040516104289190611d8c565b60405180910390f35b61044b60048036038101906104469190611cee565b611277565b6040516104589190611d8c565b60405180910390f35b34801561046d57600080fd5b5061047661136a565b604051610483919061217b565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae9190611cee565b61138e565b6040516104c09190611d8c565b60405180910390f35b6040518060400160405280600781526020017f666565644944730000000000000000000000000000000000000000000000000081525081565b600360010160009054906101000a900460ff16806105715750600360010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156105b55780336040517f9b4aa41a0000000000000000000000000000000000000000000000000000000081526004016105ac929190612196565b60405180910390fd5b806003600001819055506001600360010160006101000a81548160ff0219169083151502179055507f798ebf3f446df2830703de9a7fec3c112e8699dd7ffadfe56045b7d85bcb92dc8160405161060c9190611db6565b60405180910390a150565b6040518060400160405280600981526020017f74696d657374616d70000000000000000000000000000000000000000000000081525081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006106ca858585856116bc565b7fb78272e98de6052aa2c197393914a1fe8ae1cf8dc760f1b74c6da3c2ff7fd10f858585856040516106ff94939291906121bf565b60405180910390a160019050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600060606040518060400160405280600781526020017f666565644944730000000000000000000000000000000000000000000000000081525060006040518060400160405280600981526020017f74696d657374616d7000000000000000000000000000000000000000000000008152508660200135878060e001906107be919061221a565b6040517ff055e4a20000000000000000000000000000000000000000000000000000000081526004016107f69695949392919061247a565b60405180910390fd5b60005a9050600080848481019061081691906125cc565b91509150600080600080848060200190518101906108349190612707565b935093509350935060008061084b86868686611746565b91509150600160028111156108635761086261278a565b5b8160000151600281111561087a5761087961278a565b5b146108bc57816040517ff78906140000000000000000000000000000000000000000000000000000000081526004016108b391906127b9565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167360a0e67c3c9f68b751af29a59fa98d99adcf7425630eb4fdea90918b6040518363ffffffff1660e01b815260040161092f9291906128ef565b60e060405180830381865af415801561094c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109709190612ac9565b905060008773ffffffffffffffffffffffffffffffffffffffff16633196b7c6604051806060016040528060008152602001600060018111156109b6576109b561278a565b5b81526020018a8152506040518263ffffffff1660e01b81526004016109db9190612bf1565b6020604051808303816000875af11580156109fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1e9190612c3f565b905080610a6257836040517f63e64d49000000000000000000000000000000000000000000000000000000008152600401610a5991906127b9565b60405180910390fd5b6002733f7e36ce47727e7dc0ec53045b8f8e1c1ecbd4e463b7d865c29091866040518363ffffffff1660e01b8152600401610a9e929190612c82565b602060405180830381865af4158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf9190612c3f565b508260400151735aa8cec02b28b60378adc6185eb5313ef64cf81b6375dc7d8c3a5a8f610b0c9190612cda565b610b169190612d0e565b6040518263ffffffff1660e01b8152600401610b329190612d5f565b602060405180830381865af4158015610b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b739190612d7a565b1115610bb657836040517ff1d3ccc5000000000000000000000000000000000000000000000000000000008152600401610bad91906127b9565b60405180910390fd5b50505050505050505050505050565b60006060600186868686604051602001610be29493929190612efa565b6040516020818303038152906040529150915094509492505050565b6000806000806000610c1289898989611746565b91509150600060016002811115610c2c57610c2b61278a565b5b82600001516002811115610c4357610c4261278a565b5b148015610c7f5750437f00000000000000000000000000000000000000000000000000000000000000008360200151610c7c9190612f35565b11155b9050828183604001519550955095505050509450945094915050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190612fd7565b5050509150506000735aa8cec02b28b60378adc6185eb5313ef64cf81b63d30c3672735aa8cec02b28b60378adc6185eb5313ef64cf81b63d30c3672735aa8cec02b28b60378adc6185eb5313ef64cf81b6339c372906040518163ffffffff1660e01b8152600401602060405180830381865af4158015610db4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd89190612d7a565b735aa8cec02b28b60378adc6185eb5313ef64cf81b6352c24e4c60016040518263ffffffff1660e01b8152600401610e10919061308d565b602060405180830381865af4158015610e2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e519190612d7a565b610e5b9190612f35565b89610e669190612d0e565b6040518263ffffffff1660e01b8152600401610e829190612d5f565b602060405180830381865af4158015610e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec39190612d7a565b84610ece9190612d0e565b6040518263ffffffff1660e01b8152600401610eea9190612d5f565b602060405180830381865af4158015610f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2b9190612d7a565b90506000600547610f3c91906130d7565b9050818110158294509450505050915091565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610fa161185e565b600080610fad84610c9b565b9150915081156112635760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd8730886040518463ffffffff1660e01b815260040161101693929190613108565b6020604051808303816000875af1158015611035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110599190612c3f565b905080611092576040517fe069624900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000876040518363ffffffff1660e01b815260040161110d92919061313f565b6020604051808303816000875af115801561112c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111509190612c3f565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663948108f760036000015461119c886118a4565b6040518363ffffffff1660e01b81526004016111b992919061318f565b600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505060008673ffffffffffffffffffffffffffffffffffffffff1683604051611211906131e9565b60006040518083038185875af1925050503d806000811461124e576040519150601f19603f3d011682016040523d82523d6000602084013e611253565b606091505b5050905080945050505050611269565b81925050505b611271611904565b92915050565b60008034036112b2576040517fcadc3eda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112be858585856116bc565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a27c7420868686866040518563ffffffff1660e01b815260040161131d94939291906121bf565b6020604051808303816000875af115801561133c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113609190612c3f565b9050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061139861185e565b60008060006113a988888888610bfe565b925092509250816113f157826040517ff78906140000000000000000000000000000000000000000000000000000000081526004016113e891906127b9565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561145e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114829190612fd7565b50505091505060008973ffffffffffffffffffffffffffffffffffffffff16633196b7c660405180606001604052808581526020016001808111156114ca576114c961278a565b5b81526020018c8152506040518263ffffffff1660e01b81526004016114ef9190612bf1565b6020604051808303816000875af115801561150e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115329190612c3f565b90508061157657846040517f63e64d4900000000000000000000000000000000000000000000000000000000815260040161156d91906127b9565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff168460405161159c906131e9565b60006040518083038185875af1925050503d80600081146115d9576040519150601f19603f3d011682016040523d82523d6000602084013e6115de565b606091505b505090508061162457856040517f63e64d4900000000000000000000000000000000000000000000000000000000815260040161161b91906127b9565b60405180910390fd5b6002733f7e36ce47727e7dc0ec53045b8f8e1c1ecbd4e463b7d865c29091886040518363ffffffff1660e01b8152600401611660929190612c82565b602060405180830381865af415801561167d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a19190612c3f565b50600196505050505050506116b4611904565b949350505050565b6002733f7e36ce47727e7dc0ec53045b8f8e1c1ecbd4e463b9dc561e9091868686866040518663ffffffff1660e01b81526004016116fe959493929190613257565b602060405180830381865af415801561171b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173f9190612c3f565b5050505050565b600061175061190d565b6000733f7e36ce47727e7dc0ec53045b8f8e1c1ecbd4e463870ff518888888886040518563ffffffff1660e01b815260040161178f94939291906132b1565b602060405180830381865af41580156117ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d091906132fd565b9050806002733f7e36ce47727e7dc0ec53045b8f8e1c1ecbd4e463b40ca1499091846040518363ffffffff1660e01b815260040161180f929190612c82565b606060405180830381865af415801561182c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185091906133b3565b925092505094509492505050565b60026001540361189a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b60006bffffffffffffffffffffffff80168211156118fc576060826040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004016118f3929190613428565b60405180910390fd5b819050919050565b60018081905550565b60405180606001604052806000600281111561192c5761192b61278a565b5b815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b8381101561197a57808201518184015260208101905061195f565b60008484015250505050565b6000601f19601f8301169050919050565b60006119a282611940565b6119ac818561194b565b93506119bc81856020860161195c565b6119c581611986565b840191505092915050565b600060208201905081810360008301526119ea8184611997565b905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b611a1981611a06565b8114611a2457600080fd5b50565b600081359050611a3681611a10565b92915050565b600060208284031215611a5257611a516119fc565b5b6000611a6084828501611a27565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611aae611aa9611aa484611a69565b611a89565b611a69565b9050919050565b6000611ac082611a93565b9050919050565b6000611ad282611ab5565b9050919050565b611ae281611ac7565b82525050565b6000602082019050611afd6000830184611ad9565b92915050565b6000611b0e82611ab5565b9050919050565b611b1e81611b03565b82525050565b6000602082019050611b396000830184611b15565b92915050565b6000611b4a82611ab5565b9050919050565b611b5a81611b3f565b82525050565b6000602082019050611b756000830184611b51565b92915050565b6000611b8682611a69565b9050919050565b611b9681611b7b565b8114611ba157600080fd5b50565b600081359050611bb381611b8d565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611bfb82611986565b810181811067ffffffffffffffff82111715611c1a57611c19611bc3565b5b80604052505050565b6000611c2d6119f2565b9050611c398282611bf2565b919050565b600067ffffffffffffffff821115611c5957611c58611bc3565b5b611c6282611986565b9050602081019050919050565b82818337600083830152505050565b6000611c91611c8c84611c3e565b611c23565b905082815260208101848484011115611cad57611cac611bbe565b5b611cb8848285611c6f565b509392505050565b600082601f830112611cd557611cd4611bb9565b5b8135611ce5848260208601611c7e565b91505092915050565b60008060008060808587031215611d0857611d076119fc565b5b6000611d1687828801611ba4565b945050602085013567ffffffffffffffff811115611d3757611d36611a01565b5b611d4387828801611cc0565b9350506040611d5487828801611a27565b9250506060611d6587828801611ba4565b91505092959194509250565b60008115159050919050565b611d8681611d71565b82525050565b6000602082019050611da16000830184611d7d565b92915050565b611db081611a06565b82525050565b6000602082019050611dcb6000830184611da7565b92915050565b600080fd5b60006101008284031215611ded57611dec611dd1565b5b81905092915050565b60008060408385031215611e0d57611e0c6119fc565b5b600083013567ffffffffffffffff811115611e2b57611e2a611a01565b5b611e3785828601611dd6565b925050602083013567ffffffffffffffff811115611e5857611e57611a01565b5b611e6485828601611cc0565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000611e9582611e6e565b611e9f8185611e79565b9350611eaf81856020860161195c565b611eb881611986565b840191505092915050565b6000604082019050611ed86000830185611d7d565b8181036020830152611eea8184611e8a565b90509392505050565b600080fd5b600080fd5b60008083601f840112611f1357611f12611bb9565b5b8235905067ffffffffffffffff811115611f3057611f2f611ef3565b5b602083019150836001820283011115611f4c57611f4b611ef8565b5b9250929050565b60008060208385031215611f6a57611f696119fc565b5b600083013567ffffffffffffffff811115611f8857611f87611a01565b5b611f9485828601611efd565b92509250509250929050565b60008083601f840112611fb657611fb5611bb9565b5b8235905067ffffffffffffffff811115611fd357611fd2611ef3565b5b602083019150836020820283011115611fef57611fee611ef8565b5b9250929050565b600080600080604085870312156120105761200f6119fc565b5b600085013567ffffffffffffffff81111561202e5761202d611a01565b5b61203a87828801611fa0565b9450945050602085013567ffffffffffffffff81111561205d5761205c611a01565b5b61206987828801611efd565b925092505092959194509250565b6000819050919050565b61208a81612077565b82525050565b60006060820190506120a56000830186612081565b6120b26020830185611d7d565b6120bf6040830184611da7565b949350505050565b60006040820190506120dc6000830185611d7d565b6120e96020830184611da7565b9392505050565b6120f981611b7b565b82525050565b600060208201905061211460008301846120f0565b92915050565b60008060408385031215612131576121306119fc565b5b600061213f85828601611ba4565b925050602061215085828601611a27565b9150509250929050565b600061216582611ab5565b9050919050565b6121758161215a565b82525050565b6000602082019050612190600083018461216c565b92915050565b60006040820190506121ab6000830185611da7565b6121b860208301846120f0565b9392505050565b60006080820190506121d460008301876120f0565b81810360208301526121e68186611e8a565b90506121f56040830185611da7565b61220260608301846120f0565b95945050505050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126122375761223661220b565b5b80840192508235915067ffffffffffffffff82111561225957612258612210565b5b60208301925060018202360383131561227557612274612215565b5b509250929050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806122f557607f821691505b602082108103612308576123076122ae565b5b50919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008154612341816122dd565b61234b818661230e565b94506001821660008114612366576001811461237c576123af565b60ff1983168652811515602002860193506123af565b6123858561231f565b60005b838110156123a757815481890152600182019150602081019050612388565b808801955050505b50505092915050565b60006123c48383612334565b905092915050565b6000600182019050919050565b60006123e48261227d565b6123ee8185612288565b93508360208202850161240085612299565b8060005b8581101561243b5784840389528161241c85826123b8565b9450612427836123cc565b925060208a01995050600181019050612404565b50829750879550505050505092915050565b60006124598385611e79565b9350612466838584611c6f565b61246f83611986565b840190509392505050565b600060a08201905081810360008301526124948189611997565b905081810360208301526124a881886123d9565b905081810360408301526124bc8187611997565b90506124cb6060830186611da7565b81810360808301526124de81848661244d565b9050979650505050505050565b600067ffffffffffffffff82111561250657612505611bc3565b5b602082029050602081019050919050565b600061252a612525846124eb565b611c23565b9050808382526020820190506020840283018581111561254d5761254c611ef8565b5b835b8181101561259457803567ffffffffffffffff81111561257257612571611bb9565b5b80860161257f8982611cc0565b8552602085019450505060208101905061254f565b5050509392505050565b600082601f8301126125b3576125b2611bb9565b5b81356125c3848260208601612517565b91505092915050565b600080604083850312156125e3576125e26119fc565b5b600083013567ffffffffffffffff81111561260157612600611a01565b5b61260d8582860161259e565b925050602083013567ffffffffffffffff81111561262e5761262d611a01565b5b61263a85828601611cc0565b9150509250929050565b600061264f82611a69565b9050919050565b61265f81612644565b811461266a57600080fd5b50565b60008151905061267c81612656565b92915050565b600061269561269084611c3e565b611c23565b9050828152602081018484840111156126b1576126b0611bbe565b5b6126bc84828561195c565b509392505050565b600082601f8301126126d9576126d8611bb9565b5b81516126e9848260208601612682565b91505092915050565b60008151905061270181611a10565b92915050565b60008060008060808587031215612721576127206119fc565b5b600061272f8782880161266d565b945050602085015167ffffffffffffffff8111156127505761274f611a01565b5b61275c878288016126c4565b935050604061276d878288016126f2565b925050606061277e8782880161266d565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020820190506127ce6000830184612081565b92915050565b6127dd81611b3f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b600061282b82611e6e565b612835818561280f565b935061284581856020860161195c565b61284e81611986565b840191505092915050565b60006128658383612820565b905092915050565b6000602082019050919050565b6000612885826127e3565b61288f81856127ee565b9350836020820285016128a1856127ff565b8060005b858110156128dd57848403895281516128be8582612859565b94506128c98361286d565b925060208a019950506001810190506128a5565b50829750879550505050505092915050565b600060408201905061290460008301856127d4565b8181036020830152612916818461287a565b90509392505050565b600080fd5b61292d81612077565b811461293857600080fd5b50565b60008151905061294a81612924565b92915050565b600063ffffffff82169050919050565b61296981612950565b811461297457600080fd5b50565b60008151905061298681612960565b92915050565b600077ffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6129b98161298c565b81146129c457600080fd5b50565b6000815190506129d6816129b0565b92915050565b60008160170b9050919050565b6129f2816129dc565b81146129fd57600080fd5b50565b600081519050612a0f816129e9565b92915050565b600060e08284031215612a2b57612a2a61291f565b5b612a3560e0611c23565b90506000612a458482850161293b565b6000830152506020612a5984828501612977565b6020830152506040612a6d84828501612977565b6040830152506060612a81848285016129c7565b6060830152506080612a95848285016129c7565b60808301525060a0612aa984828501612977565b60a08301525060c0612abd84828501612a00565b60c08301525092915050565b600060e08284031215612adf57612ade6119fc565b5b6000612aed84828501612a15565b91505092915050565b6000819050919050565b612b0981612af6565b82525050565b60028110612b2057612b1f61278a565b5b50565b6000819050612b3182612b0f565b919050565b6000612b4182612b23565b9050919050565b612b5181612b36565b82525050565b600082825260208201905092915050565b6000612b7382611e6e565b612b7d8185612b57565b9350612b8d81856020860161195c565b612b9681611986565b840191505092915050565b6000606083016000830151612bb96000860182612b00565b506020830151612bcc6020860182612b48565b5060408301518482036040860152612be48282612b68565b9150508091505092915050565b60006020820190508181036000830152612c0b8184612ba1565b905092915050565b612c1c81611d71565b8114612c2757600080fd5b50565b600081519050612c3981612c13565b92915050565b600060208284031215612c5557612c546119fc565b5b6000612c6384828501612c2a565b91505092915050565b8082525050565b612c7c81612077565b82525050565b6000604082019050612c976000830185612c6c565b612ca46020830184612c73565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ce582611a06565b9150612cf083611a06565b9250828203905081811115612d0857612d07612cab565b5b92915050565b6000612d1982611a06565b9150612d2483611a06565b9250828202612d3281611a06565b91508282048414831517612d4957612d48612cab565b5b5092915050565b612d5981611a06565b82525050565b6000602082019050612d746000830184612d50565b92915050565b600060208284031215612d9057612d8f6119fc565b5b6000612d9e848285016126f2565b91505092915050565b600082825260208201905092915050565b6000819050919050565b6000612dce8385612b57565b9350612ddb838584611c6f565b612de483611986565b840190509392505050565b6000612dfc848484612dc2565b90509392505050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112612e3157612e30612e0f565b5b83810192508235915060208301925067ffffffffffffffff821115612e5957612e58612e05565b5b600182023603831315612e6f57612e6e612e0a565b5b509250929050565b6000602082019050919050565b6000612e908385612da7565b935083602084028501612ea284612db8565b8060005b87811015612ee8578484038952612ebd8284612e14565b612ec8868284612def565b9550612ed384612e77565b935060208b019a505050600181019050612ea6565b50829750879450505050509392505050565b60006040820190508181036000830152612f15818688612e84565b90508181036020830152612f2a81848661244d565b905095945050505050565b6000612f4082611a06565b9150612f4b83611a06565b9250828201905080821115612f6357612f62612cab565b5b92915050565b600069ffffffffffffffffffff82169050919050565b612f8881612f69565b8114612f9357600080fd5b50565b600081519050612fa581612f7f565b92915050565b612fb481612af6565b8114612fbf57600080fd5b50565b600081519050612fd181612fab565b92915050565b600080600080600060a08688031215612ff357612ff26119fc565b5b600061300188828901612f96565b955050602061301288828901612fc2565b9450506040613023888289016126f2565b9350506060613034888289016126f2565b925050608061304588828901612f96565b9150509295509295909350565b6000819050919050565b600061307761307261306d84613052565b611a89565b611a06565b9050919050565b6130878161305c565b82525050565b60006020820190506130a2600083018461307e565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130e282611a06565b91506130ed83611a06565b9250826130fd576130fc6130a8565b5b828204905092915050565b600060608201905061311d60008301866120f0565b61312a60208301856120f0565b6131376040830184611da7565b949350505050565b600060408201905061315460008301856120f0565b6131616020830184611da7565b9392505050565b60006bffffffffffffffffffffffff82169050919050565b61318981613168565b82525050565b60006040820190506131a46000830185611da7565b6131b16020830184613180565b9392505050565b600081905092915050565b50565b60006131d36000836131b8565b91506131de826131c3565b600082019050919050565b60006131f4826131c6565b9150819050919050565b61320781611b7b565b82525050565b600082825260208201905092915050565b600061322982611e6e565b613233818561320d565b935061324381856020860161195c565b61324c81611986565b840191505092915050565b600060a08201905061326c6000830188612c6c565b61327960208301876131fe565b818103604083015261328b818661321e565b905061329a6060830185612d50565b6132a760808301846131fe565b9695505050505050565b60006080820190506132c660008301876131fe565b81810360208301526132d8818661321e565b90506132e76040830185612d50565b6132f460608301846131fe565b95945050505050565b600060208284031215613313576133126119fc565b5b60006133218482850161293b565b91505092915050565b6003811061333757600080fd5b50565b6000815190506133498161332a565b92915050565b6000606082840312156133655761336461291f565b5b61336f6060611c23565b9050600061337f8482850161333a565b6000830152506020613393848285016126f2565b60208301525060406133a7848285016126f2565b60408301525092915050565b6000606082840312156133c9576133c86119fc565b5b60006133d78482850161334f565b91505092915050565b6000819050919050565b600060ff82169050919050565b600061341261340d613408846133e0565b611a89565b6133ea565b9050919050565b613422816133f7565b82525050565b600060408201905061343d6000830185613419565b61344a6020830184611da7565b939250505056fea26469706673582212209f34224de3185d22272224495bd1c53f4450a01d1b0e7aa772412e4315eb8f0664736f6c63430008140033", + "addr": "0xe857D2f4314AFd14910D92Df1B321AFAb002B417", + "code": "0x6101606040523480156200001257600080fd5b5060405162003d8738038062003d87833981810160405281019062000038919062000450565b87878787878787878560008190806001815401808255809150506001900390600052602060002001600090919091909150908162000077919062000779565b5050600180819055508773ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508673ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250508373ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff16815250508061014081815250508173ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff168152505033600360010160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050505050505050505062000860565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200025e8262000231565b9050919050565b620002708162000251565b81146200027c57600080fd5b50565b600081519050620002908162000265565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002eb82620002a0565b810181811067ffffffffffffffff821117156200030d576200030c620002b1565b5b80604052505050565b6000620003226200021d565b9050620003308282620002e0565b919050565b600067ffffffffffffffff821115620003535762000352620002b1565b5b6200035e82620002a0565b9050602081019050919050565b60005b838110156200038b5780820151818401526020810190506200036e565b60008484015250505050565b6000620003ae620003a88462000335565b62000316565b905082815260208101848484011115620003cd57620003cc6200029b565b5b620003da8482856200036b565b509392505050565b600082601f830112620003fa57620003f962000296565b5b81516200040c84826020860162000397565b91505092915050565b6000819050919050565b6200042a8162000415565b81146200043657600080fd5b50565b6000815190506200044a816200041f565b92915050565b600080600080600080600080610100898b03121562000474576200047362000227565b5b6000620004848b828c016200027f565b9850506020620004978b828c016200027f565b975050604089015167ffffffffffffffff811115620004bb57620004ba6200022c565b5b620004c98b828c01620003e2565b9650506060620004dc8b828c016200027f565b9550506080620004ef8b828c016200027f565b94505060a0620005028b828c016200027f565b93505060c0620005158b828c016200027f565b92505060e0620005288b828c0162000439565b9150509295985092959890939650565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200058b57607f821691505b602082108103620005a157620005a062000543565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200060b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005cc565b620006178683620005cc565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200065a620006546200064e8462000415565b6200062f565b62000415565b9050919050565b6000819050919050565b620006768362000639565b6200068e620006858262000661565b848454620005d9565b825550505050565b600090565b620006a562000696565b620006b28184846200066b565b505050565b5b81811015620006da57620006ce6000826200069b565b600181019050620006b8565b5050565b601f8211156200072957620006f381620005a7565b620006fe84620005bc565b810160208510156200070e578190505b620007266200071d85620005bc565b830182620006b7565b50505b505050565b600082821c905092915050565b60006200074e600019846008026200072e565b1980831691505092915050565b60006200076983836200073b565b9150826002028217905092915050565b620007848262000538565b67ffffffffffffffff811115620007a0576200079f620002b1565b5b620007ac825462000572565b620007b9828285620006de565b600060209050601f831160018114620007f15760008415620007dc578287015190505b620007e885826200075b565b86555062000858565b601f1984166200080186620005a7565b60005b828110156200082b5784890151825560018201915060208501945060208101905062000804565b868310156200084b578489015162000847601f8916826200073b565b8355505b6001600288020188555050505b505050505050565b60805160a05160c05160e05161010051610120516101405161348d620008fa600039600081816107150152610c54015260008181610f7b015281816110d6015261115901526000818161065201528181610fc1015261109a0152600081816106760152610ca8015260008181610f5701526113fb01526000818161069a01526108c00152600081816112c60152611372015261348d6000f3fe6080604052600436106101185760003560e01c80634585e33b116100a05780637b103999116100645780637b103999146103c9578063d004f0f7146103f4578063d37191de14610431578063dce1137514610461578063f9ae27f91461048c5761011f565b80634585e33b146102ba5780634b56a42e146102e35780635727977c146103215780637184af9914610360578063741bef1a1461039e5761011f565b80632808e6c8116100e75780632808e6c8146101cb5780632b7ac3f3146101f6578063341edfb4146102215780633f20b4c91461025157806340691db41461027c5761011f565b806308c9e24e146101215780630d641e9c1461014c5780631b83ca1e146101755780631c4695f4146101a05761011f565b3661011f57005b005b34801561012d57600080fd5b506101366104c9565b60405161014391906119d6565b60405180910390f35b34801561015857600080fd5b50610173600480360381019061016e9190611a42565b610502565b005b34801561018157600080fd5b5061018a610617565b60405161019791906119d6565b60405180910390f35b3480156101ac57600080fd5b506101b5610650565b6040516101c29190611aee565b60405180910390f35b3480156101d757600080fd5b506101e0610674565b6040516101ed9190611b2a565b60405180910390f35b34801561020257600080fd5b5061020b610698565b6040516102189190611b66565b60405180910390f35b61023b60048036038101906102369190611cf4565b6106bc565b6040516102489190611d92565b60405180910390f35b34801561025d57600080fd5b50610266610713565b6040516102739190611dbc565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190611dfc565b610737565b6040516102b1929190611ec9565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc9190611f59565b6107ff565b005b3480156102ef57600080fd5b5061030a60048036038101906103059190611ffc565b610bcb565b604051610318929190611ec9565b60405180910390f35b34801561032d57600080fd5b5061034860048036038101906103439190611cf4565b610c04565b60405161035793929190612096565b60405180910390f35b34801561036c57600080fd5b5061038760048036038101906103829190611a42565b610ca1565b6040516103959291906120cd565b60405180910390f35b3480156103aa57600080fd5b506103b3610f55565b6040516103c09190611b2a565b60405180910390f35b3480156103d557600080fd5b506103de610f79565b6040516103eb9190612105565b60405180910390f35b34801561040057600080fd5b5061041b60048036038101906104169190612120565b610f9d565b6040516104289190611d92565b60405180910390f35b61044b60048036038101906104469190611cf4565b61127d565b6040516104589190611d92565b60405180910390f35b34801561046d57600080fd5b50610476611370565b6040516104839190612181565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae9190611cf4565b611394565b6040516104c09190611d92565b60405180910390f35b6040518060400160405280600781526020017f666565644944730000000000000000000000000000000000000000000000000081525081565b600360010160009054906101000a900460ff16806105715750600360010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156105b55780336040517f9b4aa41a0000000000000000000000000000000000000000000000000000000081526004016105ac92919061219c565b60405180910390fd5b806003600001819055506001600360010160006101000a81548160ff0219169083151502179055507f798ebf3f446df2830703de9a7fec3c112e8699dd7ffadfe56045b7d85bcb92dc8160405161060c9190611dbc565b60405180910390a150565b6040518060400160405280600981526020017f74696d657374616d70000000000000000000000000000000000000000000000081525081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006106ca858585856116c2565b7fb78272e98de6052aa2c197393914a1fe8ae1cf8dc760f1b74c6da3c2ff7fd10f858585856040516106ff94939291906121c5565b60405180910390a160019050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600060606040518060400160405280600781526020017f666565644944730000000000000000000000000000000000000000000000000081525060006040518060400160405280600981526020017f74696d657374616d7000000000000000000000000000000000000000000000008152508660200135878060e001906107be9190612220565b6040517ff055e4a20000000000000000000000000000000000000000000000000000000081526004016107f696959493929190612480565b60405180910390fd5b60005a9050600080848481019061081691906125d2565b9150915060008060008084806020019051810190610834919061270d565b935093509350935060008061084b8686868661174c565b915091506001600281111561086357610862612790565b5b8160000151600281111561087a57610879612790565b5b146108bc57816040517ff78906140000000000000000000000000000000000000000000000000000000081526004016108b391906127bf565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167360a0e67c3c9f68b751af29a59fa98d99adcf7425630eb4fdea90918b6040518363ffffffff1660e01b815260040161092f9291906128f5565b60e060405180830381865af415801561094c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109709190612acf565b905060008773ffffffffffffffffffffffffffffffffffffffff16633196b7c660405180606001604052808560c0015160170b8152602001600060018111156109bc576109bb612790565b5b81526020018a8152506040518263ffffffff1660e01b81526004016109e19190612bf7565b6020604051808303816000875af1158015610a00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a249190612c45565b905080610a6857836040517f63e64d49000000000000000000000000000000000000000000000000000000008152600401610a5f91906127bf565b60405180910390fd5b6002733f7e36ce47727e7dc0ec53045b8f8e1c1ecbd4e463b7d865c29091866040518363ffffffff1660e01b8152600401610aa4929190612c88565b602060405180830381865af4158015610ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae59190612c45565b508260400151735aa8cec02b28b60378adc6185eb5313ef64cf81b6375dc7d8c3a5a8f610b129190612ce0565b610b1c9190612d14565b6040518263ffffffff1660e01b8152600401610b389190612d65565b602060405180830381865af4158015610b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b799190612d80565b1115610bbc57836040517ff1d3ccc5000000000000000000000000000000000000000000000000000000008152600401610bb391906127bf565b60405180910390fd5b50505050505050505050505050565b60006060600186868686604051602001610be89493929190612f00565b6040516020818303038152906040529150915094509492505050565b6000806000806000610c188989898961174c565b91509150600060016002811115610c3257610c31612790565b5b82600001516002811115610c4957610c48612790565b5b148015610c855750437f00000000000000000000000000000000000000000000000000000000000000008360200151610c829190612f3b565b11155b9050828183604001519550955095505050509450945094915050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d359190612fdd565b5050509150506000735aa8cec02b28b60378adc6185eb5313ef64cf81b63d30c3672735aa8cec02b28b60378adc6185eb5313ef64cf81b63d30c3672735aa8cec02b28b60378adc6185eb5313ef64cf81b6339c372906040518163ffffffff1660e01b8152600401602060405180830381865af4158015610dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dde9190612d80565b735aa8cec02b28b60378adc6185eb5313ef64cf81b6352c24e4c60016040518263ffffffff1660e01b8152600401610e169190613093565b602060405180830381865af4158015610e33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e579190612d80565b610e619190612f3b565b89610e6c9190612d14565b6040518263ffffffff1660e01b8152600401610e889190612d65565b602060405180830381865af4158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190612d80565b84610ed49190612d14565b6040518263ffffffff1660e01b8152600401610ef09190612d65565b602060405180830381865af4158015610f0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f319190612d80565b90506000600547610f4291906130dd565b9050818110158294509450505050915091565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610fa7611864565b600080610fb384610ca1565b9150915081156112695760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd8730886040518463ffffffff1660e01b815260040161101c9392919061310e565b6020604051808303816000875af115801561103b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105f9190612c45565b905080611098576040517fe069624900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000876040518363ffffffff1660e01b8152600401611113929190613145565b6020604051808303816000875af1158015611132573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111569190612c45565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663948108f76003600001546111a2886118aa565b6040518363ffffffff1660e01b81526004016111bf929190613195565b600060405180830381600087803b1580156111d957600080fd5b505af11580156111ed573d6000803e3d6000fd5b5050505060008673ffffffffffffffffffffffffffffffffffffffff1683604051611217906131ef565b60006040518083038185875af1925050503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b505090508094505050505061126f565b81925050505b61127761190a565b92915050565b60008034036112b8576040517fcadc3eda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112c4858585856116c2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a27c7420868686866040518563ffffffff1660e01b815260040161132394939291906121c5565b6020604051808303816000875af1158015611342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113669190612c45565b9050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061139e611864565b60008060006113af88888888610c04565b925092509250816113f757826040517ff78906140000000000000000000000000000000000000000000000000000000081526004016113ee91906127bf565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015611464573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114889190612fdd565b50505091505060008973ffffffffffffffffffffffffffffffffffffffff16633196b7c660405180606001604052808581526020016001808111156114d0576114cf612790565b5b81526020018c8152506040518263ffffffff1660e01b81526004016114f59190612bf7565b6020604051808303816000875af1158015611514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115389190612c45565b90508061157c57846040517f63e64d4900000000000000000000000000000000000000000000000000000000815260040161157391906127bf565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16846040516115a2906131ef565b60006040518083038185875af1925050503d80600081146115df576040519150601f19603f3d011682016040523d82523d6000602084013e6115e4565b606091505b505090508061162a57856040517f63e64d4900000000000000000000000000000000000000000000000000000000815260040161162191906127bf565b60405180910390fd5b6002733f7e36ce47727e7dc0ec53045b8f8e1c1ecbd4e463b7d865c29091886040518363ffffffff1660e01b8152600401611666929190612c88565b602060405180830381865af4158015611683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a79190612c45565b50600196505050505050506116ba61190a565b949350505050565b6002733f7e36ce47727e7dc0ec53045b8f8e1c1ecbd4e463b9dc561e9091868686866040518663ffffffff1660e01b815260040161170495949392919061325d565b602060405180830381865af4158015611721573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117459190612c45565b5050505050565b6000611756611913565b6000733f7e36ce47727e7dc0ec53045b8f8e1c1ecbd4e463870ff518888888886040518563ffffffff1660e01b815260040161179594939291906132b7565b602060405180830381865af41580156117b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d69190613303565b9050806002733f7e36ce47727e7dc0ec53045b8f8e1c1ecbd4e463b40ca1499091846040518363ffffffff1660e01b8152600401611815929190612c88565b606060405180830381865af4158015611832573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185691906133b9565b925092505094509492505050565b6002600154036118a0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b60006bffffffffffffffffffffffff8016821115611902576060826040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004016118f992919061342e565b60405180910390fd5b819050919050565b60018081905550565b60405180606001604052806000600281111561193257611931612790565b5b815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015611980578082015181840152602081019050611965565b60008484015250505050565b6000601f19601f8301169050919050565b60006119a882611946565b6119b28185611951565b93506119c2818560208601611962565b6119cb8161198c565b840191505092915050565b600060208201905081810360008301526119f0818461199d565b905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b611a1f81611a0c565b8114611a2a57600080fd5b50565b600081359050611a3c81611a16565b92915050565b600060208284031215611a5857611a57611a02565b5b6000611a6684828501611a2d565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611ab4611aaf611aaa84611a6f565b611a8f565b611a6f565b9050919050565b6000611ac682611a99565b9050919050565b6000611ad882611abb565b9050919050565b611ae881611acd565b82525050565b6000602082019050611b036000830184611adf565b92915050565b6000611b1482611abb565b9050919050565b611b2481611b09565b82525050565b6000602082019050611b3f6000830184611b1b565b92915050565b6000611b5082611abb565b9050919050565b611b6081611b45565b82525050565b6000602082019050611b7b6000830184611b57565b92915050565b6000611b8c82611a6f565b9050919050565b611b9c81611b81565b8114611ba757600080fd5b50565b600081359050611bb981611b93565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611c018261198c565b810181811067ffffffffffffffff82111715611c2057611c1f611bc9565b5b80604052505050565b6000611c336119f8565b9050611c3f8282611bf8565b919050565b600067ffffffffffffffff821115611c5f57611c5e611bc9565b5b611c688261198c565b9050602081019050919050565b82818337600083830152505050565b6000611c97611c9284611c44565b611c29565b905082815260208101848484011115611cb357611cb2611bc4565b5b611cbe848285611c75565b509392505050565b600082601f830112611cdb57611cda611bbf565b5b8135611ceb848260208601611c84565b91505092915050565b60008060008060808587031215611d0e57611d0d611a02565b5b6000611d1c87828801611baa565b945050602085013567ffffffffffffffff811115611d3d57611d3c611a07565b5b611d4987828801611cc6565b9350506040611d5a87828801611a2d565b9250506060611d6b87828801611baa565b91505092959194509250565b60008115159050919050565b611d8c81611d77565b82525050565b6000602082019050611da76000830184611d83565b92915050565b611db681611a0c565b82525050565b6000602082019050611dd16000830184611dad565b92915050565b600080fd5b60006101008284031215611df357611df2611dd7565b5b81905092915050565b60008060408385031215611e1357611e12611a02565b5b600083013567ffffffffffffffff811115611e3157611e30611a07565b5b611e3d85828601611ddc565b925050602083013567ffffffffffffffff811115611e5e57611e5d611a07565b5b611e6a85828601611cc6565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000611e9b82611e74565b611ea58185611e7f565b9350611eb5818560208601611962565b611ebe8161198c565b840191505092915050565b6000604082019050611ede6000830185611d83565b8181036020830152611ef08184611e90565b90509392505050565b600080fd5b600080fd5b60008083601f840112611f1957611f18611bbf565b5b8235905067ffffffffffffffff811115611f3657611f35611ef9565b5b602083019150836001820283011115611f5257611f51611efe565b5b9250929050565b60008060208385031215611f7057611f6f611a02565b5b600083013567ffffffffffffffff811115611f8e57611f8d611a07565b5b611f9a85828601611f03565b92509250509250929050565b60008083601f840112611fbc57611fbb611bbf565b5b8235905067ffffffffffffffff811115611fd957611fd8611ef9565b5b602083019150836020820283011115611ff557611ff4611efe565b5b9250929050565b6000806000806040858703121561201657612015611a02565b5b600085013567ffffffffffffffff81111561203457612033611a07565b5b61204087828801611fa6565b9450945050602085013567ffffffffffffffff81111561206357612062611a07565b5b61206f87828801611f03565b925092505092959194509250565b6000819050919050565b6120908161207d565b82525050565b60006060820190506120ab6000830186612087565b6120b86020830185611d83565b6120c56040830184611dad565b949350505050565b60006040820190506120e26000830185611d83565b6120ef6020830184611dad565b9392505050565b6120ff81611b81565b82525050565b600060208201905061211a60008301846120f6565b92915050565b6000806040838503121561213757612136611a02565b5b600061214585828601611baa565b925050602061215685828601611a2d565b9150509250929050565b600061216b82611abb565b9050919050565b61217b81612160565b82525050565b60006020820190506121966000830184612172565b92915050565b60006040820190506121b16000830185611dad565b6121be60208301846120f6565b9392505050565b60006080820190506121da60008301876120f6565b81810360208301526121ec8186611e90565b90506121fb6040830185611dad565b61220860608301846120f6565b95945050505050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261223d5761223c612211565b5b80840192508235915067ffffffffffffffff82111561225f5761225e612216565b5b60208301925060018202360383131561227b5761227a61221b565b5b509250929050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806122fb57607f821691505b60208210810361230e5761230d6122b4565b5b50919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008154612347816122e3565b6123518186612314565b9450600182166000811461236c5760018114612382576123b5565b60ff1983168652811515602002860193506123b5565b61238b85612325565b60005b838110156123ad5781548189015260018201915060208101905061238e565b808801955050505b50505092915050565b60006123ca838361233a565b905092915050565b6000600182019050919050565b60006123ea82612283565b6123f4818561228e565b9350836020820285016124068561229f565b8060005b858110156124415784840389528161242285826123be565b945061242d836123d2565b925060208a0199505060018101905061240a565b50829750879550505050505092915050565b600061245f8385611e7f565b935061246c838584611c75565b6124758361198c565b840190509392505050565b600060a082019050818103600083015261249a818961199d565b905081810360208301526124ae81886123df565b905081810360408301526124c2818761199d565b90506124d16060830186611dad565b81810360808301526124e4818486612453565b9050979650505050505050565b600067ffffffffffffffff82111561250c5761250b611bc9565b5b602082029050602081019050919050565b600061253061252b846124f1565b611c29565b9050808382526020820190506020840283018581111561255357612552611efe565b5b835b8181101561259a57803567ffffffffffffffff81111561257857612577611bbf565b5b8086016125858982611cc6565b85526020850194505050602081019050612555565b5050509392505050565b600082601f8301126125b9576125b8611bbf565b5b81356125c984826020860161251d565b91505092915050565b600080604083850312156125e9576125e8611a02565b5b600083013567ffffffffffffffff81111561260757612606611a07565b5b612613858286016125a4565b925050602083013567ffffffffffffffff81111561263457612633611a07565b5b61264085828601611cc6565b9150509250929050565b600061265582611a6f565b9050919050565b6126658161264a565b811461267057600080fd5b50565b6000815190506126828161265c565b92915050565b600061269b61269684611c44565b611c29565b9050828152602081018484840111156126b7576126b6611bc4565b5b6126c2848285611962565b509392505050565b600082601f8301126126df576126de611bbf565b5b81516126ef848260208601612688565b91505092915050565b60008151905061270781611a16565b92915050565b6000806000806080858703121561272757612726611a02565b5b600061273587828801612673565b945050602085015167ffffffffffffffff81111561275657612755611a07565b5b612762878288016126ca565b9350506040612773878288016126f8565b925050606061278487828801612673565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020820190506127d46000830184612087565b92915050565b6127e381611b45565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b600061283182611e74565b61283b8185612815565b935061284b818560208601611962565b6128548161198c565b840191505092915050565b600061286b8383612826565b905092915050565b6000602082019050919050565b600061288b826127e9565b61289581856127f4565b9350836020820285016128a785612805565b8060005b858110156128e357848403895281516128c4858261285f565b94506128cf83612873565b925060208a019950506001810190506128ab565b50829750879550505050505092915050565b600060408201905061290a60008301856127da565b818103602083015261291c8184612880565b90509392505050565b600080fd5b6129338161207d565b811461293e57600080fd5b50565b6000815190506129508161292a565b92915050565b600063ffffffff82169050919050565b61296f81612956565b811461297a57600080fd5b50565b60008151905061298c81612966565b92915050565b600077ffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6129bf81612992565b81146129ca57600080fd5b50565b6000815190506129dc816129b6565b92915050565b60008160170b9050919050565b6129f8816129e2565b8114612a0357600080fd5b50565b600081519050612a15816129ef565b92915050565b600060e08284031215612a3157612a30612925565b5b612a3b60e0611c29565b90506000612a4b84828501612941565b6000830152506020612a5f8482850161297d565b6020830152506040612a738482850161297d565b6040830152506060612a87848285016129cd565b6060830152506080612a9b848285016129cd565b60808301525060a0612aaf8482850161297d565b60a08301525060c0612ac384828501612a06565b60c08301525092915050565b600060e08284031215612ae557612ae4611a02565b5b6000612af384828501612a1b565b91505092915050565b6000819050919050565b612b0f81612afc565b82525050565b60028110612b2657612b25612790565b5b50565b6000819050612b3782612b15565b919050565b6000612b4782612b29565b9050919050565b612b5781612b3c565b82525050565b600082825260208201905092915050565b6000612b7982611e74565b612b838185612b5d565b9350612b93818560208601611962565b612b9c8161198c565b840191505092915050565b6000606083016000830151612bbf6000860182612b06565b506020830151612bd26020860182612b4e565b5060408301518482036040860152612bea8282612b6e565b9150508091505092915050565b60006020820190508181036000830152612c118184612ba7565b905092915050565b612c2281611d77565b8114612c2d57600080fd5b50565b600081519050612c3f81612c19565b92915050565b600060208284031215612c5b57612c5a611a02565b5b6000612c6984828501612c30565b91505092915050565b8082525050565b612c828161207d565b82525050565b6000604082019050612c9d6000830185612c72565b612caa6020830184612c79565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ceb82611a0c565b9150612cf683611a0c565b9250828203905081811115612d0e57612d0d612cb1565b5b92915050565b6000612d1f82611a0c565b9150612d2a83611a0c565b9250828202612d3881611a0c565b91508282048414831517612d4f57612d4e612cb1565b5b5092915050565b612d5f81611a0c565b82525050565b6000602082019050612d7a6000830184612d56565b92915050565b600060208284031215612d9657612d95611a02565b5b6000612da4848285016126f8565b91505092915050565b600082825260208201905092915050565b6000819050919050565b6000612dd48385612b5d565b9350612de1838584611c75565b612dea8361198c565b840190509392505050565b6000612e02848484612dc8565b90509392505050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112612e3757612e36612e15565b5b83810192508235915060208301925067ffffffffffffffff821115612e5f57612e5e612e0b565b5b600182023603831315612e7557612e74612e10565b5b509250929050565b6000602082019050919050565b6000612e968385612dad565b935083602084028501612ea884612dbe565b8060005b87811015612eee578484038952612ec38284612e1a565b612ece868284612df5565b9550612ed984612e7d565b935060208b019a505050600181019050612eac565b50829750879450505050509392505050565b60006040820190508181036000830152612f1b818688612e8a565b90508181036020830152612f30818486612453565b905095945050505050565b6000612f4682611a0c565b9150612f5183611a0c565b9250828201905080821115612f6957612f68612cb1565b5b92915050565b600069ffffffffffffffffffff82169050919050565b612f8e81612f6f565b8114612f9957600080fd5b50565b600081519050612fab81612f85565b92915050565b612fba81612afc565b8114612fc557600080fd5b50565b600081519050612fd781612fb1565b92915050565b600080600080600060a08688031215612ff957612ff8611a02565b5b600061300788828901612f9c565b955050602061301888828901612fc8565b9450506040613029888289016126f8565b935050606061303a888289016126f8565b925050608061304b88828901612f9c565b9150509295509295909350565b6000819050919050565b600061307d61307861307384613058565b611a8f565b611a0c565b9050919050565b61308d81613062565b82525050565b60006020820190506130a86000830184613084565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130e882611a0c565b91506130f383611a0c565b925082613103576131026130ae565b5b828204905092915050565b600060608201905061312360008301866120f6565b61313060208301856120f6565b61313d6040830184611dad565b949350505050565b600060408201905061315a60008301856120f6565b6131676020830184611dad565b9392505050565b60006bffffffffffffffffffffffff82169050919050565b61318f8161316e565b82525050565b60006040820190506131aa6000830185611dad565b6131b76020830184613186565b9392505050565b600081905092915050565b50565b60006131d96000836131be565b91506131e4826131c9565b600082019050919050565b60006131fa826131cc565b9150819050919050565b61320d81611b81565b82525050565b600082825260208201905092915050565b600061322f82611e74565b6132398185613213565b9350613249818560208601611962565b6132528161198c565b840191505092915050565b600060a0820190506132726000830188612c72565b61327f6020830187613204565b81810360408301526132918186613224565b90506132a06060830185612d56565b6132ad6080830184613204565b9695505050505050565b60006080820190506132cc6000830187613204565b81810360208301526132de8186613224565b90506132ed6040830185612d56565b6132fa6060830184613204565b95945050505050565b60006020828403121561331957613318611a02565b5b600061332784828501612941565b91505092915050565b6003811061333d57600080fd5b50565b60008151905061334f81613330565b92915050565b60006060828403121561336b5761336a612925565b5b6133756060611c29565b9050600061338584828501613340565b6000830152506020613399848285016126f8565b60208301525060406133ad848285016126f8565b60408301525092915050565b6000606082840312156133cf576133ce611a02565b5b60006133dd84828501613355565b91505092915050565b6000819050919050565b600060ff82169050919050565b600061341861341361340e846133e6565b611a8f565b6133f0565b9050919050565b613428816133fd565b82525050565b6000604082019050613443600083018561341f565b6134506020830184611dad565b939250505056fea264697066735822122049e7592d98aaac9c001f95f541394ecf5c5560ce0f395af56104758bb578b0f264736f6c63430008140033", "args": [ "0xE131e240f8526da46E58455472Edc9Ef4479E91d", "0x2ff010DEbC1297f19579B4246cad07bd24F2488A", diff --git a/scripts/e2e/example/trade.js b/scripts/e2e/example/trade.js index 9fe2fc6..3333790 100644 --- a/scripts/e2e/example/trade.js +++ b/scripts/e2e/example/trade.js @@ -1,6 +1,5 @@ const hre = require("hardhat"); const { getDeploymentLockData } = require("../../common"); -const hre = require("hardhat"); const { ethers, network } = hre; const coder = new ethers.AbiCoder(); @@ -55,18 +54,18 @@ async function main() { "FakedOracleProxy", lock.FakedOracleProxy.addr, ); + const usdc = await ethers.getContractAt("FUSDC", lock.FUSDC.addr); - const initBalance = await usdc.balanceOf(signerAddr); + console.log("USD balance before trade: ", await usdc.balanceOf(signerAddr)); await consumer.trade(tradeArgs, nonce, { - value: hre.ethers.parseEther("0.01"), + value: hre.ethers.parseEther("0.005"), }); - const usdc = await ethers.getContractAt("FUSDC", lock.FUSDC.addr); - - const balance = initBalance - await usdc.balanceOf(signerAddr); + // wait ~block for automation to perform a swap + await new Promise((res) => setTimeout(res, 4500)); - console.log("Successfully traded fWETH tokens for fUSDC", balance); + console.log("USD balance after trade: ", await usdc.balanceOf(signerAddr)); console.log("run fallback check logic.."); diff --git a/src/Oracle.sol b/src/Oracle.sol index 65947ca..71f9ab9 100644 --- a/src/Oracle.sol +++ b/src/Oracle.sol @@ -143,7 +143,7 @@ contract Oracle is IOracle, DataStreamConsumer, ReentrancyGuard { bool success = IOracleConsumerContract(callbackContract).consume( ForwardData({ - price: int256(0), + price: int256(report.price), feedType: FeedType.DataStream, forwardArguments: callbackArgs }) @@ -186,7 +186,9 @@ contract Oracle is IOracle, DataStreamConsumer, ReentrancyGuard { bool success = IOracleConsumerContract(callbackContract).consume( ForwardData({ - price: price, + // price convertion to 18 decimals is hardcoded for ETH\USD + // TODO: implement flexible conversion + price: price * 10 ** 10, feedType: FeedType.PriceFeed, forwardArguments: callbackArgs })