@layerzerolabs/lz-evm-messagelib-v2 2.1.19 → 2.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -345,8 +345,8 @@
345
345
  "type": "receive"
346
346
  }
347
347
  ],
348
- "bytecode": "0x60a060405234801561001057600080fd5b5060405161183238038061183283398101604081905261002f91610090565b61003833610040565b6080526100a9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a257600080fd5b5051919050565b60805161176e6100c46000396000610a67015261176e6000f3fe6080604052600436106100695760003560e01c80638da5cb5b116100435780638da5cb5b146100df578063f2fde38b14610114578063f43bcfc51461013457600080fd5b806301e3366714610075578063371c3a8e14610097578063715018a6146100ca57600080fd5b3661007057005b600080fd5b34801561008157600080fd5b506100956100903660046112a6565b610154565b005b3480156100a357600080fd5b506100b76100b23660046112e2565b61016c565b6040519081526020015b60405180910390f35b3480156100d657600080fd5b5061009561037c565b3480156100eb57600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c1565b34801561012057600080fd5b5061009561012f3660046113a2565b610390565b34801561014057600080fd5b506100b761014f3660046112e2565b610447565b61015c61053f565b6101678383836105c0565b505050565b600061017b60208501856113c4565b67ffffffffffffffff166000036101dc5761019c60408601602087016113ee565b6040517fc3baa0b700000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b6000806102286102046101f560408a0160208b016113ee565b61753063ffffffff9091161090565b61021160208901896113c4565b61022160808a0160608b01611432565b88886105f0565b9092509050600080808061023f60208c018c6113a2565b73ffffffffffffffffffffffffffffffffffffffff166388a4124c61026a60408e0160208f016113ee565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015260608e0135602482015260448101889052606401608060405180830381865afa1580156102d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f9919061144f565b929650909450925090506103438461031760408d0160208e016114a4565b8d608001602081019061032a91906114a4565b8d604001602081019061033d9190611432565b856109dc565b96506103638684848e608001602081019061035e91906114a4565b610ad7565b61036d90886114f7565b9b9a5050505050505050505050565b61038461053f565b61038e6000610b41565b565b61039861053f565b73ffffffffffffffffffffffffffffffffffffffff811661043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101d3565b61044481610b41565b50565b600061045660208501856113c4565b67ffffffffffffffff166000036104775761019c60408601602087016113ee565b6000806104906102046101f560408a0160208b016113ee565b909250905060008080806104a760208c018c6113a2565b73ffffffffffffffffffffffffffffffffffffffff1663c1723a1d6104d260408e0160208f016113ee565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015260608e01356024820152604481018890526064016080604051808303816000875af11580156102d5573d6000803e3d6000fd5b60005473ffffffffffffffffffffffffffffffffffffffff16331461038e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101d3565b73ffffffffffffffffffffffffffffffffffffffff83166105e5576101678282610bb6565b610167838383610cbc565b60008082810361062b576040517e575ea100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5067ffffffffffffffff8516600080805b858310156108c75760003681806106548b8b89610d2a565b9950919550935091508690507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff851601610739576000806106978585610d80565b915091508f80156106ba57506000816fffffffffffffffffffffffffffffffff16115b156106f6576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff871660048201526024016101d3565b6107126fffffffffffffffffffffffffffffffff82168c6114f7565b9a506107306fffffffffffffffffffffffffffffffff8316886114f7565b965050506108be565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff85160161079657600061076f8484610dfe565b50905061078e6fffffffffffffffffffffffffffffffff82168b6114f7565b9950506108be565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff851601610854578d156107fd576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff851660048201526024016101d3565b60008061080a8585610e55565b9250925050806fffffffffffffffffffffffffffffffff168b61082d91906114f7565b9a5061084b6fffffffffffffffffffffffffffffffff83168b6114f7565b995050506108be565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff85160161088757600195506108be565b6040517f052e551500000000000000000000000000000000000000000000000000000000815260ff851660048201526024016101d3565b5050505061063c565b828614610903576040517f990776ea000000000000000000000000000000000000000000000000000000008152600481018490526024016101d3565b876fffffffffffffffffffffffffffffffff16851115610969576040517e84ce02000000000000000000000000000000000000000000000000000000008152600481018690526fffffffffffffffffffffffffffffffff891660248201526044016101d3565b806000036109a3576040517fe5eb8f3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109ad81856114f7565b935081156109cf5760646109c2856066611510565b6109cc9190611527565b93505b5050509550959350505050565b60008061ffff8616156109ef57856109f1565b845b90506000612710610a0661ffff84168a611510565b610a109190611527565b90506fffffffffffffffffffffffffffffffff84161580610a4157506fffffffffffffffffffffffffffffffff8516155b15610a4f579150610ace9050565b600088856fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000886fffffffffffffffffffffffffffffffff16610aa39190611510565b610aad9190611527565b610ab791906114f7565b9050818111610ac65781610ac8565b805b93505050505b95945050505050565b60008415610b39576127108261ffff16846fffffffffffffffffffffffffffffffff16866fffffffffffffffffffffffffffffffff1688610b189190611510565b610b229190611527565b610b2c9190611510565b610b369190611527565b90505b949350505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610c03576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610c5d576040519150601f19603f3d011682016040523d82523d6000602084013e610c62565b606091505b5050905080610167576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016101d3565b73ffffffffffffffffffffffffffffffffffffffff8216610d09576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61016773ffffffffffffffffffffffffffffffffffffffff84168383610ee2565b600036816001840181610d3e888884610f6f565b600292909201919050610d52888884610f96565b94506001820161ffff82168301610d6b81838b8d611562565b979b909a50969850505061ffff160193505050565b60008060108314801590610d95575060208314155b15610dcc576040517f4796aee100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dd884846000610fbb565b915060208314610de9576000610df5565b610df584846010610fbb565b90509250929050565b60008060308314610e3b576040517fc3a1858e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e4784846000610fbb565b9150610df584846010610fe2565b6000808060128414801590610e6b575060228414155b15610ea2576040517f8b4aa70b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eae85856000610f6f565b9250610ebc85856002610fbb565b915060228414610ecd576000610ed9565b610ed985856012610fbb565b90509250925092565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610167908490610ffd565b600060028201610f8181848688611562565b610f8a9161158c565b60f01c95945050505050565b6000838383818110610faa57610faa6115d4565b919091013560f81c95945050505050565b600060108201610fcd81848688611562565b610fd691611603565b60801c95945050505050565b600060208201610ff481848688611562565b610ace91611649565b600061105f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661110c9092919063ffffffff16565b90508051600014806110805750808060200190518101906110809190611685565b610167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101d3565b6060610b398484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161114091906116cb565b60006040518083038185875af1925050503d806000811461117d576040519150601f19603f3d011682016040523d82523d6000602084013e611182565b606091505b50915091506111938783838761119e565b979650505050505050565b6060831561123457825160000361122d5773ffffffffffffffffffffffffffffffffffffffff85163b61122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d3565b5081610b39565b610b3983838151156112495781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d391906116e7565b803573ffffffffffffffffffffffffffffffffffffffff811681146112a157600080fd5b919050565b6000806000606084860312156112bb57600080fd5b6112c48461127d565b92506112d26020850161127d565b9150604084013590509250925092565b6000806000808486036101408112156112fa57600080fd5b60a081121561130857600080fd5b85945060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608201121561133b57600080fd5b5060a08501925061012085013567ffffffffffffffff8082111561135e57600080fd5b818701915087601f83011261137257600080fd5b81358181111561138157600080fd5b88602082850101111561139357600080fd5b95989497505060200194505050565b6000602082840312156113b457600080fd5b6113bd8261127d565b9392505050565b6000602082840312156113d657600080fd5b813567ffffffffffffffff811681146113bd57600080fd5b60006020828403121561140057600080fd5b813563ffffffff811681146113bd57600080fd5b6fffffffffffffffffffffffffffffffff8116811461044457600080fd5b60006020828403121561144457600080fd5b81356113bd81611414565b6000806000806080858703121561146557600080fd5b84519350602085015161147781611414565b604086015190935061148881611414565b606086015190925061149981611414565b939692955090935050565b6000602082840312156114b657600080fd5b813561ffff811681146113bd57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561150a5761150a6114c8565b92915050565b808202811582820484141761150a5761150a6114c8565b60008261155d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000808585111561157257600080fd5b8386111561157f57600080fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156115cc5780818660020360031b1b83161692505b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081358181169160108510156115cc5760109490940360031b84901b1690921692915050565b8035602083101561150a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60006020828403121561169757600080fd5b815180151581146113bd57600080fd5b60005b838110156116c25781810151838201526020016116aa565b50506000910152565b600082516116dd8184602087016116a7565b9190910192915050565b60208152600082518060208401526117068160408501602087016116a7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220b6b14c72695e5ffd695d7e88c9d6ffb43bd756b8b8f021c64899652ed562835864736f6c63430008160033",
349
- "deployedBytecode": "0x6080604052600436106100695760003560e01c80638da5cb5b116100435780638da5cb5b146100df578063f2fde38b14610114578063f43bcfc51461013457600080fd5b806301e3366714610075578063371c3a8e14610097578063715018a6146100ca57600080fd5b3661007057005b600080fd5b34801561008157600080fd5b506100956100903660046112a6565b610154565b005b3480156100a357600080fd5b506100b76100b23660046112e2565b61016c565b6040519081526020015b60405180910390f35b3480156100d657600080fd5b5061009561037c565b3480156100eb57600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c1565b34801561012057600080fd5b5061009561012f3660046113a2565b610390565b34801561014057600080fd5b506100b761014f3660046112e2565b610447565b61015c61053f565b6101678383836105c0565b505050565b600061017b60208501856113c4565b67ffffffffffffffff166000036101dc5761019c60408601602087016113ee565b6040517fc3baa0b700000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b6000806102286102046101f560408a0160208b016113ee565b61753063ffffffff9091161090565b61021160208901896113c4565b61022160808a0160608b01611432565b88886105f0565b9092509050600080808061023f60208c018c6113a2565b73ffffffffffffffffffffffffffffffffffffffff166388a4124c61026a60408e0160208f016113ee565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015260608e0135602482015260448101889052606401608060405180830381865afa1580156102d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f9919061144f565b929650909450925090506103438461031760408d0160208e016114a4565b8d608001602081019061032a91906114a4565b8d604001602081019061033d9190611432565b856109dc565b96506103638684848e608001602081019061035e91906114a4565b610ad7565b61036d90886114f7565b9b9a5050505050505050505050565b61038461053f565b61038e6000610b41565b565b61039861053f565b73ffffffffffffffffffffffffffffffffffffffff811661043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101d3565b61044481610b41565b50565b600061045660208501856113c4565b67ffffffffffffffff166000036104775761019c60408601602087016113ee565b6000806104906102046101f560408a0160208b016113ee565b909250905060008080806104a760208c018c6113a2565b73ffffffffffffffffffffffffffffffffffffffff1663c1723a1d6104d260408e0160208f016113ee565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015260608e01356024820152604481018890526064016080604051808303816000875af11580156102d5573d6000803e3d6000fd5b60005473ffffffffffffffffffffffffffffffffffffffff16331461038e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101d3565b73ffffffffffffffffffffffffffffffffffffffff83166105e5576101678282610bb6565b610167838383610cbc565b60008082810361062b576040517e575ea100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5067ffffffffffffffff8516600080805b858310156108c75760003681806106548b8b89610d2a565b9950919550935091508690507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff851601610739576000806106978585610d80565b915091508f80156106ba57506000816fffffffffffffffffffffffffffffffff16115b156106f6576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff871660048201526024016101d3565b6107126fffffffffffffffffffffffffffffffff82168c6114f7565b9a506107306fffffffffffffffffffffffffffffffff8316886114f7565b965050506108be565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff85160161079657600061076f8484610dfe565b50905061078e6fffffffffffffffffffffffffffffffff82168b6114f7565b9950506108be565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff851601610854578d156107fd576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff851660048201526024016101d3565b60008061080a8585610e55565b9250925050806fffffffffffffffffffffffffffffffff168b61082d91906114f7565b9a5061084b6fffffffffffffffffffffffffffffffff83168b6114f7565b995050506108be565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff85160161088757600195506108be565b6040517f052e551500000000000000000000000000000000000000000000000000000000815260ff851660048201526024016101d3565b5050505061063c565b828614610903576040517f990776ea000000000000000000000000000000000000000000000000000000008152600481018490526024016101d3565b876fffffffffffffffffffffffffffffffff16851115610969576040517e84ce02000000000000000000000000000000000000000000000000000000008152600481018690526fffffffffffffffffffffffffffffffff891660248201526044016101d3565b806000036109a3576040517fe5eb8f3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109ad81856114f7565b935081156109cf5760646109c2856066611510565b6109cc9190611527565b93505b5050509550959350505050565b60008061ffff8616156109ef57856109f1565b845b90506000612710610a0661ffff84168a611510565b610a109190611527565b90506fffffffffffffffffffffffffffffffff84161580610a4157506fffffffffffffffffffffffffffffffff8516155b15610a4f579150610ace9050565b600088856fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000886fffffffffffffffffffffffffffffffff16610aa39190611510565b610aad9190611527565b610ab791906114f7565b9050818111610ac65781610ac8565b805b93505050505b95945050505050565b60008415610b39576127108261ffff16846fffffffffffffffffffffffffffffffff16866fffffffffffffffffffffffffffffffff1688610b189190611510565b610b229190611527565b610b2c9190611510565b610b369190611527565b90505b949350505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610c03576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610c5d576040519150601f19603f3d011682016040523d82523d6000602084013e610c62565b606091505b5050905080610167576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016101d3565b73ffffffffffffffffffffffffffffffffffffffff8216610d09576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61016773ffffffffffffffffffffffffffffffffffffffff84168383610ee2565b600036816001840181610d3e888884610f6f565b600292909201919050610d52888884610f96565b94506001820161ffff82168301610d6b81838b8d611562565b979b909a50969850505061ffff160193505050565b60008060108314801590610d95575060208314155b15610dcc576040517f4796aee100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dd884846000610fbb565b915060208314610de9576000610df5565b610df584846010610fbb565b90509250929050565b60008060308314610e3b576040517fc3a1858e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e4784846000610fbb565b9150610df584846010610fe2565b6000808060128414801590610e6b575060228414155b15610ea2576040517f8b4aa70b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eae85856000610f6f565b9250610ebc85856002610fbb565b915060228414610ecd576000610ed9565b610ed985856012610fbb565b90509250925092565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610167908490610ffd565b600060028201610f8181848688611562565b610f8a9161158c565b60f01c95945050505050565b6000838383818110610faa57610faa6115d4565b919091013560f81c95945050505050565b600060108201610fcd81848688611562565b610fd691611603565b60801c95945050505050565b600060208201610ff481848688611562565b610ace91611649565b600061105f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661110c9092919063ffffffff16565b90508051600014806110805750808060200190518101906110809190611685565b610167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101d3565b6060610b398484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161114091906116cb565b60006040518083038185875af1925050503d806000811461117d576040519150601f19603f3d011682016040523d82523d6000602084013e611182565b606091505b50915091506111938783838761119e565b979650505050505050565b6060831561123457825160000361122d5773ffffffffffffffffffffffffffffffffffffffff85163b61122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d3565b5081610b39565b610b3983838151156112495781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d391906116e7565b803573ffffffffffffffffffffffffffffffffffffffff811681146112a157600080fd5b919050565b6000806000606084860312156112bb57600080fd5b6112c48461127d565b92506112d26020850161127d565b9150604084013590509250925092565b6000806000808486036101408112156112fa57600080fd5b60a081121561130857600080fd5b85945060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608201121561133b57600080fd5b5060a08501925061012085013567ffffffffffffffff8082111561135e57600080fd5b818701915087601f83011261137257600080fd5b81358181111561138157600080fd5b88602082850101111561139357600080fd5b95989497505060200194505050565b6000602082840312156113b457600080fd5b6113bd8261127d565b9392505050565b6000602082840312156113d657600080fd5b813567ffffffffffffffff811681146113bd57600080fd5b60006020828403121561140057600080fd5b813563ffffffff811681146113bd57600080fd5b6fffffffffffffffffffffffffffffffff8116811461044457600080fd5b60006020828403121561144457600080fd5b81356113bd81611414565b6000806000806080858703121561146557600080fd5b84519350602085015161147781611414565b604086015190935061148881611414565b606086015190925061149981611414565b939692955090935050565b6000602082840312156114b657600080fd5b813561ffff811681146113bd57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561150a5761150a6114c8565b92915050565b808202811582820484141761150a5761150a6114c8565b60008261155d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000808585111561157257600080fd5b8386111561157f57600080fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156115cc5780818660020360031b1b83161692505b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081358181169160108510156115cc5760109490940360031b84901b1690921692915050565b8035602083101561150a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60006020828403121561169757600080fd5b815180151581146113bd57600080fd5b60005b838110156116c25781810151838201526020016116aa565b50506000910152565b600082516116dd8184602087016116a7565b9190910192915050565b60208152600082518060208401526117068160408501602087016116a7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220b6b14c72695e5ffd695d7e88c9d6ffb43bd756b8b8f021c64899652ed562835864736f6c63430008160033",
348
+ "bytecode": "0x60a060405234801561001057600080fd5b5060405161183238038061183283398101604081905261002f91610090565b61003833610040565b6080526100a9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a257600080fd5b5051919050565b60805161176e6100c46000396000610a67015261176e6000f3fe6080604052600436106100695760003560e01c80638da5cb5b116100435780638da5cb5b146100df578063f2fde38b14610114578063f43bcfc51461013457600080fd5b806301e3366714610075578063371c3a8e14610097578063715018a6146100ca57600080fd5b3661007057005b600080fd5b34801561008157600080fd5b506100956100903660046112a6565b610154565b005b3480156100a357600080fd5b506100b76100b23660046112e2565b61016c565b6040519081526020015b60405180910390f35b3480156100d657600080fd5b5061009561037c565b3480156100eb57600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c1565b34801561012057600080fd5b5061009561012f3660046113a2565b610390565b34801561014057600080fd5b506100b761014f3660046112e2565b610447565b61015c61053f565b6101678383836105c0565b505050565b600061017b60208501856113c4565b67ffffffffffffffff166000036101dc5761019c60408601602087016113ee565b6040517fc3baa0b700000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b6000806102286102046101f560408a0160208b016113ee565b61753063ffffffff9091161090565b61021160208901896113c4565b61022160808a0160608b01611432565b88886105f0565b9092509050600080808061023f60208c018c6113a2565b73ffffffffffffffffffffffffffffffffffffffff166388a4124c61026a60408e0160208f016113ee565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015260608e0135602482015260448101889052606401608060405180830381865afa1580156102d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f9919061144f565b929650909450925090506103438461031760408d0160208e016114a4565b8d608001602081019061032a91906114a4565b8d604001602081019061033d9190611432565b856109dc565b96506103638684848e608001602081019061035e91906114a4565b610ad7565b61036d90886114f7565b9b9a5050505050505050505050565b61038461053f565b61038e6000610b41565b565b61039861053f565b73ffffffffffffffffffffffffffffffffffffffff811661043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101d3565b61044481610b41565b50565b600061045660208501856113c4565b67ffffffffffffffff166000036104775761019c60408601602087016113ee565b6000806104906102046101f560408a0160208b016113ee565b909250905060008080806104a760208c018c6113a2565b73ffffffffffffffffffffffffffffffffffffffff1663c1723a1d6104d260408e0160208f016113ee565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015260608e01356024820152604481018890526064016080604051808303816000875af11580156102d5573d6000803e3d6000fd5b60005473ffffffffffffffffffffffffffffffffffffffff16331461038e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101d3565b73ffffffffffffffffffffffffffffffffffffffff83166105e5576101678282610bb6565b610167838383610cbc565b60008082810361062b576040517e575ea100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5067ffffffffffffffff8516600080805b858310156108c75760003681806106548b8b89610d2a565b9950919550935091508690507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff851601610739576000806106978585610d80565b915091508f80156106ba57506000816fffffffffffffffffffffffffffffffff16115b156106f6576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff871660048201526024016101d3565b6107126fffffffffffffffffffffffffffffffff82168c6114f7565b9a506107306fffffffffffffffffffffffffffffffff8316886114f7565b965050506108be565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff85160161079657600061076f8484610dfe565b50905061078e6fffffffffffffffffffffffffffffffff82168b6114f7565b9950506108be565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff851601610854578d156107fd576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff851660048201526024016101d3565b60008061080a8585610e55565b9250925050806fffffffffffffffffffffffffffffffff168b61082d91906114f7565b9a5061084b6fffffffffffffffffffffffffffffffff83168b6114f7565b995050506108be565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff85160161088757600195506108be565b6040517f052e551500000000000000000000000000000000000000000000000000000000815260ff851660048201526024016101d3565b5050505061063c565b828614610903576040517f990776ea000000000000000000000000000000000000000000000000000000008152600481018490526024016101d3565b876fffffffffffffffffffffffffffffffff16851115610969576040517e84ce02000000000000000000000000000000000000000000000000000000008152600481018690526fffffffffffffffffffffffffffffffff891660248201526044016101d3565b806000036109a3576040517fe5eb8f3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109ad81856114f7565b935081156109cf5760646109c2856066611510565b6109cc9190611527565b93505b5050509550959350505050565b60008061ffff8616156109ef57856109f1565b845b90506000612710610a0661ffff84168a611510565b610a109190611527565b90506fffffffffffffffffffffffffffffffff84161580610a4157506fffffffffffffffffffffffffffffffff8516155b15610a4f579150610ace9050565b600088856fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000886fffffffffffffffffffffffffffffffff16610aa39190611510565b610aad9190611527565b610ab791906114f7565b9050818111610ac65781610ac8565b805b93505050505b95945050505050565b60008415610b39576127108261ffff16846fffffffffffffffffffffffffffffffff16866fffffffffffffffffffffffffffffffff1688610b189190611510565b610b229190611527565b610b2c9190611510565b610b369190611527565b90505b949350505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610c03576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610c5d576040519150601f19603f3d011682016040523d82523d6000602084013e610c62565b606091505b5050905080610167576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016101d3565b73ffffffffffffffffffffffffffffffffffffffff8216610d09576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61016773ffffffffffffffffffffffffffffffffffffffff84168383610ee2565b600036816001840181610d3e888884610f6f565b600292909201919050610d52888884610f96565b94506001820161ffff82168301610d6b81838b8d611562565b979b909a50969850505061ffff160193505050565b60008060108314801590610d95575060208314155b15610dcc576040517f4796aee100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dd884846000610fbb565b915060208314610de9576000610df5565b610df584846010610fbb565b90509250929050565b60008060308314610e3b576040517fc3a1858e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e4784846000610fbb565b9150610df584846010610fe2565b6000808060128414801590610e6b575060228414155b15610ea2576040517f8b4aa70b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eae85856000610f6f565b9250610ebc85856002610fbb565b915060228414610ecd576000610ed9565b610ed985856012610fbb565b90509250925092565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610167908490610ffd565b600060028201610f8181848688611562565b610f8a9161158c565b60f01c95945050505050565b6000838383818110610faa57610faa6115d4565b919091013560f81c95945050505050565b600060108201610fcd81848688611562565b610fd691611603565b60801c95945050505050565b600060208201610ff481848688611562565b610ace91611649565b600061105f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661110c9092919063ffffffff16565b90508051600014806110805750808060200190518101906110809190611685565b610167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101d3565b6060610b398484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161114091906116cb565b60006040518083038185875af1925050503d806000811461117d576040519150601f19603f3d011682016040523d82523d6000602084013e611182565b606091505b50915091506111938783838761119e565b979650505050505050565b6060831561123457825160000361122d5773ffffffffffffffffffffffffffffffffffffffff85163b61122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d3565b5081610b39565b610b3983838151156112495781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d391906116e7565b803573ffffffffffffffffffffffffffffffffffffffff811681146112a157600080fd5b919050565b6000806000606084860312156112bb57600080fd5b6112c48461127d565b92506112d26020850161127d565b9150604084013590509250925092565b6000806000808486036101408112156112fa57600080fd5b60a081121561130857600080fd5b85945060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608201121561133b57600080fd5b5060a08501925061012085013567ffffffffffffffff8082111561135e57600080fd5b818701915087601f83011261137257600080fd5b81358181111561138157600080fd5b88602082850101111561139357600080fd5b95989497505060200194505050565b6000602082840312156113b457600080fd5b6113bd8261127d565b9392505050565b6000602082840312156113d657600080fd5b813567ffffffffffffffff811681146113bd57600080fd5b60006020828403121561140057600080fd5b813563ffffffff811681146113bd57600080fd5b6fffffffffffffffffffffffffffffffff8116811461044457600080fd5b60006020828403121561144457600080fd5b81356113bd81611414565b6000806000806080858703121561146557600080fd5b84519350602085015161147781611414565b604086015190935061148881611414565b606086015190925061149981611414565b939692955090935050565b6000602082840312156114b657600080fd5b813561ffff811681146113bd57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561150a5761150a6114c8565b92915050565b808202811582820484141761150a5761150a6114c8565b60008261155d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000808585111561157257600080fd5b8386111561157f57600080fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156115cc5780818660020360031b1b83161692505b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081358181169160108510156115cc5760109490940360031b84901b1690921692915050565b8035602083101561150a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60006020828403121561169757600080fd5b815180151581146113bd57600080fd5b60005b838110156116c25781810151838201526020016116aa565b50506000910152565b600082516116dd8184602087016116a7565b9190910192915050565b60208152600082518060208401526117068160408501602087016116a7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220e80cf252171ab0d5a77dd283b5099e678d4a21a24cc5386f091857bbc9fb5e2c64736f6c63430008160033",
349
+ "deployedBytecode": "0x6080604052600436106100695760003560e01c80638da5cb5b116100435780638da5cb5b146100df578063f2fde38b14610114578063f43bcfc51461013457600080fd5b806301e3366714610075578063371c3a8e14610097578063715018a6146100ca57600080fd5b3661007057005b600080fd5b34801561008157600080fd5b506100956100903660046112a6565b610154565b005b3480156100a357600080fd5b506100b76100b23660046112e2565b61016c565b6040519081526020015b60405180910390f35b3480156100d657600080fd5b5061009561037c565b3480156100eb57600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c1565b34801561012057600080fd5b5061009561012f3660046113a2565b610390565b34801561014057600080fd5b506100b761014f3660046112e2565b610447565b61015c61053f565b6101678383836105c0565b505050565b600061017b60208501856113c4565b67ffffffffffffffff166000036101dc5761019c60408601602087016113ee565b6040517fc3baa0b700000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b6000806102286102046101f560408a0160208b016113ee565b61753063ffffffff9091161090565b61021160208901896113c4565b61022160808a0160608b01611432565b88886105f0565b9092509050600080808061023f60208c018c6113a2565b73ffffffffffffffffffffffffffffffffffffffff166388a4124c61026a60408e0160208f016113ee565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015260608e0135602482015260448101889052606401608060405180830381865afa1580156102d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f9919061144f565b929650909450925090506103438461031760408d0160208e016114a4565b8d608001602081019061032a91906114a4565b8d604001602081019061033d9190611432565b856109dc565b96506103638684848e608001602081019061035e91906114a4565b610ad7565b61036d90886114f7565b9b9a5050505050505050505050565b61038461053f565b61038e6000610b41565b565b61039861053f565b73ffffffffffffffffffffffffffffffffffffffff811661043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101d3565b61044481610b41565b50565b600061045660208501856113c4565b67ffffffffffffffff166000036104775761019c60408601602087016113ee565b6000806104906102046101f560408a0160208b016113ee565b909250905060008080806104a760208c018c6113a2565b73ffffffffffffffffffffffffffffffffffffffff1663c1723a1d6104d260408e0160208f016113ee565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015260608e01356024820152604481018890526064016080604051808303816000875af11580156102d5573d6000803e3d6000fd5b60005473ffffffffffffffffffffffffffffffffffffffff16331461038e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101d3565b73ffffffffffffffffffffffffffffffffffffffff83166105e5576101678282610bb6565b610167838383610cbc565b60008082810361062b576040517e575ea100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5067ffffffffffffffff8516600080805b858310156108c75760003681806106548b8b89610d2a565b9950919550935091508690507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff851601610739576000806106978585610d80565b915091508f80156106ba57506000816fffffffffffffffffffffffffffffffff16115b156106f6576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff871660048201526024016101d3565b6107126fffffffffffffffffffffffffffffffff82168c6114f7565b9a506107306fffffffffffffffffffffffffffffffff8316886114f7565b965050506108be565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff85160161079657600061076f8484610dfe565b50905061078e6fffffffffffffffffffffffffffffffff82168b6114f7565b9950506108be565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff851601610854578d156107fd576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff851660048201526024016101d3565b60008061080a8585610e55565b9250925050806fffffffffffffffffffffffffffffffff168b61082d91906114f7565b9a5061084b6fffffffffffffffffffffffffffffffff83168b6114f7565b995050506108be565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff85160161088757600195506108be565b6040517f052e551500000000000000000000000000000000000000000000000000000000815260ff851660048201526024016101d3565b5050505061063c565b828614610903576040517f990776ea000000000000000000000000000000000000000000000000000000008152600481018490526024016101d3565b876fffffffffffffffffffffffffffffffff16851115610969576040517e84ce02000000000000000000000000000000000000000000000000000000008152600481018690526fffffffffffffffffffffffffffffffff891660248201526044016101d3565b806000036109a3576040517fe5eb8f3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109ad81856114f7565b935081156109cf5760646109c2856066611510565b6109cc9190611527565b93505b5050509550959350505050565b60008061ffff8616156109ef57856109f1565b845b90506000612710610a0661ffff84168a611510565b610a109190611527565b90506fffffffffffffffffffffffffffffffff84161580610a4157506fffffffffffffffffffffffffffffffff8516155b15610a4f579150610ace9050565b600088856fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000886fffffffffffffffffffffffffffffffff16610aa39190611510565b610aad9190611527565b610ab791906114f7565b9050818111610ac65781610ac8565b805b93505050505b95945050505050565b60008415610b39576127108261ffff16846fffffffffffffffffffffffffffffffff16866fffffffffffffffffffffffffffffffff1688610b189190611510565b610b229190611527565b610b2c9190611510565b610b369190611527565b90505b949350505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610c03576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610c5d576040519150601f19603f3d011682016040523d82523d6000602084013e610c62565b606091505b5050905080610167576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016101d3565b73ffffffffffffffffffffffffffffffffffffffff8216610d09576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61016773ffffffffffffffffffffffffffffffffffffffff84168383610ee2565b600036816001840181610d3e888884610f6f565b600292909201919050610d52888884610f96565b94506001820161ffff82168301610d6b81838b8d611562565b979b909a50969850505061ffff160193505050565b60008060108314801590610d95575060208314155b15610dcc576040517f4796aee100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dd884846000610fbb565b915060208314610de9576000610df5565b610df584846010610fbb565b90509250929050565b60008060308314610e3b576040517fc3a1858e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e4784846000610fbb565b9150610df584846010610fe2565b6000808060128414801590610e6b575060228414155b15610ea2576040517f8b4aa70b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eae85856000610f6f565b9250610ebc85856002610fbb565b915060228414610ecd576000610ed9565b610ed985856012610fbb565b90509250925092565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610167908490610ffd565b600060028201610f8181848688611562565b610f8a9161158c565b60f01c95945050505050565b6000838383818110610faa57610faa6115d4565b919091013560f81c95945050505050565b600060108201610fcd81848688611562565b610fd691611603565b60801c95945050505050565b600060208201610ff481848688611562565b610ace91611649565b600061105f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661110c9092919063ffffffff16565b90508051600014806110805750808060200190518101906110809190611685565b610167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101d3565b6060610b398484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161114091906116cb565b60006040518083038185875af1925050503d806000811461117d576040519150601f19603f3d011682016040523d82523d6000602084013e611182565b606091505b50915091506111938783838761119e565b979650505050505050565b6060831561123457825160000361122d5773ffffffffffffffffffffffffffffffffffffffff85163b61122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d3565b5081610b39565b610b3983838151156112495781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d391906116e7565b803573ffffffffffffffffffffffffffffffffffffffff811681146112a157600080fd5b919050565b6000806000606084860312156112bb57600080fd5b6112c48461127d565b92506112d26020850161127d565b9150604084013590509250925092565b6000806000808486036101408112156112fa57600080fd5b60a081121561130857600080fd5b85945060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608201121561133b57600080fd5b5060a08501925061012085013567ffffffffffffffff8082111561135e57600080fd5b818701915087601f83011261137257600080fd5b81358181111561138157600080fd5b88602082850101111561139357600080fd5b95989497505060200194505050565b6000602082840312156113b457600080fd5b6113bd8261127d565b9392505050565b6000602082840312156113d657600080fd5b813567ffffffffffffffff811681146113bd57600080fd5b60006020828403121561140057600080fd5b813563ffffffff811681146113bd57600080fd5b6fffffffffffffffffffffffffffffffff8116811461044457600080fd5b60006020828403121561144457600080fd5b81356113bd81611414565b6000806000806080858703121561146557600080fd5b84519350602085015161147781611414565b604086015190935061148881611414565b606086015190925061149981611414565b939692955090935050565b6000602082840312156114b657600080fd5b813561ffff811681146113bd57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561150a5761150a6114c8565b92915050565b808202811582820484141761150a5761150a6114c8565b60008261155d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000808585111561157257600080fd5b8386111561157f57600080fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156115cc5780818660020360031b1b83161692505b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081358181169160108510156115cc5760109490940360031b84901b1690921692915050565b8035602083101561150a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60006020828403121561169757600080fd5b815180151581146113bd57600080fd5b60005b838110156116c25781810151838201526020016116aa565b50506000910152565b600082516116dd8184602087016116a7565b9190910192915050565b60208152600082518060208401526117068160408501602087016116a7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220e80cf252171ab0d5a77dd283b5099e678d4a21a24cc5386f091857bbc9fb5e2c64736f6c63430008160033",
350
350
  "linkReferences": {},
351
351
  "deployedLinkReferences": {}
352
352
  }
@@ -19,11 +19,6 @@
19
19
  "name": "LZ_PriceFeed_InsufficientFee",
20
20
  "type": "error"
21
21
  },
22
- {
23
- "inputs": [],
24
- "name": "LZ_PriceFeed_OnlyPriceUpdater",
25
- "type": "error"
26
- },
27
22
  {
28
23
  "inputs": [
29
24
  {
@@ -32,7 +27,12 @@
32
27
  "type": "uint32"
33
28
  }
34
29
  ],
35
- "name": "LZ_PriceFeed_UnknownL2Eid",
30
+ "name": "LZ_PriceFeed_NotAnOPStack",
31
+ "type": "error"
32
+ },
33
+ {
34
+ "inputs": [],
35
+ "name": "LZ_PriceFeed_OnlyPriceUpdater",
36
36
  "type": "error"
37
37
  },
38
38
  {
@@ -126,6 +126,25 @@
126
126
  "stateMutability": "view",
127
127
  "type": "function"
128
128
  },
129
+ {
130
+ "inputs": [
131
+ {
132
+ "internalType": "uint32",
133
+ "name": "",
134
+ "type": "uint32"
135
+ }
136
+ ],
137
+ "name": "eidToModelType",
138
+ "outputs": [
139
+ {
140
+ "internalType": "enum ModelType",
141
+ "name": "",
142
+ "type": "uint8"
143
+ }
144
+ ],
145
+ "stateMutability": "view",
146
+ "type": "function"
147
+ },
129
148
  {
130
149
  "inputs": [],
131
150
  "name": "endpoint",
@@ -453,6 +472,31 @@
453
472
  "stateMutability": "nonpayable",
454
473
  "type": "function"
455
474
  },
475
+ {
476
+ "inputs": [
477
+ {
478
+ "components": [
479
+ {
480
+ "internalType": "uint32",
481
+ "name": "dstEid",
482
+ "type": "uint32"
483
+ },
484
+ {
485
+ "internalType": "enum ModelType",
486
+ "name": "modelType",
487
+ "type": "uint8"
488
+ }
489
+ ],
490
+ "internalType": "struct SetEidToModelTypeParam[]",
491
+ "name": "_params",
492
+ "type": "tuple[]"
493
+ }
494
+ ],
495
+ "name": "setEidToModelType",
496
+ "outputs": [],
497
+ "stateMutability": "nonpayable",
498
+ "type": "function"
499
+ },
456
500
  {
457
501
  "inputs": [
458
502
  {
@@ -643,8 +687,8 @@
643
687
  "type": "function"
644
688
  }
645
689
  ],
646
- "bytecode": "0x608060405234801561001057600080fd5b50611d78806100206000396000f3fe60806040526004361061018b5760003560e01c80638da5cb5b116100d6578063d350ad251161007f578063e0ad121a11610059578063e0ad121a14610653578063f2fde38b14610708578063fd9be5221461072857600080fd5b8063d350ad251461051c578063da26663a1461053c578063dbbb41551461063357600080fd5b8063c1840327116100b0578063c184032714610498578063c4d66de8146104bf578063cd68b79b146104df57600080fd5b80638da5cb5b1461041657806392807f5814610441578063c1723a1d1461048557600080fd5b80635e280f11116101385780637dc438a4116101125780637dc438a41461035e57806388a4124c1461037e5780638ca2fb08146103d657600080fd5b80635e280f11146102b1578063715018a6146103035780637bc3c9ab1461031857600080fd5b806336a5beba1161016957806336a5beba1461020957806352a72510146102715780635d6d7ccb1461029157600080fd5b806311f2c343146101905780632f7cb0b4146101c75780633161b7f6146101e9575b600080fd5b34801561019c57600080fd5b506101b46101ab36600461197b565b60009392505050565b6040519081526020015b60405180910390f35b3480156101d357600080fd5b506101e76101e23660046119ce565b610748565b005b3480156101f557600080fd5b506101e76102043660046119f0565b610785565b34801561021557600080fd5b5060408051808201825260008082526020918201528151808301835260685467ffffffffffffffff811680835263ffffffff680100000000000000009092048216928401928352845190815291511691810191909152016101be565b34801561027d57600080fd5b506101e761028c366004611a89565b610955565b34801561029d57600080fd5b506101e76102ac3660046119ce565b6109b3565b3480156102bd57600080fd5b50606a546102de9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101be565b34801561030f57600080fd5b506101e7610a7a565b34801561032457600080fd5b50610338610333366004611ad7565b610a8e565b604080519283526fffffffffffffffffffffffffffffffff9091166020830152016101be565b34801561036a57600080fd5b506101e7610379366004611af5565b610b29565b34801561038a57600080fd5b5061039e61039936600461197b565b610c36565b604080519485526fffffffffffffffffffffffffffffffff9384166020860152918316918401919091521660608201526080016101be565b3480156103e257600080fd5b506104066103f1366004611b0d565b60666020526000908152604090205460ff1681565b60405190151581526020016101be565b34801561042257600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff166102de565b34801561044d57600080fd5b506069546fffffffffffffffffffffffffffffffff165b6040516fffffffffffffffffffffffffffffffff90911681526020016101be565b61039e61049336600461197b565b610c58565b3480156104a457600080fd5b506065546fffffffffffffffffffffffffffffffff16610464565b3480156104cb57600080fd5b506101e76104da366004611b0d565b610c89565b3480156104eb57600080fd5b506069546104649070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b34801561052857600080fd5b506101e76105373660046119ce565b610f70565b34801561054857600080fd5b506105ef610557366004611b28565b60408051606080820183526000808352602080840182905292840181905263ffffffff94851681526067835283902083519182018452546fffffffffffffffffffffffffffffffff81168252700100000000000000000000000000000000810467ffffffffffffffff169282019290925278010000000000000000000000000000000000000000000000009091049092169082015290565b6040805182516fffffffffffffffffffffffffffffffff16815260208084015167ffffffffffffffff16908201529181015163ffffffff16908201526060016101be565b34801561063f57600080fd5b506101e761064e366004611b0d565b610fbb565b34801561065f57600080fd5b506105ef61066e366004611b43565b60408051606080820183526000808352602080840182905292840181905261ffff949094168452606782529282902082519384018352546fffffffffffffffffffffffffffffffff8116845267ffffffffffffffff700100000000000000000000000000000000820416918401919091527801000000000000000000000000000000000000000000000000900463ffffffff169082015290565b34801561071457600080fd5b506101e7610723366004611b0d565b61100a565b34801561073457600080fd5b506101e7610743366004611b5e565b6110c1565b6107506110d7565b606980546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055565b336107a560335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610809573360009081526066602052604090205460ff16610809576040517f320ae52900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610950573683838381811061082757610827611b88565b60800291909101915061094790506108426020830183611b28565b61085436849003840160208501611bcf565b805160208083015160409384015184516060810186526fffffffffffffffffffffffffffffffff948516815267ffffffffffffffff92831681850190815263ffffffff9283168288019081529783166000908152606790955295909320925183549551965194167fffffffffffffffff000000000000000000000000000000000000000000000000909516949094177001000000000000000000000000000000009590911694909402939093177fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009190921602179055565b5060010161080c565b505050565b61095d6110d7565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260666020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b336109d360335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610a37573360009081526066602052604090205460ff16610a37576040517f320ae52900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606980547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b610a826110d7565b610a8c6000611158565b565b6000808461ffff16606e1480610aa957508461ffff1661279f145b80610ab957508461ffff16614eaf145b15610ad657610acd8561ffff1685856111cf565b91509150610b21565b8461ffff16606f1480610aee57508461ffff16612794145b80610afe57508461ffff16614ea4145b15610b1257610acd8561ffff16858561132c565b610acd8561ffff1685856114dd565b935093915050565b33610b4960335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610bad573360009081526066602052604090205460ff16610bad576040517f320ae52900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bbd6108426020830183611b28565b6000610bcf60a0830160808401611c62565b90506000610be360c0840160a08501611b28565b6068805463ffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090921667ffffffffffffffff90941693909317179091555050565b600080600080610c478787876115b2565b935093509350935093509350935093565b600080808080610c6c565b60405180910390fd5b610c778888886115b2565b94509450945094505093509350935093565b6000610cb37fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116610d0c5773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355610d2e565b3373ffffffffffffffffffffffffffffffffffffffff821614610d2e57600080fd5b600054610100900460ff1615808015610d4e5750600054600160ff909116105b80610d685750303b158015610d68575060005460ff166001145b610df4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610c63565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610e5257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610e5a611689565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260666020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055606580547fffffffffffffffffffffffffffffffff000000000000000000000000000000001668056bc75e2d6310000017905560698054702f000000000000000000000000000000006fffffffffffffffffffffffffffffffff91909116179055801561095057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b610f786110d7565b606580547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b610fc36110d7565b606a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6110126110d7565b73ffffffffffffffffffffffffffffffffffffffff81166110b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610c63565b6110be81611158565b50565b6110c96110d7565b6110d38282611728565b5050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610a8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c63565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b63ffffffff8381166000908152606760205260408120606854606954929384938492680100000000000000009004909116906064906112349070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1689611cac565b61123e9190611cf8565b6112489190611cac565b825490915060009061127c907801000000000000000000000000000000000000000000000000900463ffffffff1688611cac565b835460685491925060009167ffffffffffffffff700100000000000000000000000000000000909204821691849186916112b791168b611d0c565b6112c19190611d0c565b6112cb9190611d0c565b6112d59190611cac565b60655485549192506fffffffffffffffffffffffffffffffff908116916112fd911683611cac565b6113079190611cf8565b935493996fffffffffffffffffffffffffffffffff9094169850929650505050505050565b600080600061133a8661182e565b63ffffffff8082166000908152606760205260408120805493945092909161137f91780100000000000000000000000000000000000000000000000090041688611cac565b61138b90610c74611d0c565b82549091506000906113bb90700100000000000000000000000000000000900467ffffffffffffffff1683611cac565b63ffffffff808b16600090815260676020526040812080549394509290916114009178010000000000000000000000000000000000000000000000009004168b611cac565b8254909150600090700100000000000000000000000000000000900467ffffffffffffffff166114308b84611d0c565b61143a9190611cac565b60655487549192506000916fffffffffffffffffffffffffffffffff91821691611465911687611cac565b61146f9190611cf8565b60655485549192506000916fffffffffffffffffffffffffffffffff9182169161149a911685611cac565b6114a49190611cf8565b905060006114b28284611d0c565b9554959f6fffffffffffffffffffffffffffffffff9096169e50949c50505050505050505050505050565b63ffffffff8084166000908152606760205260408120805491928392839161152291780100000000000000000000000000000000000000000000000090041687611cac565b8254909150600090700100000000000000000000000000000000900467ffffffffffffffff166115528784611d0c565b61155c9190611cac565b60655484549192506fffffffffffffffffffffffffffffffff90811691611584911683611cac565b61158e9190611cf8565b925492986fffffffffffffffffffffffffffffffff90931697509195505050505050565b6000808080806115c461753089611d1f565b90508063ffffffff16606e14806115e257508063ffffffff1661279f145b806115f457508063ffffffff16614eaf145b1561160e576116048188886111cf565b909550935061165d565b8063ffffffff16606f148061162a57508063ffffffff16612794145b8061163c57508063ffffffff16614ea4145b1561164c5761160481888861132c565b6116578188886114dd565b90955093505b505060655460695493979296506fffffffffffffffffffffffffffffffff908116955090921692509050565b600054610100900460ff16611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c63565b610a8c6118c2565b73ffffffffffffffffffffffffffffffffffffffff8216611775576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146117cf576040519150601f19603f3d011682016040523d82523d6000602084013e6117d4565b606091505b5050905080610950576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610c63565b60008061183d61753084611d1f565b90508063ffffffff16606f036118565750606592915050565b8063ffffffff166127940361186f575061278992915050565b8063ffffffff16614ea4036118885750614e9992915050565b6040517fea25394500000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610c63565b600054610100900460ff16611959576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c63565b610a8c33611158565b803563ffffffff8116811461197657600080fd5b919050565b60008060006060848603121561199057600080fd5b61199984611962565b95602085013595506040909401359392505050565b80356fffffffffffffffffffffffffffffffff8116811461197657600080fd5b6000602082840312156119e057600080fd5b6119e9826119ae565b9392505050565b60008060208385031215611a0357600080fd5b823567ffffffffffffffff80821115611a1b57600080fd5b818501915085601f830112611a2f57600080fd5b813581811115611a3e57600080fd5b8660208260071b8501011115611a5357600080fd5b60209290920196919550909350505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461197657600080fd5b60008060408385031215611a9c57600080fd5b611aa583611a65565b915060208301358015158114611aba57600080fd5b809150509250929050565b803561ffff8116811461197657600080fd5b600080600060608486031215611aec57600080fd5b61199984611ac5565b600060c08284031215611b0757600080fd5b50919050565b600060208284031215611b1f57600080fd5b6119e982611a65565b600060208284031215611b3a57600080fd5b6119e982611962565b600060208284031215611b5557600080fd5b6119e982611ac5565b60008060408385031215611b7157600080fd5b611b7a83611a65565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b803567ffffffffffffffff8116811461197657600080fd5b600060608284031215611be157600080fd5b6040516060810181811067ffffffffffffffff82111715611c2b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052611c37836119ae565b8152611c4560208401611bb7565b6020820152611c5660408401611962565b60408201529392505050565b600060208284031215611c7457600080fd5b6119e982611bb7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417611cc357611cc3611c7d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611d0757611d07611cc9565b500490565b80820180821115611cc357611cc3611c7d565b600063ffffffff80841680611d3657611d36611cc9565b9216919091069291505056fea2646970667358221220150f3896450b67c96e7d5757d6c4f7c8d0906d020caff0476925b43bdd414c3b64736f6c63430008160033",
647
- "deployedBytecode": "0x60806040526004361061018b5760003560e01c80638da5cb5b116100d6578063d350ad251161007f578063e0ad121a11610059578063e0ad121a14610653578063f2fde38b14610708578063fd9be5221461072857600080fd5b8063d350ad251461051c578063da26663a1461053c578063dbbb41551461063357600080fd5b8063c1840327116100b0578063c184032714610498578063c4d66de8146104bf578063cd68b79b146104df57600080fd5b80638da5cb5b1461041657806392807f5814610441578063c1723a1d1461048557600080fd5b80635e280f11116101385780637dc438a4116101125780637dc438a41461035e57806388a4124c1461037e5780638ca2fb08146103d657600080fd5b80635e280f11146102b1578063715018a6146103035780637bc3c9ab1461031857600080fd5b806336a5beba1161016957806336a5beba1461020957806352a72510146102715780635d6d7ccb1461029157600080fd5b806311f2c343146101905780632f7cb0b4146101c75780633161b7f6146101e9575b600080fd5b34801561019c57600080fd5b506101b46101ab36600461197b565b60009392505050565b6040519081526020015b60405180910390f35b3480156101d357600080fd5b506101e76101e23660046119ce565b610748565b005b3480156101f557600080fd5b506101e76102043660046119f0565b610785565b34801561021557600080fd5b5060408051808201825260008082526020918201528151808301835260685467ffffffffffffffff811680835263ffffffff680100000000000000009092048216928401928352845190815291511691810191909152016101be565b34801561027d57600080fd5b506101e761028c366004611a89565b610955565b34801561029d57600080fd5b506101e76102ac3660046119ce565b6109b3565b3480156102bd57600080fd5b50606a546102de9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101be565b34801561030f57600080fd5b506101e7610a7a565b34801561032457600080fd5b50610338610333366004611ad7565b610a8e565b604080519283526fffffffffffffffffffffffffffffffff9091166020830152016101be565b34801561036a57600080fd5b506101e7610379366004611af5565b610b29565b34801561038a57600080fd5b5061039e61039936600461197b565b610c36565b604080519485526fffffffffffffffffffffffffffffffff9384166020860152918316918401919091521660608201526080016101be565b3480156103e257600080fd5b506104066103f1366004611b0d565b60666020526000908152604090205460ff1681565b60405190151581526020016101be565b34801561042257600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff166102de565b34801561044d57600080fd5b506069546fffffffffffffffffffffffffffffffff165b6040516fffffffffffffffffffffffffffffffff90911681526020016101be565b61039e61049336600461197b565b610c58565b3480156104a457600080fd5b506065546fffffffffffffffffffffffffffffffff16610464565b3480156104cb57600080fd5b506101e76104da366004611b0d565b610c89565b3480156104eb57600080fd5b506069546104649070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b34801561052857600080fd5b506101e76105373660046119ce565b610f70565b34801561054857600080fd5b506105ef610557366004611b28565b60408051606080820183526000808352602080840182905292840181905263ffffffff94851681526067835283902083519182018452546fffffffffffffffffffffffffffffffff81168252700100000000000000000000000000000000810467ffffffffffffffff169282019290925278010000000000000000000000000000000000000000000000009091049092169082015290565b6040805182516fffffffffffffffffffffffffffffffff16815260208084015167ffffffffffffffff16908201529181015163ffffffff16908201526060016101be565b34801561063f57600080fd5b506101e761064e366004611b0d565b610fbb565b34801561065f57600080fd5b506105ef61066e366004611b43565b60408051606080820183526000808352602080840182905292840181905261ffff949094168452606782529282902082519384018352546fffffffffffffffffffffffffffffffff8116845267ffffffffffffffff700100000000000000000000000000000000820416918401919091527801000000000000000000000000000000000000000000000000900463ffffffff169082015290565b34801561071457600080fd5b506101e7610723366004611b0d565b61100a565b34801561073457600080fd5b506101e7610743366004611b5e565b6110c1565b6107506110d7565b606980546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055565b336107a560335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610809573360009081526066602052604090205460ff16610809576040517f320ae52900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610950573683838381811061082757610827611b88565b60800291909101915061094790506108426020830183611b28565b61085436849003840160208501611bcf565b805160208083015160409384015184516060810186526fffffffffffffffffffffffffffffffff948516815267ffffffffffffffff92831681850190815263ffffffff9283168288019081529783166000908152606790955295909320925183549551965194167fffffffffffffffff000000000000000000000000000000000000000000000000909516949094177001000000000000000000000000000000009590911694909402939093177fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009190921602179055565b5060010161080c565b505050565b61095d6110d7565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260666020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b336109d360335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610a37573360009081526066602052604090205460ff16610a37576040517f320ae52900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606980547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b610a826110d7565b610a8c6000611158565b565b6000808461ffff16606e1480610aa957508461ffff1661279f145b80610ab957508461ffff16614eaf145b15610ad657610acd8561ffff1685856111cf565b91509150610b21565b8461ffff16606f1480610aee57508461ffff16612794145b80610afe57508461ffff16614ea4145b15610b1257610acd8561ffff16858561132c565b610acd8561ffff1685856114dd565b935093915050565b33610b4960335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610bad573360009081526066602052604090205460ff16610bad576040517f320ae52900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bbd6108426020830183611b28565b6000610bcf60a0830160808401611c62565b90506000610be360c0840160a08501611b28565b6068805463ffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090921667ffffffffffffffff90941693909317179091555050565b600080600080610c478787876115b2565b935093509350935093509350935093565b600080808080610c6c565b60405180910390fd5b610c778888886115b2565b94509450945094505093509350935093565b6000610cb37fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116610d0c5773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355610d2e565b3373ffffffffffffffffffffffffffffffffffffffff821614610d2e57600080fd5b600054610100900460ff1615808015610d4e5750600054600160ff909116105b80610d685750303b158015610d68575060005460ff166001145b610df4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610c63565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610e5257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610e5a611689565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260666020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055606580547fffffffffffffffffffffffffffffffff000000000000000000000000000000001668056bc75e2d6310000017905560698054702f000000000000000000000000000000006fffffffffffffffffffffffffffffffff91909116179055801561095057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b610f786110d7565b606580547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b610fc36110d7565b606a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6110126110d7565b73ffffffffffffffffffffffffffffffffffffffff81166110b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610c63565b6110be81611158565b50565b6110c96110d7565b6110d38282611728565b5050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610a8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c63565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b63ffffffff8381166000908152606760205260408120606854606954929384938492680100000000000000009004909116906064906112349070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1689611cac565b61123e9190611cf8565b6112489190611cac565b825490915060009061127c907801000000000000000000000000000000000000000000000000900463ffffffff1688611cac565b835460685491925060009167ffffffffffffffff700100000000000000000000000000000000909204821691849186916112b791168b611d0c565b6112c19190611d0c565b6112cb9190611d0c565b6112d59190611cac565b60655485549192506fffffffffffffffffffffffffffffffff908116916112fd911683611cac565b6113079190611cf8565b935493996fffffffffffffffffffffffffffffffff9094169850929650505050505050565b600080600061133a8661182e565b63ffffffff8082166000908152606760205260408120805493945092909161137f91780100000000000000000000000000000000000000000000000090041688611cac565b61138b90610c74611d0c565b82549091506000906113bb90700100000000000000000000000000000000900467ffffffffffffffff1683611cac565b63ffffffff808b16600090815260676020526040812080549394509290916114009178010000000000000000000000000000000000000000000000009004168b611cac565b8254909150600090700100000000000000000000000000000000900467ffffffffffffffff166114308b84611d0c565b61143a9190611cac565b60655487549192506000916fffffffffffffffffffffffffffffffff91821691611465911687611cac565b61146f9190611cf8565b60655485549192506000916fffffffffffffffffffffffffffffffff9182169161149a911685611cac565b6114a49190611cf8565b905060006114b28284611d0c565b9554959f6fffffffffffffffffffffffffffffffff9096169e50949c50505050505050505050505050565b63ffffffff8084166000908152606760205260408120805491928392839161152291780100000000000000000000000000000000000000000000000090041687611cac565b8254909150600090700100000000000000000000000000000000900467ffffffffffffffff166115528784611d0c565b61155c9190611cac565b60655484549192506fffffffffffffffffffffffffffffffff90811691611584911683611cac565b61158e9190611cf8565b925492986fffffffffffffffffffffffffffffffff90931697509195505050505050565b6000808080806115c461753089611d1f565b90508063ffffffff16606e14806115e257508063ffffffff1661279f145b806115f457508063ffffffff16614eaf145b1561160e576116048188886111cf565b909550935061165d565b8063ffffffff16606f148061162a57508063ffffffff16612794145b8061163c57508063ffffffff16614ea4145b1561164c5761160481888861132c565b6116578188886114dd565b90955093505b505060655460695493979296506fffffffffffffffffffffffffffffffff908116955090921692509050565b600054610100900460ff16611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c63565b610a8c6118c2565b73ffffffffffffffffffffffffffffffffffffffff8216611775576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146117cf576040519150601f19603f3d011682016040523d82523d6000602084013e6117d4565b606091505b5050905080610950576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610c63565b60008061183d61753084611d1f565b90508063ffffffff16606f036118565750606592915050565b8063ffffffff166127940361186f575061278992915050565b8063ffffffff16614ea4036118885750614e9992915050565b6040517fea25394500000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610c63565b600054610100900460ff16611959576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c63565b610a8c33611158565b803563ffffffff8116811461197657600080fd5b919050565b60008060006060848603121561199057600080fd5b61199984611962565b95602085013595506040909401359392505050565b80356fffffffffffffffffffffffffffffffff8116811461197657600080fd5b6000602082840312156119e057600080fd5b6119e9826119ae565b9392505050565b60008060208385031215611a0357600080fd5b823567ffffffffffffffff80821115611a1b57600080fd5b818501915085601f830112611a2f57600080fd5b813581811115611a3e57600080fd5b8660208260071b8501011115611a5357600080fd5b60209290920196919550909350505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461197657600080fd5b60008060408385031215611a9c57600080fd5b611aa583611a65565b915060208301358015158114611aba57600080fd5b809150509250929050565b803561ffff8116811461197657600080fd5b600080600060608486031215611aec57600080fd5b61199984611ac5565b600060c08284031215611b0757600080fd5b50919050565b600060208284031215611b1f57600080fd5b6119e982611a65565b600060208284031215611b3a57600080fd5b6119e982611962565b600060208284031215611b5557600080fd5b6119e982611ac5565b60008060408385031215611b7157600080fd5b611b7a83611a65565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b803567ffffffffffffffff8116811461197657600080fd5b600060608284031215611be157600080fd5b6040516060810181811067ffffffffffffffff82111715611c2b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052611c37836119ae565b8152611c4560208401611bb7565b6020820152611c5660408401611962565b60408201529392505050565b600060208284031215611c7457600080fd5b6119e982611bb7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417611cc357611cc3611c7d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611d0757611d07611cc9565b500490565b80820180821115611cc357611cc3611c7d565b600063ffffffff80841680611d3657611d36611cc9565b9216919091069291505056fea2646970667358221220150f3896450b67c96e7d5757d6c4f7c8d0906d020caff0476925b43bdd414c3b64736f6c63430008160033",
690
+ "bytecode": "0x608060405234801561001057600080fd5b506120ed806100206000396000f3fe6080604052600436106101a15760003560e01c80638ca2fb08116100e1578063cd68b79b1161008a578063dbbb415511610064578063dbbb4155146106a6578063e0ad121a146106c6578063f2fde38b1461077b578063fd9be5221461079b57600080fd5b8063cd68b79b14610552578063d350ad251461058f578063da26663a146105af57600080fd5b8063c1723a1d116100bb578063c1723a1d146104f8578063c18403271461050b578063c4d66de81461053257600080fd5b80638ca2fb08146104495780638da5cb5b1461048957806392807f58146104b457600080fd5b80635d6d7ccb1161014e5780637760e22d116101285780637760e22d1461036b5780637bc3c9ab1461038b5780637dc438a4146103d157806388a4124c146103f157600080fd5b80635d6d7ccb146102e45780635e280f1114610304578063715018a61461035657600080fd5b80633161b7f61161017f5780633161b7f61461023c57806336a5beba1461025c57806352a72510146102c457600080fd5b806311f2c343146101a6578063223cf5b2146101dd5780632f7cb0b41461021a575b600080fd5b3480156101b257600080fd5b506101ca6101c1366004611bfc565b60009392505050565b6040519081526020015b60405180910390f35b3480156101e957600080fd5b5061020d6101f8366004611c2f565b606b6020526000908152604090205460ff1681565b6040516101d49190611c80565b34801561022657600080fd5b5061023a610235366004611ce1565b6107bb565b005b34801561024857600080fd5b5061023a610257366004611cfc565b6107f8565b34801561026857600080fd5b5060408051808201825260008082526020918201528151808301835260685467ffffffffffffffff811680835263ffffffff680100000000000000009092048216928401928352845190815291511691810191909152016101d4565b3480156102d057600080fd5b5061023a6102df366004611d95565b6109c8565b3480156102f057600080fd5b5061023a6102ff366004611ce1565b610a26565b34801561031057600080fd5b50606a546103319073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d4565b34801561036257600080fd5b5061023a610aed565b34801561037757600080fd5b5061023a610386366004611dd1565b610b01565b34801561039757600080fd5b506103ab6103a6366004611e46565b610bbd565b604080519283526fffffffffffffffffffffffffffffffff9091166020830152016101d4565b3480156103dd57600080fd5b5061023a6103ec366004611e64565b610cc9565b3480156103fd57600080fd5b5061041161040c366004611bfc565b610dd6565b604080519485526fffffffffffffffffffffffffffffffff9384166020860152918316918401919091521660608201526080016101d4565b34801561045557600080fd5b50610479610464366004611e7c565b60666020526000908152604090205460ff1681565b60405190151581526020016101d4565b34801561049557600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610331565b3480156104c057600080fd5b506069546fffffffffffffffffffffffffffffffff165b6040516fffffffffffffffffffffffffffffffff90911681526020016101d4565b610411610506366004611bfc565b610df8565b34801561051757600080fd5b506065546fffffffffffffffffffffffffffffffff166104d7565b34801561053e57600080fd5b5061023a61054d366004611e7c565b610e29565b34801561055e57600080fd5b506069546104d79070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b34801561059b57600080fd5b5061023a6105aa366004611ce1565b611110565b3480156105bb57600080fd5b506106626105ca366004611c2f565b60408051606080820183526000808352602080840182905292840181905263ffffffff94851681526067835283902083519182018452546fffffffffffffffffffffffffffffffff81168252700100000000000000000000000000000000810467ffffffffffffffff169282019290925278010000000000000000000000000000000000000000000000009091049092169082015290565b6040805182516fffffffffffffffffffffffffffffffff16815260208084015167ffffffffffffffff16908201529181015163ffffffff16908201526060016101d4565b3480156106b257600080fd5b5061023a6106c1366004611e7c565b61115b565b3480156106d257600080fd5b506106626106e1366004611e97565b60408051606080820183526000808352602080840182905292840181905261ffff949094168452606782529282902082519384018352546fffffffffffffffffffffffffffffffff8116845267ffffffffffffffff700100000000000000000000000000000000820416918401919091527801000000000000000000000000000000000000000000000000900463ffffffff169082015290565b34801561078757600080fd5b5061023a610796366004611e7c565b6111aa565b3480156107a757600080fd5b5061023a6107b6366004611eb2565b611261565b6107c3611277565b606980546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055565b3361081860335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff161461087c573360009081526066602052604090205460ff1661087c576040517f320ae52900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156109c3573683838381811061089a5761089a611edc565b6080029190910191506109ba90506108b56020830183611c2f565b6108c736849003840160208501611f23565b805160208083015160409384015184516060810186526fffffffffffffffffffffffffffffffff948516815267ffffffffffffffff92831681850190815263ffffffff9283168288019081529783166000908152606790955295909320925183549551965194167fffffffffffffffff000000000000000000000000000000000000000000000000909516949094177001000000000000000000000000000000009590911694909402939093177fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009190921602179055565b5060010161087f565b505050565b6109d0611277565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260666020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b33610a4660335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610aaa573360009081526066602052604090205460ff16610aaa576040517f320ae52900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606980547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b610af5611277565b610aff60006112f8565b565b60005b818110156109c357828282818110610b1e57610b1e611edc565b9050604002016020016020810190610b369190611fb6565b606b6000858585818110610b4c57610b4c611edc565b610b629260206040909202019081019150611c2f565b63ffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836002811115610bb057610bb0611c51565b0217905550600101610b04565b6000808461ffff16606e1480610bd857508461ffff1661279f145b80610be857508461ffff16614eaf145b15610c0557610bfc8561ffff16858561136f565b91509150610cc1565b8461ffff16606f1480610c1d57508461ffff16612794145b80610c2d57508461ffff16614ea4145b15610c4157610bfc8561ffff1685856114cc565b61ffff85166000908152606b602052604090205460ff166002816002811115610c6c57610c6c611c51565b03610c8a57610c808661ffff1686866114cc565b9250925050610cc1565b6001816002811115610c9e57610c9e611c51565b03610cb257610c808661ffff16868661136f565b610c808661ffff16868661167d565b935093915050565b33610ce960335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610d4d573360009081526066602052604090205460ff16610d4d576040517f320ae52900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d5d6108b56020830183611c2f565b6000610d6f60a0830160808401611fd7565b90506000610d8360c0840160a08501611c2f565b6068805463ffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090921667ffffffffffffffff90941693909317179091555050565b600080600080610de7878787611752565b935093509350935093509350935093565b600080808080610e0c565b60405180910390fd5b610e17888888611752565b94509450945094505093509350935093565b6000610e537fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116610eac5773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355610ece565b3373ffffffffffffffffffffffffffffffffffffffff821614610ece57600080fd5b600054610100900460ff1615808015610eee5750600054600160ff909116105b80610f085750303b158015610f08575060005460ff166001145b610f94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610e03565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610ff257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610ffa61189c565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260666020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055606580547fffffffffffffffffffffffffffffffff000000000000000000000000000000001668056bc75e2d6310000017905560698054702f000000000000000000000000000000006fffffffffffffffffffffffffffffffff9190911617905580156109c357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b611118611277565b606580547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b611163611277565b606a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6111b2611277565b73ffffffffffffffffffffffffffffffffffffffff8116611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610e03565b61125e816112f8565b50565b611269611277565b611273828261193b565b5050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e03565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b63ffffffff8381166000908152606760205260408120606854606954929384938492680100000000000000009004909116906064906113d49070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1689612021565b6113de919061206d565b6113e89190612021565b825490915060009061141c907801000000000000000000000000000000000000000000000000900463ffffffff1688612021565b835460685491925060009167ffffffffffffffff7001000000000000000000000000000000009092048216918491869161145791168b612081565b6114619190612081565b61146b9190612081565b6114759190612021565b60655485549192506fffffffffffffffffffffffffffffffff9081169161149d911683612021565b6114a7919061206d565b935493996fffffffffffffffffffffffffffffffff9094169850929650505050505050565b60008060006114da86611a41565b63ffffffff8082166000908152606760205260408120805493945092909161151f91780100000000000000000000000000000000000000000000000090041688612021565b61152b90610c74612081565b825490915060009061155b90700100000000000000000000000000000000900467ffffffffffffffff1683612021565b63ffffffff808b16600090815260676020526040812080549394509290916115a09178010000000000000000000000000000000000000000000000009004168b612021565b8254909150600090700100000000000000000000000000000000900467ffffffffffffffff166115d08b84612081565b6115da9190612021565b60655487549192506000916fffffffffffffffffffffffffffffffff91821691611605911687612021565b61160f919061206d565b60655485549192506000916fffffffffffffffffffffffffffffffff9182169161163a911685612021565b611644919061206d565b905060006116528284612081565b9554959f6fffffffffffffffffffffffffffffffff9096169e50949c50505050505050505050505050565b63ffffffff808416600090815260676020526040812080549192839283916116c291780100000000000000000000000000000000000000000000000090041687612021565b8254909150600090700100000000000000000000000000000000900467ffffffffffffffff166116f28784612081565b6116fc9190612021565b60655484549192506fffffffffffffffffffffffffffffffff90811691611724911683612021565b61172e919061206d565b925492986fffffffffffffffffffffffffffffffff90931697509195505050505050565b60008080808061176461753089612094565b90508063ffffffff16606e148061178257508063ffffffff1661279f145b8061179457508063ffffffff16614eaf145b156117ae576117a481888861136f565b90955093506117f2565b8063ffffffff16606f14806117ca57508063ffffffff16612794145b806117dc57508063ffffffff16614ea4145b156117f2576117ec8188886114cc565b90955093505b63ffffffff81166000908152606b602052604090205460ff16600281600281111561181f5761181f611c51565b036118395761182f8289896114cc565b909650945061186e565b600181600281111561184d5761184d611c51565b0361185d5761182f82898961136f565b61186882898961167d565b90965094505b505060655460695494989397506fffffffffffffffffffffffffffffffff9081169650909316935090915050565b600054610100900460ff16611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610e03565b610aff611b43565b73ffffffffffffffffffffffffffffffffffffffff8216611988576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146119e2576040519150601f19603f3d011682016040523d82523d6000602084013e6119e7565b606091505b50509050806109c3576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610e03565b600080611a5061753084612094565b90508063ffffffff16606f03611a695750606592915050565b8063ffffffff1661279403611a82575061278992915050565b8063ffffffff16614ea403611a9b5750614e9992915050565b600263ffffffff82166000908152606b602052604090205460ff166002811115611ac757611ac7611c51565b14611b06576040517ff42c33dc00000000000000000000000000000000000000000000000000000000815263ffffffff84166004820152602401610e03565b6127108163ffffffff161015611b1f5750606592915050565b614e208163ffffffff161015611b3957506127b192915050565b50614e9992915050565b600054610100900460ff16611bda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610e03565b610aff336112f8565b803563ffffffff81168114611bf757600080fd5b919050565b600080600060608486031215611c1157600080fd5b611c1a84611be3565b95602085013595506040909401359392505050565b600060208284031215611c4157600080fd5b611c4a82611be3565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310611cbb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b80356fffffffffffffffffffffffffffffffff81168114611bf757600080fd5b600060208284031215611cf357600080fd5b611c4a82611cc1565b60008060208385031215611d0f57600080fd5b823567ffffffffffffffff80821115611d2757600080fd5b818501915085601f830112611d3b57600080fd5b813581811115611d4a57600080fd5b8660208260071b8501011115611d5f57600080fd5b60209290920196919550909350505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611bf757600080fd5b60008060408385031215611da857600080fd5b611db183611d71565b915060208301358015158114611dc657600080fd5b809150509250929050565b60008060208385031215611de457600080fd5b823567ffffffffffffffff80821115611dfc57600080fd5b818501915085601f830112611e1057600080fd5b813581811115611e1f57600080fd5b8660208260061b8501011115611d5f57600080fd5b803561ffff81168114611bf757600080fd5b600080600060608486031215611e5b57600080fd5b611c1a84611e34565b600060c08284031215611e7657600080fd5b50919050565b600060208284031215611e8e57600080fd5b611c4a82611d71565b600060208284031215611ea957600080fd5b611c4a82611e34565b60008060408385031215611ec557600080fd5b611ece83611d71565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b803567ffffffffffffffff81168114611bf757600080fd5b600060608284031215611f3557600080fd5b6040516060810181811067ffffffffffffffff82111715611f7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052611f8b83611cc1565b8152611f9960208401611f0b565b6020820152611faa60408401611be3565b60408201529392505050565b600060208284031215611fc857600080fd5b813560038110611c4a57600080fd5b600060208284031215611fe957600080fd5b611c4a82611f0b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761203857612038611ff2565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261207c5761207c61203e565b500490565b8082018082111561203857612038611ff2565b600063ffffffff808416806120ab576120ab61203e565b9216919091069291505056fea264697066735822122039768bf311242b97f493f46bb58f60f10b9a0e6fee0938e1bc5bca2215f1864964736f6c63430008160033",
691
+ "deployedBytecode": "0x6080604052600436106101a15760003560e01c80638ca2fb08116100e1578063cd68b79b1161008a578063dbbb415511610064578063dbbb4155146106a6578063e0ad121a146106c6578063f2fde38b1461077b578063fd9be5221461079b57600080fd5b8063cd68b79b14610552578063d350ad251461058f578063da26663a146105af57600080fd5b8063c1723a1d116100bb578063c1723a1d146104f8578063c18403271461050b578063c4d66de81461053257600080fd5b80638ca2fb08146104495780638da5cb5b1461048957806392807f58146104b457600080fd5b80635d6d7ccb1161014e5780637760e22d116101285780637760e22d1461036b5780637bc3c9ab1461038b5780637dc438a4146103d157806388a4124c146103f157600080fd5b80635d6d7ccb146102e45780635e280f1114610304578063715018a61461035657600080fd5b80633161b7f61161017f5780633161b7f61461023c57806336a5beba1461025c57806352a72510146102c457600080fd5b806311f2c343146101a6578063223cf5b2146101dd5780632f7cb0b41461021a575b600080fd5b3480156101b257600080fd5b506101ca6101c1366004611bfc565b60009392505050565b6040519081526020015b60405180910390f35b3480156101e957600080fd5b5061020d6101f8366004611c2f565b606b6020526000908152604090205460ff1681565b6040516101d49190611c80565b34801561022657600080fd5b5061023a610235366004611ce1565b6107bb565b005b34801561024857600080fd5b5061023a610257366004611cfc565b6107f8565b34801561026857600080fd5b5060408051808201825260008082526020918201528151808301835260685467ffffffffffffffff811680835263ffffffff680100000000000000009092048216928401928352845190815291511691810191909152016101d4565b3480156102d057600080fd5b5061023a6102df366004611d95565b6109c8565b3480156102f057600080fd5b5061023a6102ff366004611ce1565b610a26565b34801561031057600080fd5b50606a546103319073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d4565b34801561036257600080fd5b5061023a610aed565b34801561037757600080fd5b5061023a610386366004611dd1565b610b01565b34801561039757600080fd5b506103ab6103a6366004611e46565b610bbd565b604080519283526fffffffffffffffffffffffffffffffff9091166020830152016101d4565b3480156103dd57600080fd5b5061023a6103ec366004611e64565b610cc9565b3480156103fd57600080fd5b5061041161040c366004611bfc565b610dd6565b604080519485526fffffffffffffffffffffffffffffffff9384166020860152918316918401919091521660608201526080016101d4565b34801561045557600080fd5b50610479610464366004611e7c565b60666020526000908152604090205460ff1681565b60405190151581526020016101d4565b34801561049557600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610331565b3480156104c057600080fd5b506069546fffffffffffffffffffffffffffffffff165b6040516fffffffffffffffffffffffffffffffff90911681526020016101d4565b610411610506366004611bfc565b610df8565b34801561051757600080fd5b506065546fffffffffffffffffffffffffffffffff166104d7565b34801561053e57600080fd5b5061023a61054d366004611e7c565b610e29565b34801561055e57600080fd5b506069546104d79070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b34801561059b57600080fd5b5061023a6105aa366004611ce1565b611110565b3480156105bb57600080fd5b506106626105ca366004611c2f565b60408051606080820183526000808352602080840182905292840181905263ffffffff94851681526067835283902083519182018452546fffffffffffffffffffffffffffffffff81168252700100000000000000000000000000000000810467ffffffffffffffff169282019290925278010000000000000000000000000000000000000000000000009091049092169082015290565b6040805182516fffffffffffffffffffffffffffffffff16815260208084015167ffffffffffffffff16908201529181015163ffffffff16908201526060016101d4565b3480156106b257600080fd5b5061023a6106c1366004611e7c565b61115b565b3480156106d257600080fd5b506106626106e1366004611e97565b60408051606080820183526000808352602080840182905292840181905261ffff949094168452606782529282902082519384018352546fffffffffffffffffffffffffffffffff8116845267ffffffffffffffff700100000000000000000000000000000000820416918401919091527801000000000000000000000000000000000000000000000000900463ffffffff169082015290565b34801561078757600080fd5b5061023a610796366004611e7c565b6111aa565b3480156107a757600080fd5b5061023a6107b6366004611eb2565b611261565b6107c3611277565b606980546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055565b3361081860335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff161461087c573360009081526066602052604090205460ff1661087c576040517f320ae52900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156109c3573683838381811061089a5761089a611edc565b6080029190910191506109ba90506108b56020830183611c2f565b6108c736849003840160208501611f23565b805160208083015160409384015184516060810186526fffffffffffffffffffffffffffffffff948516815267ffffffffffffffff92831681850190815263ffffffff9283168288019081529783166000908152606790955295909320925183549551965194167fffffffffffffffff000000000000000000000000000000000000000000000000909516949094177001000000000000000000000000000000009590911694909402939093177fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009190921602179055565b5060010161087f565b505050565b6109d0611277565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260666020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b33610a4660335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610aaa573360009081526066602052604090205460ff16610aaa576040517f320ae52900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606980547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b610af5611277565b610aff60006112f8565b565b60005b818110156109c357828282818110610b1e57610b1e611edc565b9050604002016020016020810190610b369190611fb6565b606b6000858585818110610b4c57610b4c611edc565b610b629260206040909202019081019150611c2f565b63ffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836002811115610bb057610bb0611c51565b0217905550600101610b04565b6000808461ffff16606e1480610bd857508461ffff1661279f145b80610be857508461ffff16614eaf145b15610c0557610bfc8561ffff16858561136f565b91509150610cc1565b8461ffff16606f1480610c1d57508461ffff16612794145b80610c2d57508461ffff16614ea4145b15610c4157610bfc8561ffff1685856114cc565b61ffff85166000908152606b602052604090205460ff166002816002811115610c6c57610c6c611c51565b03610c8a57610c808661ffff1686866114cc565b9250925050610cc1565b6001816002811115610c9e57610c9e611c51565b03610cb257610c808661ffff16868661136f565b610c808661ffff16868661167d565b935093915050565b33610ce960335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610d4d573360009081526066602052604090205460ff16610d4d576040517f320ae52900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d5d6108b56020830183611c2f565b6000610d6f60a0830160808401611fd7565b90506000610d8360c0840160a08501611c2f565b6068805463ffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090921667ffffffffffffffff90941693909317179091555050565b600080600080610de7878787611752565b935093509350935093509350935093565b600080808080610e0c565b60405180910390fd5b610e17888888611752565b94509450945094505093509350935093565b6000610e537fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116610eac5773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355610ece565b3373ffffffffffffffffffffffffffffffffffffffff821614610ece57600080fd5b600054610100900460ff1615808015610eee5750600054600160ff909116105b80610f085750303b158015610f08575060005460ff166001145b610f94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610e03565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610ff257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610ffa61189c565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260666020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055606580547fffffffffffffffffffffffffffffffff000000000000000000000000000000001668056bc75e2d6310000017905560698054702f000000000000000000000000000000006fffffffffffffffffffffffffffffffff9190911617905580156109c357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b611118611277565b606580547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b611163611277565b606a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6111b2611277565b73ffffffffffffffffffffffffffffffffffffffff8116611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610e03565b61125e816112f8565b50565b611269611277565b611273828261193b565b5050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e03565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b63ffffffff8381166000908152606760205260408120606854606954929384938492680100000000000000009004909116906064906113d49070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1689612021565b6113de919061206d565b6113e89190612021565b825490915060009061141c907801000000000000000000000000000000000000000000000000900463ffffffff1688612021565b835460685491925060009167ffffffffffffffff7001000000000000000000000000000000009092048216918491869161145791168b612081565b6114619190612081565b61146b9190612081565b6114759190612021565b60655485549192506fffffffffffffffffffffffffffffffff9081169161149d911683612021565b6114a7919061206d565b935493996fffffffffffffffffffffffffffffffff9094169850929650505050505050565b60008060006114da86611a41565b63ffffffff8082166000908152606760205260408120805493945092909161151f91780100000000000000000000000000000000000000000000000090041688612021565b61152b90610c74612081565b825490915060009061155b90700100000000000000000000000000000000900467ffffffffffffffff1683612021565b63ffffffff808b16600090815260676020526040812080549394509290916115a09178010000000000000000000000000000000000000000000000009004168b612021565b8254909150600090700100000000000000000000000000000000900467ffffffffffffffff166115d08b84612081565b6115da9190612021565b60655487549192506000916fffffffffffffffffffffffffffffffff91821691611605911687612021565b61160f919061206d565b60655485549192506000916fffffffffffffffffffffffffffffffff9182169161163a911685612021565b611644919061206d565b905060006116528284612081565b9554959f6fffffffffffffffffffffffffffffffff9096169e50949c50505050505050505050505050565b63ffffffff808416600090815260676020526040812080549192839283916116c291780100000000000000000000000000000000000000000000000090041687612021565b8254909150600090700100000000000000000000000000000000900467ffffffffffffffff166116f28784612081565b6116fc9190612021565b60655484549192506fffffffffffffffffffffffffffffffff90811691611724911683612021565b61172e919061206d565b925492986fffffffffffffffffffffffffffffffff90931697509195505050505050565b60008080808061176461753089612094565b90508063ffffffff16606e148061178257508063ffffffff1661279f145b8061179457508063ffffffff16614eaf145b156117ae576117a481888861136f565b90955093506117f2565b8063ffffffff16606f14806117ca57508063ffffffff16612794145b806117dc57508063ffffffff16614ea4145b156117f2576117ec8188886114cc565b90955093505b63ffffffff81166000908152606b602052604090205460ff16600281600281111561181f5761181f611c51565b036118395761182f8289896114cc565b909650945061186e565b600181600281111561184d5761184d611c51565b0361185d5761182f82898961136f565b61186882898961167d565b90965094505b505060655460695494989397506fffffffffffffffffffffffffffffffff9081169650909316935090915050565b600054610100900460ff16611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610e03565b610aff611b43565b73ffffffffffffffffffffffffffffffffffffffff8216611988576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146119e2576040519150601f19603f3d011682016040523d82523d6000602084013e6119e7565b606091505b50509050806109c3576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610e03565b600080611a5061753084612094565b90508063ffffffff16606f03611a695750606592915050565b8063ffffffff1661279403611a82575061278992915050565b8063ffffffff16614ea403611a9b5750614e9992915050565b600263ffffffff82166000908152606b602052604090205460ff166002811115611ac757611ac7611c51565b14611b06576040517ff42c33dc00000000000000000000000000000000000000000000000000000000815263ffffffff84166004820152602401610e03565b6127108163ffffffff161015611b1f5750606592915050565b614e208163ffffffff161015611b3957506127b192915050565b50614e9992915050565b600054610100900460ff16611bda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610e03565b610aff336112f8565b803563ffffffff81168114611bf757600080fd5b919050565b600080600060608486031215611c1157600080fd5b611c1a84611be3565b95602085013595506040909401359392505050565b600060208284031215611c4157600080fd5b611c4a82611be3565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310611cbb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b80356fffffffffffffffffffffffffffffffff81168114611bf757600080fd5b600060208284031215611cf357600080fd5b611c4a82611cc1565b60008060208385031215611d0f57600080fd5b823567ffffffffffffffff80821115611d2757600080fd5b818501915085601f830112611d3b57600080fd5b813581811115611d4a57600080fd5b8660208260071b8501011115611d5f57600080fd5b60209290920196919550909350505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611bf757600080fd5b60008060408385031215611da857600080fd5b611db183611d71565b915060208301358015158114611dc657600080fd5b809150509250929050565b60008060208385031215611de457600080fd5b823567ffffffffffffffff80821115611dfc57600080fd5b818501915085601f830112611e1057600080fd5b813581811115611e1f57600080fd5b8660208260061b8501011115611d5f57600080fd5b803561ffff81168114611bf757600080fd5b600080600060608486031215611e5b57600080fd5b611c1a84611e34565b600060c08284031215611e7657600080fd5b50919050565b600060208284031215611e8e57600080fd5b611c4a82611d71565b600060208284031215611ea957600080fd5b611c4a82611e34565b60008060408385031215611ec557600080fd5b611ece83611d71565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b803567ffffffffffffffff81168114611bf757600080fd5b600060608284031215611f3557600080fd5b6040516060810181811067ffffffffffffffff82111715611f7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052611f8b83611cc1565b8152611f9960208401611f0b565b6020820152611faa60408401611be3565b60408201529392505050565b600060208284031215611fc857600080fd5b813560038110611c4a57600080fd5b600060208284031215611fe957600080fd5b611c4a82611f0b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761203857612038611ff2565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261207c5761207c61203e565b500490565b8082018082111561203857612038611ff2565b600063ffffffff808416806120ab576120ab61203e565b9216919091069291505056fea264697066735822122039768bf311242b97f493f46bb58f60f10b9a0e6fee0938e1bc5bca2215f1864964736f6c63430008160033",
648
692
  "linkReferences": {},
649
693
  "deployedLinkReferences": {}
650
694
  }
@@ -19,11 +19,6 @@
19
19
  "name": "LZ_PriceFeed_InsufficientFee",
20
20
  "type": "error"
21
21
  },
22
- {
23
- "inputs": [],
24
- "name": "LZ_PriceFeed_OnlyPriceUpdater",
25
- "type": "error"
26
- },
27
22
  {
28
23
  "inputs": [
29
24
  {
@@ -32,7 +27,12 @@
32
27
  "type": "uint32"
33
28
  }
34
29
  ],
35
- "name": "LZ_PriceFeed_UnknownL2Eid",
30
+ "name": "LZ_PriceFeed_NotAnOPStack",
31
+ "type": "error"
32
+ },
33
+ {
34
+ "inputs": [],
35
+ "name": "LZ_PriceFeed_OnlyPriceUpdater",
36
36
  "type": "error"
37
37
  },
38
38
  {
@@ -304,8 +304,8 @@
304
304
  "type": "receive"
305
305
  }
306
306
  ],
307
- "bytecode": "0x60a060405234801561001057600080fd5b506040516112b43803806112b483398101604081905261002f91610090565b61003833610040565b6080526100a9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a257600080fd5b5051919050565b6080516111f06100c460003960006107c801526111f06000f3fe6080604052600436106100695760003560e01c80638da5cb5b116100435780638da5cb5b146100df578063df2b057e14610114578063f2fde38b1461012757600080fd5b806301e3366714610075578063715018a6146100975780637bfa20a9146100ac57600080fd5b3661007057005b600080fd5b34801561008157600080fd5b50610095610090366004610d88565b610147565b005b3480156100a357600080fd5b5061009561015f565b3480156100b857600080fd5b506100cc6100c7366004610dc4565b610173565b6040519081526020015b60405180910390f35b3480156100eb57600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d6565b6100cc610122366004610dc4565b610343565b34801561013357600080fd5b50610095610142366004610e84565b610451565b61014f610508565b61015a838383610589565b505050565b610167610508565b61017160006105b9565b565b60006101826020850185610e9f565b67ffffffffffffffff166000036101e3576101a36040860160208701610ec9565b6040517fd009138a00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b6101ed838361062e565b50600061021261020360a0880160808901610e9f565b67ffffffffffffffff166106d2565b90506000806102246020890189610e84565b73ffffffffffffffffffffffffffffffffffffffff166388a4124c61024f60408b0160208c01610ec9565b8561025d60208c018c610e9f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815263ffffffff939093166004840152602483019190915267ffffffffffffffff166044820152606401608060405180830381865afa1580156102ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f29190610f0d565b9350505091506103358288602001602081019061030f9190610f62565b61031f60c08c0160a08d01610f62565b61032f60608c0160408d01610f86565b8561073e565b93505050505b949350505050565b60006103526020850185610e9f565b67ffffffffffffffff16600003610373576101a36040860160208701610ec9565b61037d838361062e565b50600061039361020360a0880160808901610e9f565b90506000806103a56020890189610e84565b73ffffffffffffffffffffffffffffffffffffffff1663c1723a1d6103d060408b0160208c01610ec9565b856103de60208c018c610e9f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815263ffffffff939093166004840152602483019190915267ffffffffffffffff1660448201526064016080604051808303816000875af11580156102ce573d6000803e3d6000fd5b610459610508565b73ffffffffffffffffffffffffffffffffffffffff81166104fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101da565b610505816105b9565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101da565b73ffffffffffffffffffffffffffffffffffffffff83166105ae5761015a8282610838565b61015a83838361093e565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080821561068a576000806106458686856109ac565b6040517f7085244b00000000000000000000000000000000000000000000000000000000815260ff8516600482015290965092945085935050602490910190506101da565b8083146106c6576040517f04eb6e0c000000000000000000000000000000000000000000000000000000008152600481018290526024016101da565b60009150505b92915050565b6000806106e0604184610fd2565b90506106ed602082611018565b15610715576106fd602082611018565b610707908261102c565b61071290602061103f565b90505b8061072260e0604461103f565b61072c919061103f565b61073790604061103f565b9392505050565b60008061ffff8616156107515785610753565b845b9050600061271061076861ffff84168a610fd2565b6107729190611052565b90506fffffffffffffffffffffffffffffffff841615806107a357506fffffffffffffffffffffffffffffffff8516155b156107b157915061082f9050565b6000846fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000876fffffffffffffffffffffffffffffffff166108049190610fd2565b61080e9190611052565b610818908a61103f565b90508181116108275781610829565b805b93505050505b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216610885576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146108df576040519150601f19603f3d011682016040523d82523d6000602084013e6108e4565b606091505b505090508061015a576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016101da565b73ffffffffffffffffffffffffffffffffffffffff821661098b576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61015a73ffffffffffffffffffffffffffffffffffffffff84168383610a06565b6000368160018401816109c0888884610a93565b60028301929091506109d89089908990600301610aba565b94506002820161ffff821683016109f181838b8d611066565b979b909a50969850505061ffff160193505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261015a908490610adf565b600060028201610aa581848688611066565b610aae91611090565b60f01c95945050505050565b6000838383818110610ace57610ace6110d8565b919091013560f81c95945050505050565b6000610b41826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610bee9092919063ffffffff16565b9050805160001480610b62575080806020019051810190610b629190611107565b61015a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101da565b606061033b8484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051610c22919061114d565b60006040518083038185875af1925050503d8060008114610c5f576040519150601f19603f3d011682016040523d82523d6000602084013e610c64565b606091505b5091509150610c7587838387610c80565b979650505050505050565b60608315610d16578251600003610d0f5773ffffffffffffffffffffffffffffffffffffffff85163b610d0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101da565b508161033b565b61033b8383815115610d2b5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101da9190611169565b803573ffffffffffffffffffffffffffffffffffffffff81168114610d8357600080fd5b919050565b600080600060608486031215610d9d57600080fd5b610da684610d5f565b9250610db460208501610d5f565b9150604084013590509250925092565b600080600080848603610140811215610ddc57600080fd5b60c0811215610dea57600080fd5b85945060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4082011215610e1d57600080fd5b5060c08501925061012085013567ffffffffffffffff80821115610e4057600080fd5b818701915087601f830112610e5457600080fd5b813581811115610e6357600080fd5b886020828501011115610e7557600080fd5b95989497505060200194505050565b600060208284031215610e9657600080fd5b61073782610d5f565b600060208284031215610eb157600080fd5b813567ffffffffffffffff8116811461073757600080fd5b600060208284031215610edb57600080fd5b813563ffffffff8116811461073757600080fd5b6fffffffffffffffffffffffffffffffff8116811461050557600080fd5b60008060008060808587031215610f2357600080fd5b845193506020850151610f3581610eef565b6040860151909350610f4681610eef565b6060860151909250610f5781610eef565b939692955090935050565b600060208284031215610f7457600080fd5b813561ffff8116811461073757600080fd5b600060208284031215610f9857600080fd5b813561073781610eef565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176106cc576106cc610fa3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261102757611027610fe9565b500690565b818103818111156106cc576106cc610fa3565b808201808211156106cc576106cc610fa3565b60008261106157611061610fe9565b500490565b6000808585111561107657600080fd5b8386111561108357600080fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156110d05780818660020360031b1b83161692505b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561111957600080fd5b8151801515811461073757600080fd5b60005b8381101561114457818101518382015260200161112c565b50506000910152565b6000825161115f818460208701611129565b9190910192915050565b6020815260008251806020840152611188816040850160208701611129565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220c20fa11eeace278b2853c10fb9f480a3f0d24fd1e0a8ef87da3b97dfd04e493264736f6c63430008160033",
308
- "deployedBytecode": "0x6080604052600436106100695760003560e01c80638da5cb5b116100435780638da5cb5b146100df578063df2b057e14610114578063f2fde38b1461012757600080fd5b806301e3366714610075578063715018a6146100975780637bfa20a9146100ac57600080fd5b3661007057005b600080fd5b34801561008157600080fd5b50610095610090366004610d88565b610147565b005b3480156100a357600080fd5b5061009561015f565b3480156100b857600080fd5b506100cc6100c7366004610dc4565b610173565b6040519081526020015b60405180910390f35b3480156100eb57600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d6565b6100cc610122366004610dc4565b610343565b34801561013357600080fd5b50610095610142366004610e84565b610451565b61014f610508565b61015a838383610589565b505050565b610167610508565b61017160006105b9565b565b60006101826020850185610e9f565b67ffffffffffffffff166000036101e3576101a36040860160208701610ec9565b6040517fd009138a00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b6101ed838361062e565b50600061021261020360a0880160808901610e9f565b67ffffffffffffffff166106d2565b90506000806102246020890189610e84565b73ffffffffffffffffffffffffffffffffffffffff166388a4124c61024f60408b0160208c01610ec9565b8561025d60208c018c610e9f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815263ffffffff939093166004840152602483019190915267ffffffffffffffff166044820152606401608060405180830381865afa1580156102ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f29190610f0d565b9350505091506103358288602001602081019061030f9190610f62565b61031f60c08c0160a08d01610f62565b61032f60608c0160408d01610f86565b8561073e565b93505050505b949350505050565b60006103526020850185610e9f565b67ffffffffffffffff16600003610373576101a36040860160208701610ec9565b61037d838361062e565b50600061039361020360a0880160808901610e9f565b90506000806103a56020890189610e84565b73ffffffffffffffffffffffffffffffffffffffff1663c1723a1d6103d060408b0160208c01610ec9565b856103de60208c018c610e9f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815263ffffffff939093166004840152602483019190915267ffffffffffffffff1660448201526064016080604051808303816000875af11580156102ce573d6000803e3d6000fd5b610459610508565b73ffffffffffffffffffffffffffffffffffffffff81166104fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101da565b610505816105b9565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101da565b73ffffffffffffffffffffffffffffffffffffffff83166105ae5761015a8282610838565b61015a83838361093e565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080821561068a576000806106458686856109ac565b6040517f7085244b00000000000000000000000000000000000000000000000000000000815260ff8516600482015290965092945085935050602490910190506101da565b8083146106c6576040517f04eb6e0c000000000000000000000000000000000000000000000000000000008152600481018290526024016101da565b60009150505b92915050565b6000806106e0604184610fd2565b90506106ed602082611018565b15610715576106fd602082611018565b610707908261102c565b61071290602061103f565b90505b8061072260e0604461103f565b61072c919061103f565b61073790604061103f565b9392505050565b60008061ffff8616156107515785610753565b845b9050600061271061076861ffff84168a610fd2565b6107729190611052565b90506fffffffffffffffffffffffffffffffff841615806107a357506fffffffffffffffffffffffffffffffff8516155b156107b157915061082f9050565b6000846fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000876fffffffffffffffffffffffffffffffff166108049190610fd2565b61080e9190611052565b610818908a61103f565b90508181116108275781610829565b805b93505050505b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216610885576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146108df576040519150601f19603f3d011682016040523d82523d6000602084013e6108e4565b606091505b505090508061015a576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016101da565b73ffffffffffffffffffffffffffffffffffffffff821661098b576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61015a73ffffffffffffffffffffffffffffffffffffffff84168383610a06565b6000368160018401816109c0888884610a93565b60028301929091506109d89089908990600301610aba565b94506002820161ffff821683016109f181838b8d611066565b979b909a50969850505061ffff160193505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261015a908490610adf565b600060028201610aa581848688611066565b610aae91611090565b60f01c95945050505050565b6000838383818110610ace57610ace6110d8565b919091013560f81c95945050505050565b6000610b41826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610bee9092919063ffffffff16565b9050805160001480610b62575080806020019051810190610b629190611107565b61015a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101da565b606061033b8484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051610c22919061114d565b60006040518083038185875af1925050503d8060008114610c5f576040519150601f19603f3d011682016040523d82523d6000602084013e610c64565b606091505b5091509150610c7587838387610c80565b979650505050505050565b60608315610d16578251600003610d0f5773ffffffffffffffffffffffffffffffffffffffff85163b610d0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101da565b508161033b565b61033b8383815115610d2b5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101da9190611169565b803573ffffffffffffffffffffffffffffffffffffffff81168114610d8357600080fd5b919050565b600080600060608486031215610d9d57600080fd5b610da684610d5f565b9250610db460208501610d5f565b9150604084013590509250925092565b600080600080848603610140811215610ddc57600080fd5b60c0811215610dea57600080fd5b85945060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4082011215610e1d57600080fd5b5060c08501925061012085013567ffffffffffffffff80821115610e4057600080fd5b818701915087601f830112610e5457600080fd5b813581811115610e6357600080fd5b886020828501011115610e7557600080fd5b95989497505060200194505050565b600060208284031215610e9657600080fd5b61073782610d5f565b600060208284031215610eb157600080fd5b813567ffffffffffffffff8116811461073757600080fd5b600060208284031215610edb57600080fd5b813563ffffffff8116811461073757600080fd5b6fffffffffffffffffffffffffffffffff8116811461050557600080fd5b60008060008060808587031215610f2357600080fd5b845193506020850151610f3581610eef565b6040860151909350610f4681610eef565b6060860151909250610f5781610eef565b939692955090935050565b600060208284031215610f7457600080fd5b813561ffff8116811461073757600080fd5b600060208284031215610f9857600080fd5b813561073781610eef565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176106cc576106cc610fa3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261102757611027610fe9565b500690565b818103818111156106cc576106cc610fa3565b808201808211156106cc576106cc610fa3565b60008261106157611061610fe9565b500490565b6000808585111561107657600080fd5b8386111561108357600080fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156110d05780818660020360031b1b83161692505b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561111957600080fd5b8151801515811461073757600080fd5b60005b8381101561114457818101518382015260200161112c565b50506000910152565b6000825161115f818460208701611129565b9190910192915050565b6020815260008251806020840152611188816040850160208701611129565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220c20fa11eeace278b2853c10fb9f480a3f0d24fd1e0a8ef87da3b97dfd04e493264736f6c63430008160033",
307
+ "bytecode": "0x60a060405234801561001057600080fd5b506040516112b43803806112b483398101604081905261002f91610090565b61003833610040565b6080526100a9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a257600080fd5b5051919050565b6080516111f06100c460003960006107c801526111f06000f3fe6080604052600436106100695760003560e01c80638da5cb5b116100435780638da5cb5b146100df578063df2b057e14610114578063f2fde38b1461012757600080fd5b806301e3366714610075578063715018a6146100975780637bfa20a9146100ac57600080fd5b3661007057005b600080fd5b34801561008157600080fd5b50610095610090366004610d88565b610147565b005b3480156100a357600080fd5b5061009561015f565b3480156100b857600080fd5b506100cc6100c7366004610dc4565b610173565b6040519081526020015b60405180910390f35b3480156100eb57600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d6565b6100cc610122366004610dc4565b610343565b34801561013357600080fd5b50610095610142366004610e84565b610451565b61014f610508565b61015a838383610589565b505050565b610167610508565b61017160006105b9565b565b60006101826020850185610e9f565b67ffffffffffffffff166000036101e3576101a36040860160208701610ec9565b6040517fd009138a00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b6101ed838361062e565b50600061021261020360a0880160808901610e9f565b67ffffffffffffffff166106d2565b90506000806102246020890189610e84565b73ffffffffffffffffffffffffffffffffffffffff166388a4124c61024f60408b0160208c01610ec9565b8561025d60208c018c610e9f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815263ffffffff939093166004840152602483019190915267ffffffffffffffff166044820152606401608060405180830381865afa1580156102ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f29190610f0d565b9350505091506103358288602001602081019061030f9190610f62565b61031f60c08c0160a08d01610f62565b61032f60608c0160408d01610f86565b8561073e565b93505050505b949350505050565b60006103526020850185610e9f565b67ffffffffffffffff16600003610373576101a36040860160208701610ec9565b61037d838361062e565b50600061039361020360a0880160808901610e9f565b90506000806103a56020890189610e84565b73ffffffffffffffffffffffffffffffffffffffff1663c1723a1d6103d060408b0160208c01610ec9565b856103de60208c018c610e9f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815263ffffffff939093166004840152602483019190915267ffffffffffffffff1660448201526064016080604051808303816000875af11580156102ce573d6000803e3d6000fd5b610459610508565b73ffffffffffffffffffffffffffffffffffffffff81166104fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101da565b610505816105b9565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101da565b73ffffffffffffffffffffffffffffffffffffffff83166105ae5761015a8282610838565b61015a83838361093e565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080821561068a576000806106458686856109ac565b6040517f7085244b00000000000000000000000000000000000000000000000000000000815260ff8516600482015290965092945085935050602490910190506101da565b8083146106c6576040517f04eb6e0c000000000000000000000000000000000000000000000000000000008152600481018290526024016101da565b60009150505b92915050565b6000806106e0604184610fd2565b90506106ed602082611018565b15610715576106fd602082611018565b610707908261102c565b61071290602061103f565b90505b8061072260e0604461103f565b61072c919061103f565b61073790604061103f565b9392505050565b60008061ffff8616156107515785610753565b845b9050600061271061076861ffff84168a610fd2565b6107729190611052565b90506fffffffffffffffffffffffffffffffff841615806107a357506fffffffffffffffffffffffffffffffff8516155b156107b157915061082f9050565b6000846fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000876fffffffffffffffffffffffffffffffff166108049190610fd2565b61080e9190611052565b610818908a61103f565b90508181116108275781610829565b805b93505050505b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216610885576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146108df576040519150601f19603f3d011682016040523d82523d6000602084013e6108e4565b606091505b505090508061015a576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016101da565b73ffffffffffffffffffffffffffffffffffffffff821661098b576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61015a73ffffffffffffffffffffffffffffffffffffffff84168383610a06565b6000368160018401816109c0888884610a93565b60028301929091506109d89089908990600301610aba565b94506002820161ffff821683016109f181838b8d611066565b979b909a50969850505061ffff160193505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261015a908490610adf565b600060028201610aa581848688611066565b610aae91611090565b60f01c95945050505050565b6000838383818110610ace57610ace6110d8565b919091013560f81c95945050505050565b6000610b41826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610bee9092919063ffffffff16565b9050805160001480610b62575080806020019051810190610b629190611107565b61015a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101da565b606061033b8484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051610c22919061114d565b60006040518083038185875af1925050503d8060008114610c5f576040519150601f19603f3d011682016040523d82523d6000602084013e610c64565b606091505b5091509150610c7587838387610c80565b979650505050505050565b60608315610d16578251600003610d0f5773ffffffffffffffffffffffffffffffffffffffff85163b610d0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101da565b508161033b565b61033b8383815115610d2b5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101da9190611169565b803573ffffffffffffffffffffffffffffffffffffffff81168114610d8357600080fd5b919050565b600080600060608486031215610d9d57600080fd5b610da684610d5f565b9250610db460208501610d5f565b9150604084013590509250925092565b600080600080848603610140811215610ddc57600080fd5b60c0811215610dea57600080fd5b85945060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4082011215610e1d57600080fd5b5060c08501925061012085013567ffffffffffffffff80821115610e4057600080fd5b818701915087601f830112610e5457600080fd5b813581811115610e6357600080fd5b886020828501011115610e7557600080fd5b95989497505060200194505050565b600060208284031215610e9657600080fd5b61073782610d5f565b600060208284031215610eb157600080fd5b813567ffffffffffffffff8116811461073757600080fd5b600060208284031215610edb57600080fd5b813563ffffffff8116811461073757600080fd5b6fffffffffffffffffffffffffffffffff8116811461050557600080fd5b60008060008060808587031215610f2357600080fd5b845193506020850151610f3581610eef565b6040860151909350610f4681610eef565b6060860151909250610f5781610eef565b939692955090935050565b600060208284031215610f7457600080fd5b813561ffff8116811461073757600080fd5b600060208284031215610f9857600080fd5b813561073781610eef565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176106cc576106cc610fa3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261102757611027610fe9565b500690565b818103818111156106cc576106cc610fa3565b808201808211156106cc576106cc610fa3565b60008261106157611061610fe9565b500490565b6000808585111561107657600080fd5b8386111561108357600080fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156110d05780818660020360031b1b83161692505b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561111957600080fd5b8151801515811461073757600080fd5b60005b8381101561114457818101518382015260200161112c565b50506000910152565b6000825161115f818460208701611129565b9190910192915050565b6020815260008251806020840152611188816040850160208701611129565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220e451c6f2f6749102e043ca854031dae5b894904402cd955b3b360b2b9c3e830964736f6c63430008160033",
308
+ "deployedBytecode": "0x6080604052600436106100695760003560e01c80638da5cb5b116100435780638da5cb5b146100df578063df2b057e14610114578063f2fde38b1461012757600080fd5b806301e3366714610075578063715018a6146100975780637bfa20a9146100ac57600080fd5b3661007057005b600080fd5b34801561008157600080fd5b50610095610090366004610d88565b610147565b005b3480156100a357600080fd5b5061009561015f565b3480156100b857600080fd5b506100cc6100c7366004610dc4565b610173565b6040519081526020015b60405180910390f35b3480156100eb57600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d6565b6100cc610122366004610dc4565b610343565b34801561013357600080fd5b50610095610142366004610e84565b610451565b61014f610508565b61015a838383610589565b505050565b610167610508565b61017160006105b9565b565b60006101826020850185610e9f565b67ffffffffffffffff166000036101e3576101a36040860160208701610ec9565b6040517fd009138a00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b6101ed838361062e565b50600061021261020360a0880160808901610e9f565b67ffffffffffffffff166106d2565b90506000806102246020890189610e84565b73ffffffffffffffffffffffffffffffffffffffff166388a4124c61024f60408b0160208c01610ec9565b8561025d60208c018c610e9f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815263ffffffff939093166004840152602483019190915267ffffffffffffffff166044820152606401608060405180830381865afa1580156102ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f29190610f0d565b9350505091506103358288602001602081019061030f9190610f62565b61031f60c08c0160a08d01610f62565b61032f60608c0160408d01610f86565b8561073e565b93505050505b949350505050565b60006103526020850185610e9f565b67ffffffffffffffff16600003610373576101a36040860160208701610ec9565b61037d838361062e565b50600061039361020360a0880160808901610e9f565b90506000806103a56020890189610e84565b73ffffffffffffffffffffffffffffffffffffffff1663c1723a1d6103d060408b0160208c01610ec9565b856103de60208c018c610e9f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815263ffffffff939093166004840152602483019190915267ffffffffffffffff1660448201526064016080604051808303816000875af11580156102ce573d6000803e3d6000fd5b610459610508565b73ffffffffffffffffffffffffffffffffffffffff81166104fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101da565b610505816105b9565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101da565b73ffffffffffffffffffffffffffffffffffffffff83166105ae5761015a8282610838565b61015a83838361093e565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080821561068a576000806106458686856109ac565b6040517f7085244b00000000000000000000000000000000000000000000000000000000815260ff8516600482015290965092945085935050602490910190506101da565b8083146106c6576040517f04eb6e0c000000000000000000000000000000000000000000000000000000008152600481018290526024016101da565b60009150505b92915050565b6000806106e0604184610fd2565b90506106ed602082611018565b15610715576106fd602082611018565b610707908261102c565b61071290602061103f565b90505b8061072260e0604461103f565b61072c919061103f565b61073790604061103f565b9392505050565b60008061ffff8616156107515785610753565b845b9050600061271061076861ffff84168a610fd2565b6107729190611052565b90506fffffffffffffffffffffffffffffffff841615806107a357506fffffffffffffffffffffffffffffffff8516155b156107b157915061082f9050565b6000846fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000876fffffffffffffffffffffffffffffffff166108049190610fd2565b61080e9190611052565b610818908a61103f565b90508181116108275781610829565b805b93505050505b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216610885576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146108df576040519150601f19603f3d011682016040523d82523d6000602084013e6108e4565b606091505b505090508061015a576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016101da565b73ffffffffffffffffffffffffffffffffffffffff821661098b576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61015a73ffffffffffffffffffffffffffffffffffffffff84168383610a06565b6000368160018401816109c0888884610a93565b60028301929091506109d89089908990600301610aba565b94506002820161ffff821683016109f181838b8d611066565b979b909a50969850505061ffff160193505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261015a908490610adf565b600060028201610aa581848688611066565b610aae91611090565b60f01c95945050505050565b6000838383818110610ace57610ace6110d8565b919091013560f81c95945050505050565b6000610b41826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610bee9092919063ffffffff16565b9050805160001480610b62575080806020019051810190610b629190611107565b61015a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101da565b606061033b8484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051610c22919061114d565b60006040518083038185875af1925050503d8060008114610c5f576040519150601f19603f3d011682016040523d82523d6000602084013e610c64565b606091505b5091509150610c7587838387610c80565b979650505050505050565b60608315610d16578251600003610d0f5773ffffffffffffffffffffffffffffffffffffffff85163b610d0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101da565b508161033b565b61033b8383815115610d2b5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101da9190611169565b803573ffffffffffffffffffffffffffffffffffffffff81168114610d8357600080fd5b919050565b600080600060608486031215610d9d57600080fd5b610da684610d5f565b9250610db460208501610d5f565b9150604084013590509250925092565b600080600080848603610140811215610ddc57600080fd5b60c0811215610dea57600080fd5b85945060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4082011215610e1d57600080fd5b5060c08501925061012085013567ffffffffffffffff80821115610e4057600080fd5b818701915087601f830112610e5457600080fd5b813581811115610e6357600080fd5b886020828501011115610e7557600080fd5b95989497505060200194505050565b600060208284031215610e9657600080fd5b61073782610d5f565b600060208284031215610eb157600080fd5b813567ffffffffffffffff8116811461073757600080fd5b600060208284031215610edb57600080fd5b813563ffffffff8116811461073757600080fd5b6fffffffffffffffffffffffffffffffff8116811461050557600080fd5b60008060008060808587031215610f2357600080fd5b845193506020850151610f3581610eef565b6040860151909350610f4681610eef565b6060860151909250610f5781610eef565b939692955090935050565b600060208284031215610f7457600080fd5b813561ffff8116811461073757600080fd5b600060208284031215610f9857600080fd5b813561073781610eef565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176106cc576106cc610fa3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261102757611027610fe9565b500690565b818103818111156106cc576106cc610fa3565b808201808211156106cc576106cc610fa3565b60008261106157611061610fe9565b500490565b6000808585111561107657600080fd5b8386111561108357600080fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156110d05780818660020360031b1b83161692505b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561111957600080fd5b8151801515811461073757600080fd5b60005b8381101561114457818101518382015260200161112c565b50506000910152565b6000825161115f818460208701611129565b9190910192915050565b6020815260008251806020840152611188816040850160208701611129565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220e451c6f2f6749102e043ca854031dae5b894904402cd955b3b360b2b9c3e830964736f6c63430008160033",
309
309
  "linkReferences": {},
310
310
  "deployedLinkReferences": {}
311
311
  }
@@ -302,7 +302,7 @@
302
302
  "type": "uint256"
303
303
  }
304
304
  ],
305
- "stateMutability": "view",
305
+ "stateMutability": "pure",
306
306
  "type": "function"
307
307
  },
308
308
  {
@@ -567,8 +567,8 @@
567
567
  "type": "receive"
568
568
  }
569
569
  ],
570
- "bytecode": "0x608060405234801561001057600080fd5b50611cd6806100206000396000f3fe6080604052600436106100f75760003560e01c80638596f3631161008a578063d135ca9311610059578063d135ca9314610352578063dfdd8b9014610373578063f0b81bb414610393578063f2fde38b146103b357600080fd5b80638596f363146102515780638da5cb5b146102715780639e9449651461029c578063b44966801461032457600080fd5b806371a6fbfe116100c657806371a6fbfe146101c4578063724e78da146101e4578063741bef1a146102045780637ebef5291461023157600080fd5b806301e336671461010357806317b00e7d146101255780636a22d8cc14610182578063715018a6146101af57600080fd5b366100fe57005b600080fd5b34801561010f57600080fd5b5061012361011e366004611569565b6103d3565b005b34801561013157600080fd5b506065546101589062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018e57600080fd5b506066546101589073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101bb57600080fd5b50610123610443565b3480156101d057600080fd5b506101236101df3660046115b7565b610457565b3480156101f057600080fd5b506101236101ff3660046115d9565b6104c7565b34801561021057600080fd5b506067546101589073ffffffffffffffffffffffffffffffffffffffff1681565b34801561023d57600080fd5b5061012361024c3660046115f4565b610542565b34801561025d57600080fd5b5061012361026c366004611637565b610826565b34801561027d57600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610158565b3480156102a857600080fd5b506102f36102b73660046116c0565b60686020526000908152604090205467ffffffffffffffff8116906801000000000000000090046fffffffffffffffffffffffffffffffff1682565b6040805167ffffffffffffffff90931683526fffffffffffffffffffffffffffffffff909116602083015201610179565b34801561033057600080fd5b5060655461033f9061ffff1681565b60405161ffff9091168152602001610179565b61036561036036600461176b565b610974565b604051908152602001610179565b34801561037f57600080fd5b5061012361038e3660046115d9565b610bb3565b34801561039f57600080fd5b506103656103ae3660046118ac565b610c2e565b3480156103bf57600080fd5b506101236103ce3660046115d9565b610cbf565b6103db610d76565b6103e6838383610df7565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e56209060600160405180910390a1505050565b61044b610d76565b6104556000610e2c565b565b61045f610d76565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527f9cdcd7ab8980314cc1c51bbe119a035a775ddb353b9b897287d010d00f4bb01c906020015b60405180910390a150565b6104cf610d76565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f40d8738b990e6ff9a2f56f11247e657a1e7070472260b020a4fc3ab1844787bd906020016104bc565b600061056c7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff81166105c55773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103556105e7565b3373ffffffffffffffffffffffffffffffffffffffff8216146105e757600080fd5b600054610100900460ff16158080156106075750600054600160ff909116105b806106215750303b158015610621575060005460ff166001145b6106b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561071057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610718610ea3565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691909117909155606580547fffffffffffffffffffff000000000000000000000000000000000000000000001662010000928716929092027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169190911761ffff8516179055801561081f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b61082e610d76565b60005b81811015610936573683838381811061084c5761084c611924565b90506060020190506040518060400160405280826020016020810190610872919061196b565b67ffffffffffffffff16815260200161089160608401604085016119a6565b6fffffffffffffffffffffffffffffffff169052606860006108b660208501856116c0565b63ffffffff1681526020808201929092526040016000208251815493909201516fffffffffffffffffffffffffffffffff1668010000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090931667ffffffffffffffff9092169190911791909117905550600101610831565b507f4bc47f7ad04f6122b687e6997c1313863ab8340f575aedbf8c2496fa5274861b82826040516109689291906119c1565b60405180910390a15050565b600085606001356000036109ca5761098f60208801886116c0565b6040517ff0951e9700000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024016106a9565b8215610a02576040517f26cbb93300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a118760600135610f42565b9050610a3c610a266060890160408a016115b7565b610a3660808b0160608c016115b7565b83610f6a565b91504781811015610b1a576065546040517f1271241700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301526201000090920490911690631271241790602401600060405180830381600087803b158015610abb57600080fd5b505af1158015610acf573d6000803e3d6000fd5b5050505047905081811015610b1a576040517f576cbba300000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044016106a9565b60665473ffffffffffffffffffffffffffffffffffffffff16630c93e3bb8333610b448c80611a4a565b610b5160208f018f611a4a565b8e306040518963ffffffff1660e01b8152600401610b759796959493929190611b66565b6000604051808303818588803b158015610b8e57600080fd5b505af1158015610ba2573d6000803e3d6000fd5b505050505050509695505050505050565b610bbb610d76565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f83650e857191635cdf372edf115c49497fa8a7db67978cab532ffa395405803a906020016104bc565b60008360600135600003610c495761098f60208601866116c0565b8115610c81576040517f26cbb93300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c908560600135610f42565b9050610cb5610ca560608701604088016115b7565b610a366080890160608a016115b7565b9695505050505050565b610cc7610d76565b73ffffffffffffffffffffffffffffffffffffffff8116610d6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106a9565b610d7381610e2c565b50565b60335473ffffffffffffffffffffffffffffffffffffffff163314610455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a9565b73ffffffffffffffffffffffffffffffffffffffff8316610e2157610e1c8282610fa5565b505050565b610e1c8383836110ab565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610f3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106a9565b610455611119565b60655460009061271090610f5a9061ffff1684611bd6565b610f649190611c14565b92915050565b60008061ffff851615610f7d5784610f7f565b835b61ffff169050612710610f928285611bd6565b610f9c9190611c14565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216610ff2576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461104c576040519150601f19603f3d011682016040523d82523d6000602084013e611051565b606091505b5050905080610e1c576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016106a9565b73ffffffffffffffffffffffffffffffffffffffff82166110f8576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e1c73ffffffffffffffffffffffffffffffffffffffff841683836111b9565b600054610100900460ff166111b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106a9565b61045533610e2c565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610e1c92869291600091611284918516908490611331565b90508051600014806112a55750808060200190518101906112a59190611c4f565b610e1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106a9565b60606113408484600085611348565b949350505050565b6060824710156113da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106a9565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114039190611c71565b60006040518083038185875af1925050503d8060008114611440576040519150601f19603f3d011682016040523d82523d6000602084013e611445565b606091505b509150915061145687838387611461565b979650505050505050565b606083156114f75782516000036114f05773ffffffffffffffffffffffffffffffffffffffff85163b6114f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a9565b5081611340565b611340838381511561150c5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a99190611c8d565b803573ffffffffffffffffffffffffffffffffffffffff8116811461156457600080fd5b919050565b60008060006060848603121561157e57600080fd5b61158784611540565b925061159560208501611540565b9150604084013590509250925092565b803561ffff8116811461156457600080fd5b6000602082840312156115c957600080fd5b6115d2826115a5565b9392505050565b6000602082840312156115eb57600080fd5b6115d282611540565b60008060006060848603121561160957600080fd5b61161284611540565b925061162060208501611540565b915061162e604085016115a5565b90509250925092565b6000806020838503121561164a57600080fd5b823567ffffffffffffffff8082111561166257600080fd5b818501915085601f83011261167657600080fd5b81358181111561168557600080fd5b86602060608302850101111561169a57600080fd5b60209290920196919550909350505050565b803563ffffffff8116811461156457600080fd5b6000602082840312156116d257600080fd5b6115d2826116ac565b6000608082840312156116ed57600080fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008083601f84011261173457600080fd5b50813567ffffffffffffffff81111561174c57600080fd5b60208301915083602082850101111561176457600080fd5b9250929050565b600080600080600080610100878903121561178557600080fd5b61178f88886116db565b9550608087013567ffffffffffffffff808211156117ac57600080fd5b6117b88a838b016116db565b965060a08901359150808211156117ce57600080fd5b818901915089601f8301126117e257600080fd5b8135818111156117f4576117f46116f3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561183a5761183a6116f3565b816040528281528c602084870101111561185357600080fd5b8260208601602083013760006020848301015280985050505060c089013591508082111561188057600080fd5b5061188d89828a01611722565b90945092506118a0905060e08801611540565b90509295509295509295565b60008060008060c085870312156118c257600080fd5b6118cc86866116db565b9350608085013567ffffffffffffffff808211156118e957600080fd5b6118f5888389016116db565b945060a087013591508082111561190b57600080fd5b5061191887828801611722565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b803567ffffffffffffffff8116811461156457600080fd5b60006020828403121561197d57600080fd5b6115d282611953565b80356fffffffffffffffffffffffffffffffff8116811461156457600080fd5b6000602082840312156119b857600080fd5b6115d282611986565b6020808252818101839052600090604080840186845b87811015611a3d5763ffffffff6119ed836116ac565b16835267ffffffffffffffff611a04868401611953565b16858401526fffffffffffffffffffffffffffffffff611a25858401611986565b168385015260609283019291909101906001016119d7565b5090979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a7f57600080fd5b83018035915067ffffffffffffffff821115611a9a57600080fd5b60200191503681900382131561176457600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60005b83811015611b13578181015183820152602001611afb565b50506000910152565b60008151808452611b34816020860160208601611af8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835260a06020840152611b9760a08401898b611aaf565b8381036040850152611baa81888a611aaf565b90508381036060850152611bbe8187611b1c565b92505080841660808401525098975050505050505050565b8082028115828204841417610f64577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082611c4a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215611c6157600080fd5b815180151581146115d257600080fd5b60008251611c83818460208701611af8565b9190910192915050565b6020815260006115d26020830184611b1c56fea2646970667358221220747100831b5a8b95e736292519b022b819d93cfa6b80572a25d2e1f4151dc95c64736f6c63430008160033",
571
- "deployedBytecode": "0x6080604052600436106100f75760003560e01c80638596f3631161008a578063d135ca9311610059578063d135ca9314610352578063dfdd8b9014610373578063f0b81bb414610393578063f2fde38b146103b357600080fd5b80638596f363146102515780638da5cb5b146102715780639e9449651461029c578063b44966801461032457600080fd5b806371a6fbfe116100c657806371a6fbfe146101c4578063724e78da146101e4578063741bef1a146102045780637ebef5291461023157600080fd5b806301e336671461010357806317b00e7d146101255780636a22d8cc14610182578063715018a6146101af57600080fd5b366100fe57005b600080fd5b34801561010f57600080fd5b5061012361011e366004611569565b6103d3565b005b34801561013157600080fd5b506065546101589062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018e57600080fd5b506066546101589073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101bb57600080fd5b50610123610443565b3480156101d057600080fd5b506101236101df3660046115b7565b610457565b3480156101f057600080fd5b506101236101ff3660046115d9565b6104c7565b34801561021057600080fd5b506067546101589073ffffffffffffffffffffffffffffffffffffffff1681565b34801561023d57600080fd5b5061012361024c3660046115f4565b610542565b34801561025d57600080fd5b5061012361026c366004611637565b610826565b34801561027d57600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610158565b3480156102a857600080fd5b506102f36102b73660046116c0565b60686020526000908152604090205467ffffffffffffffff8116906801000000000000000090046fffffffffffffffffffffffffffffffff1682565b6040805167ffffffffffffffff90931683526fffffffffffffffffffffffffffffffff909116602083015201610179565b34801561033057600080fd5b5060655461033f9061ffff1681565b60405161ffff9091168152602001610179565b61036561036036600461176b565b610974565b604051908152602001610179565b34801561037f57600080fd5b5061012361038e3660046115d9565b610bb3565b34801561039f57600080fd5b506103656103ae3660046118ac565b610c2e565b3480156103bf57600080fd5b506101236103ce3660046115d9565b610cbf565b6103db610d76565b6103e6838383610df7565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e56209060600160405180910390a1505050565b61044b610d76565b6104556000610e2c565b565b61045f610d76565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527f9cdcd7ab8980314cc1c51bbe119a035a775ddb353b9b897287d010d00f4bb01c906020015b60405180910390a150565b6104cf610d76565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f40d8738b990e6ff9a2f56f11247e657a1e7070472260b020a4fc3ab1844787bd906020016104bc565b600061056c7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff81166105c55773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103556105e7565b3373ffffffffffffffffffffffffffffffffffffffff8216146105e757600080fd5b600054610100900460ff16158080156106075750600054600160ff909116105b806106215750303b158015610621575060005460ff166001145b6106b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561071057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610718610ea3565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691909117909155606580547fffffffffffffffffffff000000000000000000000000000000000000000000001662010000928716929092027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169190911761ffff8516179055801561081f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b61082e610d76565b60005b81811015610936573683838381811061084c5761084c611924565b90506060020190506040518060400160405280826020016020810190610872919061196b565b67ffffffffffffffff16815260200161089160608401604085016119a6565b6fffffffffffffffffffffffffffffffff169052606860006108b660208501856116c0565b63ffffffff1681526020808201929092526040016000208251815493909201516fffffffffffffffffffffffffffffffff1668010000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090931667ffffffffffffffff9092169190911791909117905550600101610831565b507f4bc47f7ad04f6122b687e6997c1313863ab8340f575aedbf8c2496fa5274861b82826040516109689291906119c1565b60405180910390a15050565b600085606001356000036109ca5761098f60208801886116c0565b6040517ff0951e9700000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024016106a9565b8215610a02576040517f26cbb93300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a118760600135610f42565b9050610a3c610a266060890160408a016115b7565b610a3660808b0160608c016115b7565b83610f6a565b91504781811015610b1a576065546040517f1271241700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301526201000090920490911690631271241790602401600060405180830381600087803b158015610abb57600080fd5b505af1158015610acf573d6000803e3d6000fd5b5050505047905081811015610b1a576040517f576cbba300000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044016106a9565b60665473ffffffffffffffffffffffffffffffffffffffff16630c93e3bb8333610b448c80611a4a565b610b5160208f018f611a4a565b8e306040518963ffffffff1660e01b8152600401610b759796959493929190611b66565b6000604051808303818588803b158015610b8e57600080fd5b505af1158015610ba2573d6000803e3d6000fd5b505050505050509695505050505050565b610bbb610d76565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f83650e857191635cdf372edf115c49497fa8a7db67978cab532ffa395405803a906020016104bc565b60008360600135600003610c495761098f60208601866116c0565b8115610c81576040517f26cbb93300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c908560600135610f42565b9050610cb5610ca560608701604088016115b7565b610a366080890160608a016115b7565b9695505050505050565b610cc7610d76565b73ffffffffffffffffffffffffffffffffffffffff8116610d6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106a9565b610d7381610e2c565b50565b60335473ffffffffffffffffffffffffffffffffffffffff163314610455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a9565b73ffffffffffffffffffffffffffffffffffffffff8316610e2157610e1c8282610fa5565b505050565b610e1c8383836110ab565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610f3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106a9565b610455611119565b60655460009061271090610f5a9061ffff1684611bd6565b610f649190611c14565b92915050565b60008061ffff851615610f7d5784610f7f565b835b61ffff169050612710610f928285611bd6565b610f9c9190611c14565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216610ff2576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461104c576040519150601f19603f3d011682016040523d82523d6000602084013e611051565b606091505b5050905080610e1c576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016106a9565b73ffffffffffffffffffffffffffffffffffffffff82166110f8576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e1c73ffffffffffffffffffffffffffffffffffffffff841683836111b9565b600054610100900460ff166111b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106a9565b61045533610e2c565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610e1c92869291600091611284918516908490611331565b90508051600014806112a55750808060200190518101906112a59190611c4f565b610e1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106a9565b60606113408484600085611348565b949350505050565b6060824710156113da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106a9565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114039190611c71565b60006040518083038185875af1925050503d8060008114611440576040519150601f19603f3d011682016040523d82523d6000602084013e611445565b606091505b509150915061145687838387611461565b979650505050505050565b606083156114f75782516000036114f05773ffffffffffffffffffffffffffffffffffffffff85163b6114f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a9565b5081611340565b611340838381511561150c5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a99190611c8d565b803573ffffffffffffffffffffffffffffffffffffffff8116811461156457600080fd5b919050565b60008060006060848603121561157e57600080fd5b61158784611540565b925061159560208501611540565b9150604084013590509250925092565b803561ffff8116811461156457600080fd5b6000602082840312156115c957600080fd5b6115d2826115a5565b9392505050565b6000602082840312156115eb57600080fd5b6115d282611540565b60008060006060848603121561160957600080fd5b61161284611540565b925061162060208501611540565b915061162e604085016115a5565b90509250925092565b6000806020838503121561164a57600080fd5b823567ffffffffffffffff8082111561166257600080fd5b818501915085601f83011261167657600080fd5b81358181111561168557600080fd5b86602060608302850101111561169a57600080fd5b60209290920196919550909350505050565b803563ffffffff8116811461156457600080fd5b6000602082840312156116d257600080fd5b6115d2826116ac565b6000608082840312156116ed57600080fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008083601f84011261173457600080fd5b50813567ffffffffffffffff81111561174c57600080fd5b60208301915083602082850101111561176457600080fd5b9250929050565b600080600080600080610100878903121561178557600080fd5b61178f88886116db565b9550608087013567ffffffffffffffff808211156117ac57600080fd5b6117b88a838b016116db565b965060a08901359150808211156117ce57600080fd5b818901915089601f8301126117e257600080fd5b8135818111156117f4576117f46116f3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561183a5761183a6116f3565b816040528281528c602084870101111561185357600080fd5b8260208601602083013760006020848301015280985050505060c089013591508082111561188057600080fd5b5061188d89828a01611722565b90945092506118a0905060e08801611540565b90509295509295509295565b60008060008060c085870312156118c257600080fd5b6118cc86866116db565b9350608085013567ffffffffffffffff808211156118e957600080fd5b6118f5888389016116db565b945060a087013591508082111561190b57600080fd5b5061191887828801611722565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b803567ffffffffffffffff8116811461156457600080fd5b60006020828403121561197d57600080fd5b6115d282611953565b80356fffffffffffffffffffffffffffffffff8116811461156457600080fd5b6000602082840312156119b857600080fd5b6115d282611986565b6020808252818101839052600090604080840186845b87811015611a3d5763ffffffff6119ed836116ac565b16835267ffffffffffffffff611a04868401611953565b16858401526fffffffffffffffffffffffffffffffff611a25858401611986565b168385015260609283019291909101906001016119d7565b5090979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a7f57600080fd5b83018035915067ffffffffffffffff821115611a9a57600080fd5b60200191503681900382131561176457600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60005b83811015611b13578181015183820152602001611afb565b50506000910152565b60008151808452611b34816020860160208601611af8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835260a06020840152611b9760a08401898b611aaf565b8381036040850152611baa81888a611aaf565b90508381036060850152611bbe8187611b1c565b92505080841660808401525098975050505050505050565b8082028115828204841417610f64577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082611c4a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215611c6157600080fd5b815180151581146115d257600080fd5b60008251611c83818460208701611af8565b9190910192915050565b6020815260006115d26020830184611b1c56fea2646970667358221220747100831b5a8b95e736292519b022b819d93cfa6b80572a25d2e1f4151dc95c64736f6c63430008160033",
570
+ "bytecode": "0x608060405234801561001057600080fd5b50611cc9806100206000396000f3fe6080604052600436106100f75760003560e01c80638596f3631161008a578063d135ca9311610059578063d135ca9314610352578063dfdd8b9014610373578063f0b81bb414610393578063f2fde38b146103b357600080fd5b80638596f363146102515780638da5cb5b146102715780639e9449651461029c578063b44966801461032457600080fd5b806371a6fbfe116100c657806371a6fbfe146101c4578063724e78da146101e4578063741bef1a146102045780637ebef5291461023157600080fd5b806301e336671461010357806317b00e7d146101255780636a22d8cc14610182578063715018a6146101af57600080fd5b366100fe57005b600080fd5b34801561010f57600080fd5b5061012361011e36600461155c565b6103d3565b005b34801561013157600080fd5b506065546101589062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018e57600080fd5b506066546101589073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101bb57600080fd5b50610123610443565b3480156101d057600080fd5b506101236101df3660046115aa565b610457565b3480156101f057600080fd5b506101236101ff3660046115cc565b6104c7565b34801561021057600080fd5b506067546101589073ffffffffffffffffffffffffffffffffffffffff1681565b34801561023d57600080fd5b5061012361024c3660046115e7565b610542565b34801561025d57600080fd5b5061012361026c36600461162a565b610826565b34801561027d57600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610158565b3480156102a857600080fd5b506102f36102b73660046116b3565b60686020526000908152604090205467ffffffffffffffff8116906801000000000000000090046fffffffffffffffffffffffffffffffff1682565b6040805167ffffffffffffffff90931683526fffffffffffffffffffffffffffffffff909116602083015201610179565b34801561033057600080fd5b5060655461033f9061ffff1681565b60405161ffff9091168152602001610179565b61036561036036600461175e565b610974565b604051908152602001610179565b34801561037f57600080fd5b5061012361038e3660046115cc565b610bb7565b34801561039f57600080fd5b506103656103ae36600461189f565b610c32565b3480156103bf57600080fd5b506101236103ce3660046115cc565b610cbb565b6103db610d72565b6103e6838383610df3565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e56209060600160405180910390a1505050565b61044b610d72565b6104556000610e28565b565b61045f610d72565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527f9cdcd7ab8980314cc1c51bbe119a035a775ddb353b9b897287d010d00f4bb01c906020015b60405180910390a150565b6104cf610d72565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f40d8738b990e6ff9a2f56f11247e657a1e7070472260b020a4fc3ab1844787bd906020016104bc565b600061056c7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff81166105c55773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103556105e7565b3373ffffffffffffffffffffffffffffffffffffffff8216146105e757600080fd5b600054610100900460ff16158080156106075750600054600160ff909116105b806106215750303b158015610621575060005460ff166001145b6106b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561071057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610718610e9f565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691909117909155606580547fffffffffffffffffffff000000000000000000000000000000000000000000001662010000928716929092027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169190911761ffff8516179055801561081f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b61082e610d72565b60005b81811015610936573683838381811061084c5761084c611917565b90506060020190506040518060400160405280826020016020810190610872919061195e565b67ffffffffffffffff1681526020016108916060840160408501611999565b6fffffffffffffffffffffffffffffffff169052606860006108b660208501856116b3565b63ffffffff1681526020808201929092526040016000208251815493909201516fffffffffffffffffffffffffffffffff1668010000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090931667ffffffffffffffff9092169190911791909117905550600101610831565b507f4bc47f7ad04f6122b687e6997c1313863ab8340f575aedbf8c2496fa5274861b82826040516109689291906119b4565b60405180910390a15050565b600085606001356000036109ca5761098f60208801886116b3565b6040517ff0951e9700000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024016106a9565b8215610a02576040517f26cbb93300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a2f610a1560608801604089016115aa565b610a2560808a0160608b016115aa565b8860600135610f3e565b90506000610a408760600135610f70565b90504781811015610b1e576065546040517f1271241700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301526201000090920490911690631271241790602401600060405180830381600087803b158015610abf57600080fd5b505af1158015610ad3573d6000803e3d6000fd5b5050505047905081811015610b1e576040517f576cbba300000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044016106a9565b60665473ffffffffffffffffffffffffffffffffffffffff16630c93e3bb8333610b488c80611a3d565b610b5560208f018f611a3d565b8e306040518963ffffffff1660e01b8152600401610b799796959493929190611b59565b6000604051808303818588803b158015610b9257600080fd5b505af1158015610ba6573d6000803e3d6000fd5b505050505050509695505050505050565b610bbf610d72565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f83650e857191635cdf372edf115c49497fa8a7db67978cab532ffa395405803a906020016104bc565b60008360600135600003610c4d5761098f60208601866116b3565b8115610c85576040517f26cbb93300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cb2610c9860608601604087016115aa565b610ca860808801606089016115aa565b8660600135610f3e565b95945050505050565b610cc3610d72565b73ffffffffffffffffffffffffffffffffffffffff8116610d66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106a9565b610d6f81610e28565b50565b60335473ffffffffffffffffffffffffffffffffffffffff163314610455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a9565b73ffffffffffffffffffffffffffffffffffffffff8316610e1d57610e188282610f98565b505050565b610e1883838361109e565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610f36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106a9565b61045561110c565b60008061ffff851615610f515784610f53565b835b61ffff169050612710610f668285611bc9565b610cb29190611c07565b60655460009061271090610f889061ffff1684611bc9565b610f929190611c07565b92915050565b73ffffffffffffffffffffffffffffffffffffffff8216610fe5576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461103f576040519150601f19603f3d011682016040523d82523d6000602084013e611044565b606091505b5050905080610e18576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016106a9565b73ffffffffffffffffffffffffffffffffffffffff82166110eb576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e1873ffffffffffffffffffffffffffffffffffffffff841683836111ac565b600054610100900460ff166111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106a9565b61045533610e28565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610e1892869291600091611277918516908490611324565b90508051600014806112985750808060200190518101906112989190611c42565b610e18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106a9565b6060611333848460008561133b565b949350505050565b6060824710156113cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106a9565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516113f69190611c64565b60006040518083038185875af1925050503d8060008114611433576040519150601f19603f3d011682016040523d82523d6000602084013e611438565b606091505b509150915061144987838387611454565b979650505050505050565b606083156114ea5782516000036114e35773ffffffffffffffffffffffffffffffffffffffff85163b6114e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a9565b5081611333565b61133383838151156114ff5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a99190611c80565b803573ffffffffffffffffffffffffffffffffffffffff8116811461155757600080fd5b919050565b60008060006060848603121561157157600080fd5b61157a84611533565b925061158860208501611533565b9150604084013590509250925092565b803561ffff8116811461155757600080fd5b6000602082840312156115bc57600080fd5b6115c582611598565b9392505050565b6000602082840312156115de57600080fd5b6115c582611533565b6000806000606084860312156115fc57600080fd5b61160584611533565b925061161360208501611533565b915061162160408501611598565b90509250925092565b6000806020838503121561163d57600080fd5b823567ffffffffffffffff8082111561165557600080fd5b818501915085601f83011261166957600080fd5b81358181111561167857600080fd5b86602060608302850101111561168d57600080fd5b60209290920196919550909350505050565b803563ffffffff8116811461155757600080fd5b6000602082840312156116c557600080fd5b6115c58261169f565b6000608082840312156116e057600080fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008083601f84011261172757600080fd5b50813567ffffffffffffffff81111561173f57600080fd5b60208301915083602082850101111561175757600080fd5b9250929050565b600080600080600080610100878903121561177857600080fd5b61178288886116ce565b9550608087013567ffffffffffffffff8082111561179f57600080fd5b6117ab8a838b016116ce565b965060a08901359150808211156117c157600080fd5b818901915089601f8301126117d557600080fd5b8135818111156117e7576117e76116e6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561182d5761182d6116e6565b816040528281528c602084870101111561184657600080fd5b8260208601602083013760006020848301015280985050505060c089013591508082111561187357600080fd5b5061188089828a01611715565b9094509250611893905060e08801611533565b90509295509295509295565b60008060008060c085870312156118b557600080fd5b6118bf86866116ce565b9350608085013567ffffffffffffffff808211156118dc57600080fd5b6118e8888389016116ce565b945060a08701359150808211156118fe57600080fd5b5061190b87828801611715565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b803567ffffffffffffffff8116811461155757600080fd5b60006020828403121561197057600080fd5b6115c582611946565b80356fffffffffffffffffffffffffffffffff8116811461155757600080fd5b6000602082840312156119ab57600080fd5b6115c582611979565b6020808252818101839052600090604080840186845b87811015611a305763ffffffff6119e08361169f565b16835267ffffffffffffffff6119f7868401611946565b16858401526fffffffffffffffffffffffffffffffff611a18858401611979565b168385015260609283019291909101906001016119ca565b5090979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a7257600080fd5b83018035915067ffffffffffffffff821115611a8d57600080fd5b60200191503681900382131561175757600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60005b83811015611b06578181015183820152602001611aee565b50506000910152565b60008151808452611b27816020860160208601611aeb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835260a06020840152611b8a60a08401898b611aa2565b8381036040850152611b9d81888a611aa2565b90508381036060850152611bb18187611b0f565b92505080841660808401525098975050505050505050565b8082028115828204841417610f92577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082611c3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215611c5457600080fd5b815180151581146115c557600080fd5b60008251611c76818460208701611aeb565b9190910192915050565b6020815260006115c56020830184611b0f56fea2646970667358221220341084d743be51f24cd3f62bb4e7cd712d16ef0eead90b2b1e85d7884e3e5f2264736f6c63430008160033",
571
+ "deployedBytecode": "0x6080604052600436106100f75760003560e01c80638596f3631161008a578063d135ca9311610059578063d135ca9314610352578063dfdd8b9014610373578063f0b81bb414610393578063f2fde38b146103b357600080fd5b80638596f363146102515780638da5cb5b146102715780639e9449651461029c578063b44966801461032457600080fd5b806371a6fbfe116100c657806371a6fbfe146101c4578063724e78da146101e4578063741bef1a146102045780637ebef5291461023157600080fd5b806301e336671461010357806317b00e7d146101255780636a22d8cc14610182578063715018a6146101af57600080fd5b366100fe57005b600080fd5b34801561010f57600080fd5b5061012361011e36600461155c565b6103d3565b005b34801561013157600080fd5b506065546101589062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018e57600080fd5b506066546101589073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101bb57600080fd5b50610123610443565b3480156101d057600080fd5b506101236101df3660046115aa565b610457565b3480156101f057600080fd5b506101236101ff3660046115cc565b6104c7565b34801561021057600080fd5b506067546101589073ffffffffffffffffffffffffffffffffffffffff1681565b34801561023d57600080fd5b5061012361024c3660046115e7565b610542565b34801561025d57600080fd5b5061012361026c36600461162a565b610826565b34801561027d57600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610158565b3480156102a857600080fd5b506102f36102b73660046116b3565b60686020526000908152604090205467ffffffffffffffff8116906801000000000000000090046fffffffffffffffffffffffffffffffff1682565b6040805167ffffffffffffffff90931683526fffffffffffffffffffffffffffffffff909116602083015201610179565b34801561033057600080fd5b5060655461033f9061ffff1681565b60405161ffff9091168152602001610179565b61036561036036600461175e565b610974565b604051908152602001610179565b34801561037f57600080fd5b5061012361038e3660046115cc565b610bb7565b34801561039f57600080fd5b506103656103ae36600461189f565b610c32565b3480156103bf57600080fd5b506101236103ce3660046115cc565b610cbb565b6103db610d72565b6103e6838383610df3565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e56209060600160405180910390a1505050565b61044b610d72565b6104556000610e28565b565b61045f610d72565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527f9cdcd7ab8980314cc1c51bbe119a035a775ddb353b9b897287d010d00f4bb01c906020015b60405180910390a150565b6104cf610d72565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f40d8738b990e6ff9a2f56f11247e657a1e7070472260b020a4fc3ab1844787bd906020016104bc565b600061056c7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff81166105c55773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103556105e7565b3373ffffffffffffffffffffffffffffffffffffffff8216146105e757600080fd5b600054610100900460ff16158080156106075750600054600160ff909116105b806106215750303b158015610621575060005460ff166001145b6106b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561071057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610718610e9f565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691909117909155606580547fffffffffffffffffffff000000000000000000000000000000000000000000001662010000928716929092027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169190911761ffff8516179055801561081f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b61082e610d72565b60005b81811015610936573683838381811061084c5761084c611917565b90506060020190506040518060400160405280826020016020810190610872919061195e565b67ffffffffffffffff1681526020016108916060840160408501611999565b6fffffffffffffffffffffffffffffffff169052606860006108b660208501856116b3565b63ffffffff1681526020808201929092526040016000208251815493909201516fffffffffffffffffffffffffffffffff1668010000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090931667ffffffffffffffff9092169190911791909117905550600101610831565b507f4bc47f7ad04f6122b687e6997c1313863ab8340f575aedbf8c2496fa5274861b82826040516109689291906119b4565b60405180910390a15050565b600085606001356000036109ca5761098f60208801886116b3565b6040517ff0951e9700000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024016106a9565b8215610a02576040517f26cbb93300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a2f610a1560608801604089016115aa565b610a2560808a0160608b016115aa565b8860600135610f3e565b90506000610a408760600135610f70565b90504781811015610b1e576065546040517f1271241700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301526201000090920490911690631271241790602401600060405180830381600087803b158015610abf57600080fd5b505af1158015610ad3573d6000803e3d6000fd5b5050505047905081811015610b1e576040517f576cbba300000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044016106a9565b60665473ffffffffffffffffffffffffffffffffffffffff16630c93e3bb8333610b488c80611a3d565b610b5560208f018f611a3d565b8e306040518963ffffffff1660e01b8152600401610b799796959493929190611b59565b6000604051808303818588803b158015610b9257600080fd5b505af1158015610ba6573d6000803e3d6000fd5b505050505050509695505050505050565b610bbf610d72565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f83650e857191635cdf372edf115c49497fa8a7db67978cab532ffa395405803a906020016104bc565b60008360600135600003610c4d5761098f60208601866116b3565b8115610c85576040517f26cbb93300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cb2610c9860608601604087016115aa565b610ca860808801606089016115aa565b8660600135610f3e565b95945050505050565b610cc3610d72565b73ffffffffffffffffffffffffffffffffffffffff8116610d66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106a9565b610d6f81610e28565b50565b60335473ffffffffffffffffffffffffffffffffffffffff163314610455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a9565b73ffffffffffffffffffffffffffffffffffffffff8316610e1d57610e188282610f98565b505050565b610e1883838361109e565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610f36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106a9565b61045561110c565b60008061ffff851615610f515784610f53565b835b61ffff169050612710610f668285611bc9565b610cb29190611c07565b60655460009061271090610f889061ffff1684611bc9565b610f929190611c07565b92915050565b73ffffffffffffffffffffffffffffffffffffffff8216610fe5576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461103f576040519150601f19603f3d011682016040523d82523d6000602084013e611044565b606091505b5050905080610e18576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016106a9565b73ffffffffffffffffffffffffffffffffffffffff82166110eb576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e1873ffffffffffffffffffffffffffffffffffffffff841683836111ac565b600054610100900460ff166111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106a9565b61045533610e28565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610e1892869291600091611277918516908490611324565b90508051600014806112985750808060200190518101906112989190611c42565b610e18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106a9565b6060611333848460008561133b565b949350505050565b6060824710156113cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106a9565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516113f69190611c64565b60006040518083038185875af1925050503d8060008114611433576040519150601f19603f3d011682016040523d82523d6000602084013e611438565b606091505b509150915061144987838387611454565b979650505050505050565b606083156114ea5782516000036114e35773ffffffffffffffffffffffffffffffffffffffff85163b6114e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a9565b5081611333565b61133383838151156114ff5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a99190611c80565b803573ffffffffffffffffffffffffffffffffffffffff8116811461155757600080fd5b919050565b60008060006060848603121561157157600080fd5b61157a84611533565b925061158860208501611533565b9150604084013590509250925092565b803561ffff8116811461155757600080fd5b6000602082840312156115bc57600080fd5b6115c582611598565b9392505050565b6000602082840312156115de57600080fd5b6115c582611533565b6000806000606084860312156115fc57600080fd5b61160584611533565b925061161360208501611533565b915061162160408501611598565b90509250925092565b6000806020838503121561163d57600080fd5b823567ffffffffffffffff8082111561165557600080fd5b818501915085601f83011261166957600080fd5b81358181111561167857600080fd5b86602060608302850101111561168d57600080fd5b60209290920196919550909350505050565b803563ffffffff8116811461155757600080fd5b6000602082840312156116c557600080fd5b6115c58261169f565b6000608082840312156116e057600080fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008083601f84011261172757600080fd5b50813567ffffffffffffffff81111561173f57600080fd5b60208301915083602082850101111561175757600080fd5b9250929050565b600080600080600080610100878903121561177857600080fd5b61178288886116ce565b9550608087013567ffffffffffffffff8082111561179f57600080fd5b6117ab8a838b016116ce565b965060a08901359150808211156117c157600080fd5b818901915089601f8301126117d557600080fd5b8135818111156117e7576117e76116e6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561182d5761182d6116e6565b816040528281528c602084870101111561184657600080fd5b8260208601602083013760006020848301015280985050505060c089013591508082111561187357600080fd5b5061188089828a01611715565b9094509250611893905060e08801611533565b90509295509295509295565b60008060008060c085870312156118b557600080fd5b6118bf86866116ce565b9350608085013567ffffffffffffffff808211156118dc57600080fd5b6118e8888389016116ce565b945060a08701359150808211156118fe57600080fd5b5061190b87828801611715565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b803567ffffffffffffffff8116811461155757600080fd5b60006020828403121561197057600080fd5b6115c582611946565b80356fffffffffffffffffffffffffffffffff8116811461155757600080fd5b6000602082840312156119ab57600080fd5b6115c582611979565b6020808252818101839052600090604080840186845b87811015611a305763ffffffff6119e08361169f565b16835267ffffffffffffffff6119f7868401611946565b16858401526fffffffffffffffffffffffffffffffff611a18858401611979565b168385015260609283019291909101906001016119ca565b5090979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a7257600080fd5b83018035915067ffffffffffffffff821115611a8d57600080fd5b60200191503681900382131561175757600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60005b83811015611b06578181015183820152602001611aee565b50506000910152565b60008151808452611b27816020860160208601611aeb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835260a06020840152611b8a60a08401898b611aa2565b8381036040850152611b9d81888a611aa2565b90508381036060850152611bb18187611b0f565b92505080841660808401525098975050505050505050565b8082028115828204841417610f92577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082611c3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215611c5457600080fd5b815180151581146115c557600080fd5b60008251611c76818460208701611aeb565b9190910192915050565b6020815260006115c56020830184611b0f56fea2646970667358221220341084d743be51f24cd3f62bb4e7cd712d16ef0eead90b2b1e85d7884e3e5f2264736f6c63430008160033",
572
572
  "linkReferences": {},
573
573
  "deployedLinkReferences": {}
574
574
  }
@@ -10,6 +10,17 @@ import { Transfer } from "@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Trans
10
10
 
11
11
  import { ILayerZeroPriceFeed } from "./interfaces/ILayerZeroPriceFeed.sol";
12
12
 
13
+ enum ModelType {
14
+ DEFAULT,
15
+ ARB_STACK,
16
+ OP_STACK
17
+ }
18
+
19
+ struct SetEidToModelTypeParam {
20
+ uint32 dstEid;
21
+ ModelType modelType;
22
+ }
23
+
13
24
  // PriceFeed is updated based on v1 eids
14
25
  // v2 eids will fall to the convention of v1 eid + 30,000
15
26
  contract PriceFeed is ILayerZeroPriceFeed, OwnableUpgradeable, Proxied {
@@ -28,6 +39,9 @@ contract PriceFeed is ILayerZeroPriceFeed, OwnableUpgradeable, Proxied {
28
39
 
29
40
  ILayerZeroEndpointV2 public endpoint;
30
41
 
42
+ // for the destination endpoint id, return the fee model type
43
+ mapping(uint32 => ModelType) public eidToModelType;
44
+
31
45
  // ============================ Constructor ===================================
32
46
 
33
47
  function initialize(address _priceUpdater) public proxied initializer {
@@ -147,6 +161,13 @@ contract PriceFeed is ILayerZeroPriceFeed, OwnableUpgradeable, Proxied {
147
161
  price = _defaultModelPrice[_dstEid];
148
162
  }
149
163
 
164
+ // set the fee ModelType for the destination eid
165
+ function setEidToModelType(SetEidToModelTypeParam[] calldata _params) external {
166
+ for (uint i = 0; i < _params.length; i++) {
167
+ eidToModelType[_params[i].dstEid] = _params[i].modelType;
168
+ }
169
+ }
170
+
150
171
  // NOTE: to be reverted when endpoint is in sendContext
151
172
  // NOTE: to support legacy
152
173
  function estimateFeeByChain(
@@ -154,10 +175,19 @@ contract PriceFeed is ILayerZeroPriceFeed, OwnableUpgradeable, Proxied {
154
175
  uint256 _callDataSize,
155
176
  uint256 _gas
156
177
  ) external view returns (uint256 fee, uint128 priceRatio) {
178
+ // legacy if-statement uses very little gas, can keep using it until future upgrade
157
179
  if (_dstEid == 110 || _dstEid == 10143 || _dstEid == 20143) {
158
180
  return _estimateFeeWithArbitrumModel(_dstEid, _callDataSize, _gas);
159
181
  } else if (_dstEid == 111 || _dstEid == 10132 || _dstEid == 20132) {
160
182
  return _estimateFeeWithOptimismModel(_dstEid, _callDataSize, _gas);
183
+ }
184
+
185
+ // fee model type is configured per eid
186
+ ModelType _modelType = eidToModelType[_dstEid];
187
+ if (_modelType == ModelType.OP_STACK) {
188
+ return _estimateFeeWithOptimismModel(_dstEid, _callDataSize, _gas);
189
+ } else if (_modelType == ModelType.ARB_STACK) {
190
+ return _estimateFeeWithArbitrumModel(_dstEid, _callDataSize, _gas);
161
191
  } else {
162
192
  return _estimateFeeWithDefaultModel(_dstEid, _callDataSize, _gas);
163
193
  }
@@ -172,7 +202,7 @@ contract PriceFeed is ILayerZeroPriceFeed, OwnableUpgradeable, Proxied {
172
202
  _defaultModelPrice[_dstEid] = Price(priceRatio, gasPriceInUnit, gasPerByte);
173
203
  }
174
204
 
175
- function _getL1LookupId(uint32 _l2Eid) internal pure returns (uint32) {
205
+ function _getL1LookupIdForOptimismModel(uint32 _l2Eid) internal view returns (uint32) {
176
206
  uint32 l2Eid = _l2Eid % 30_000;
177
207
  if (l2Eid == 111) {
178
208
  return 101;
@@ -181,7 +211,15 @@ contract PriceFeed is ILayerZeroPriceFeed, OwnableUpgradeable, Proxied {
181
211
  } else if (l2Eid == 20132) {
182
212
  return 20121; // ethereum-goerli
183
213
  }
184
- revert LZ_PriceFeed_UnknownL2Eid(l2Eid);
214
+
215
+ if (eidToModelType[l2Eid] != ModelType.OP_STACK) revert LZ_PriceFeed_NotAnOPStack(_l2Eid);
216
+ if (l2Eid < 10000) {
217
+ return 101;
218
+ } else if (l2Eid < 20000) {
219
+ return 10161; // ethereum-sepolia
220
+ } else {
221
+ return 20121; // ethereum-goerli
222
+ }
185
223
  }
186
224
 
187
225
  function _estimateFeeWithDefaultModel(
@@ -207,9 +245,18 @@ contract PriceFeed is ILayerZeroPriceFeed, OwnableUpgradeable, Proxied {
207
245
  (fee, priceRatio) = _estimateFeeWithArbitrumModel(dstEid, _callDataSize, _gas);
208
246
  } else if (dstEid == 111 || dstEid == 10132 || dstEid == 20132) {
209
247
  (fee, priceRatio) = _estimateFeeWithOptimismModel(dstEid, _callDataSize, _gas);
248
+ }
249
+
250
+ // lookup map stuff
251
+ ModelType _modelType = eidToModelType[dstEid];
252
+ if (_modelType == ModelType.OP_STACK) {
253
+ (fee, priceRatio) = _estimateFeeWithOptimismModel(dstEid, _callDataSize, _gas);
254
+ } else if (_modelType == ModelType.ARB_STACK) {
255
+ (fee, priceRatio) = _estimateFeeWithArbitrumModel(dstEid, _callDataSize, _gas);
210
256
  } else {
211
257
  (fee, priceRatio) = _estimateFeeWithDefaultModel(dstEid, _callDataSize, _gas);
212
258
  }
259
+
213
260
  priceRatioDenominator = PRICE_RATIO_DENOMINATOR;
214
261
  priceUSD = _nativePriceUSD;
215
262
  }
@@ -219,7 +266,7 @@ contract PriceFeed is ILayerZeroPriceFeed, OwnableUpgradeable, Proxied {
219
266
  uint256 _callDataSize,
220
267
  uint256 _gas
221
268
  ) internal view returns (uint256 fee, uint128 priceRatio) {
222
- uint32 ethereumId = _getL1LookupId(_dstEid);
269
+ uint32 ethereumId = _getL1LookupIdForOptimismModel(_dstEid);
223
270
 
224
271
  // L1 fee
225
272
  Price storage ethereumPrice = _defaultModelPrice[ethereumId];
@@ -37,7 +37,7 @@ interface ILayerZeroPriceFeed {
37
37
 
38
38
  error LZ_PriceFeed_OnlyPriceUpdater();
39
39
  error LZ_PriceFeed_InsufficientFee(uint256 provided, uint256 required);
40
- error LZ_PriceFeed_UnknownL2Eid(uint32 l2Eid);
40
+ error LZ_PriceFeed_NotAnOPStack(uint32 l2Eid);
41
41
 
42
42
  function nativeTokenPriceUSD() external view returns (uint128);
43
43
 
@@ -75,21 +75,21 @@ contract AxelarDVNAdapterFeeLib is OwnableUpgradeable, Proxied, IAxelarDVNAdapte
75
75
  if (_dstConfig.nativeGasFee == 0) revert AxelarDVNAdapter_EidNotSupported(_param.dstEid);
76
76
  if (_options.length > 0) revert AxelarDVNAdapter_OptionsUnsupported();
77
77
 
78
- uint256 axelarFee = _getAxelarFee(_dstConfig.nativeGasFee);
79
- totalFee = _applyPremium(_dstConfig.multiplierBps, _param.defaultMultiplierBps, axelarFee);
78
+ totalFee = _applyPremium(_dstConfig.multiplierBps, _param.defaultMultiplierBps, _dstConfig.nativeGasFee);
80
79
 
80
+ uint256 feeToAxelar = _getAxelarFeeWithBuffer(_dstConfig.nativeGasFee);
81
81
  // withdraw from uln to fee lib if not enough balance
82
82
  uint256 balance = address(this).balance;
83
- if (balance < axelarFee) {
83
+ if (balance < feeToAxelar) {
84
84
  dvn.withdrawToFeeLib(_sendLib);
85
85
 
86
86
  // revert if still not enough
87
87
  balance = address(this).balance;
88
- if (balance < axelarFee) revert AxelarDVNAdapter_InsufficientBalance(balance, axelarFee);
88
+ if (balance < feeToAxelar) revert AxelarDVNAdapter_InsufficientBalance(balance, feeToAxelar);
89
89
  }
90
90
 
91
91
  // pay axelar gas service
92
- gasService.payNativeGasForContractCall{ value: axelarFee }(
92
+ gasService.payNativeGasForContractCall{ value: feeToAxelar }(
93
93
  msg.sender, // sender
94
94
  _dstConfig.chainName, // destinationChain
95
95
  _dstConfig.peer, // destinationAddress
@@ -102,16 +102,15 @@ contract AxelarDVNAdapterFeeLib is OwnableUpgradeable, Proxied, IAxelarDVNAdapte
102
102
  Param calldata _param,
103
103
  IAxelarDVNAdapter.DstConfig calldata _dstConfig,
104
104
  bytes calldata _options
105
- ) external view returns (uint256 totalFee) {
105
+ ) external pure returns (uint256 totalFee) {
106
106
  if (_dstConfig.nativeGasFee == 0) revert AxelarDVNAdapter_EidNotSupported(_param.dstEid);
107
107
  if (_options.length > 0) revert AxelarDVNAdapter_OptionsUnsupported();
108
108
 
109
- uint256 axelarFee = _getAxelarFee(_dstConfig.nativeGasFee);
110
- totalFee = _applyPremium(_dstConfig.multiplierBps, _param.defaultMultiplierBps, axelarFee);
109
+ totalFee = _applyPremium(_dstConfig.multiplierBps, _param.defaultMultiplierBps, _dstConfig.nativeGasFee);
111
110
  }
112
111
 
113
112
  // ================================ Internal ================================
114
- function _getAxelarFee(uint256 _nativeGasFee) internal view returns (uint256) {
113
+ function _getAxelarFeeWithBuffer(uint256 _nativeGasFee) internal view returns (uint256) {
115
114
  return (_nativeGasFee * nativeGasFeeMultiplierBps) / BPS_DENOMINATOR;
116
115
  }
117
116
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/lz-evm-messagelib-v2",
3
- "version": "2.1.19",
3
+ "version": "2.1.20",
4
4
  "license": "LZBL-1.2",
5
5
  "files": [
6
6
  "artifacts/contracts/**/!(*.dbg).json",
@@ -11,8 +11,8 @@
11
11
  },
12
12
  "dependencies": {},
13
13
  "devDependencies": {
14
- "@layerzerolabs/lz-evm-protocol-v2": "^2.1.19",
15
- "@layerzerolabs/lz-evm-v1-0.7": "^2.1.19",
14
+ "@layerzerolabs/lz-evm-protocol-v2": "^2.1.20",
15
+ "@layerzerolabs/lz-evm-v1-0.7": "^2.1.20",
16
16
  "@openzeppelin/contracts": "^4.8.1",
17
17
  "@openzeppelin/contracts-upgradeable": "^4.8.1",
18
18
  "hardhat-deploy": "^0.11.44",
@@ -24,8 +24,8 @@
24
24
  "@axelar-network/axelar-gmp-sdk-solidity": "^5.6.3",
25
25
  "@chainlink/contracts-ccip": "^0.7.6",
26
26
  "@eth-optimism/contracts": "^0.6.0",
27
- "@layerzerolabs/lz-evm-protocol-v2": "^2.1.19",
28
- "@layerzerolabs/lz-evm-v1-0.7": "^2.1.19",
27
+ "@layerzerolabs/lz-evm-protocol-v2": "^2.1.20",
28
+ "@layerzerolabs/lz-evm-v1-0.7": "^2.1.20",
29
29
  "@openzeppelin/contracts": "^4.8.1 || ^5.0.0",
30
30
  "@openzeppelin/contracts-upgradeable": "^4.8.1 || ^5.0.0",
31
31
  "hardhat-deploy": "^0.11.44",