github.com/iotexproject/iotex-core@v1.14.1-rc1/tools/executiontester/blockchain/fp_token.go (about) 1 // Copyright (c) 2019 IoTeX Foundation 2 // This source code is provided 'as is' and no warranties are given as to title or non-infringement, merchantability 3 // or fitness for purpose and, to the extent permitted by law, all liability for your use of the code is disclaimed. 4 // This source code is governed by Apache License 2.0 that can be found in the LICENSE file. 5 6 package blockchain 7 8 import ( 9 "encoding/hex" 10 "math/big" 11 "time" 12 13 "github.com/pkg/errors" 14 15 "github.com/iotexproject/go-pkgs/hash" 16 "github.com/iotexproject/iotex-address/address" 17 ) 18 19 const ( 20 // FpRegistryID is the ID of FpRegistry 21 FpRegistryID = "0000000000000009" 22 // FpRegistryBinary is the binary code of FpRegistry 23 FpRegistryBinary = "6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36110ee806100cf6000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063163f6691146100eb5780635f141a0f146101995780636ca0607214610202578063715018a614610293578063719d0d30146102aa57806371b6d6ea146103585780637338c25c146103bd5780638278337a146104265780638da5cb5b146104735780638f32d59b146104ca578063b9019437146104f9578063c2ab66dd14610582578063def81479146105f9578063e23c50631461062c578063f2fde38b14610691578063fdac9ff7146106d4575b600080fd5b3480156100f757600080fd5b5061013a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919050505061072f565b6040518085815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390f35b3480156101a557600080fd5b506101e86004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610845565b604051808215151515815260200191505060405180910390f35b34801561020e57600080fd5b50610251600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050610941565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561029f57600080fd5b506102a86109c7565b005b3480156102b657600080fd5b506102f9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050610a99565b6040518085815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390f35b34801561036457600080fd5b506103a7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050610af6565b6040518082815260200191505060405180910390f35b3480156103c957600080fd5b5061040c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050610b5c565b604051808215151515815260200191505060405180910390f35b34801561043257600080fd5b506104556004803603810190808035600019169060200190929190505050610bc5565b60405180826000191660001916815260200191505060405180910390f35b34801561047f57600080fd5b50610488610c7a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104d657600080fd5b506104df610ca3565b604051808215151515815260200191505060405180910390f35b34801561050557600080fd5b50610568600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050610cfa565b604051808215151515815260200191505060405180910390f35b34801561058e57600080fd5b506105df600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356000191690602001909291908035600019169060200190929190505050610d21565b604051808215151515815260200191505060405180910390f35b34801561060557600080fd5b5061060e610d49565b60405180826000191660001916815260200191505060405180910390f35b34801561063857600080fd5b5061067b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050610d6d565b6040518082815260200191505060405180910390f35b34801561069d57600080fd5b506106d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dd3565b005b3480156106e057600080fd5b5061072d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919080359060200190929190505050610df2565b005b60008060008061073d611080565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876000191660001916815260200190815260200160002060806040519081016040529081600082015481526020016001820154600019166000191681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820154815250509050806000015181602001518260400151836060015194509450945094505092959194509250565b600061084f610c7a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610939575061093882847f63616e5772697465322d00000000000000000000000000000000000000000000186040516020018082600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b60208310151561090657805182526020820191506020810190506020830392506108e1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020610b5c565b5b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6109cf610ca3565b15156109da57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6001602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905084565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060030154905092915050565b600080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008460001916600019168152602001908152602001600020600001541415905092915050565b6000817f63616e5772697465322d00000000000000000000000000000000000000000000186040516020018082600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083101515610c465780518252602082019150602081019050602083039250610c21565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000610d068483610b5c565b8015610d185750610d178383610b5c565b5b90509392505050565b6000610d2d8484610b5c565b8015610d405750610d3e8483610b5c565b155b90509392505050565b7f63616e5772697465322d0000000000000000000000000000000000000000000081565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060000154905092915050565b610ddb610ca3565b1515610de657600080fd5b610def81610f86565b50565b610dfc8233610845565b1515610e0757600080fd5b608060405190810160405280828152602001600080191681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200142815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008460001916600019168152602001908152602001600020600082015181600001556020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301559050503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f7f467fc85b3c9db1144a5f705bcb37dcd17e760ed57b1921186f50b51000c3a184846040518083600019166000191681526020018281526020016020019250505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610fc257600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6080604051908101604052806000815260200160008019168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815250905600a165627a7a723058206ee451e56048b12a43334336b0d8fb115e967b73e6482449ba1d270305dd92b00029" 24 // CdpManageID is the ID of CdpManage 25 CdpManageID = "0000000000000010" 26 // CdpManageBinary is the binary code of CdpManage 27 CdpManageBinary = "608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a333600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a333600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612c4e806101db6000396000f300608060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631e9a6950146101385780632aed7f3f146101855780632e05d56f146101c85780634b0bddd21461021f57806350aaf8b81461026e578063521eb273146102b157806360e5d2551461030857806362884e1b1461035f57806370a08231146103a2578063715018a6146103f95780637706656714610410578063778140ea146104675780638da5cb5b146104be5780638f32d59b146105155780639fb9c12c14610544578063aba08b5514610591578063b2b884a4146105fe578063b552420614610655578063deaa59df14610698578063e674d917146106db578063eed5cf9d1461071e578063f2fde38b14610795578063f970f96d146107d8575b600080fd5b34801561014457600080fd5b50610183600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610845565b005b34801561019157600080fd5b506101c6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d91565b005b3480156101d457600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eca565b6040518082815260200191505060405180910390f35b34801561022b57600080fd5b5061026c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610edc565b005b34801561027a57600080fd5b506102af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fb3565b005b3480156102bd57600080fd5b506102c6611073565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561031457600080fd5b5061031d611099565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036b57600080fd5b506103a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110bf565b005b3480156103ae57600080fd5b506103e3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112b9565b6040518082815260200191505060405180910390f35b34801561040557600080fd5b5061040e611398565b005b34801561041c57600080fd5b506104256114d5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561047357600080fd5b5061047c6114fb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104ca57600080fd5b506104d3611521565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052157600080fd5b5061052a61154b565b604051808215151515815260200191505060405180910390f35b34801561055057600080fd5b5061058f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115a3565b005b34801561059d57600080fd5b506105fc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611652565b005b34801561060a57600080fd5b5061063f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061179d565b6040518082815260200191505060405180910390f35b34801561066157600080fd5b50610696600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b5565b005b3480156106a457600080fd5b506106d9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611875565b005b3480156106e757600080fd5b5061071c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611935565b005b34801561072a57600080fd5b5061077f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119f5565b6040518082815260200191505060405180910390f35b3480156107a157600080fd5b506107d6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a1a565b005b3480156107e457600080fd5b50610843600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611aa2565b005b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317a38cf0846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561090457600080fd5b505af1158015610918573d6000803e3d6000fd5b505050506040513d602081101561092e57600080fd5b810190808051906020019092919050505015156109b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7468697320746f6b656e20756e61626c652072656465656d206e6f770000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d387f07d846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610a7057600080fd5b505af1158015610a84573d6000803e3d6000fd5b505050506040513d6020811015610a9a57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610b78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f7468697320746f6b656e2063616e27742066696e6420616e7920726f6f74546f81526020017f6b656e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166323b872dd33600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610c7157600080fd5b505af1158015610c85573d6000803e3d6000fd5b505050506040513d6020811015610c9b57600080fd5b8101908080519060200190929190505050508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610d5057600080fd5b505af1158015610d64573d6000803e3d6000fd5b505050506040513d6020811015610d7a57600080fd5b810190808051906020019092919050505050505050565b610d9961154b565b1515610e0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b610e31611521565b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610eaf57600080fd5b505af1158015610ec3573d6000803e3d6000fd5b5050505050565b6000610ed582611d9a565b9050919050565b610ee461154b565b1515610f58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610fbb61154b565b151561102f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006110cb8233611e34565b90506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600081141561115d576112b5565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561127857600080fd5b505af115801561128c573d6000803e3d6000fd5b505050506040513d60208110156112a257600080fd5b8101908080519060200190929190505050505b5050565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561135657600080fd5b505af115801561136a573d6000803e3d6000fd5b505050506040513d602081101561138057600080fd5b81019080805190602001909291905050509050919050565b6113a061154b565b1515611414576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6115ab61154b565b806115ff5750600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b151561160a57600080fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b3373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6d73672e73656e6465722069736e27742070726f787920636f6e74726163740081525060200191505060405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60086020528060005260406000206000915090505481565b6117bd61154b565b1515611831576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61187d61154b565b15156118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61193d61154b565b15156119b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6007602052816000526040600020602052806000526040600020600091509150505481565b611a2261154b565b1515611a96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b611a9f81612a9d565b50565b3373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611b67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6d73672e73656e6465722069736e27742070726f787920636f6e74726163740081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d387f07d846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611c3b57600080fd5b505af1158015611c4f573d6000803e3d6000fd5b505050506040513d6020811015611c6557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141515611d95578273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d5857600080fd5b505af1158015611d6c573d6000803e3d6000fd5b505050506040513d6020811015611d8257600080fd5b8101908080519060200190929190505050505b505050565b600080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611e2b57600860008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b80915050919050565b6000806000806000806000806000806000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d387f07d8e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611f0257600080fd5b505af1158015611f16573d6000803e3d6000fd5b505050506040513d6020811015611f2c57600080fd5b81019080805190602001909291905050509950600073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614151515611fe4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f7468697320746f6b656e2069736e27742064656665727265642061737365742e81525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317a38cf08b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156120a157600080fd5b505af11580156120b5573d6000803e3d6000fd5b505050506040513d60208110156120cb57600080fd5b81019080805190602001909291905050501515612150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f726f6f7420746f6b656e2063616e27742072656465656d206e6f77000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317a38cf08e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561220d57600080fd5b505af1158015612221573d6000803e3d6000fd5b505050506040513d602081101561223757600080fd5b810190808051906020019092919050505015156122bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7468697320746f6b656e2063616e27742072656465656d206e6f77000000000081525060200191505060405180910390fd5b600760008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205498506000891115156123d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f7468697320746f6b656e20696e7465726573742068617320657874726163746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d8720e08e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561249657600080fd5b505af11580156124aa573d6000803e3d6000fd5b505050506040513d60208110156124c057600080fd5b81019080805190602001909291905050509750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638174bc658b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561259057600080fd5b505af11580156125a4573d6000803e3d6000fd5b505050506040513d60208110156125ba57600080fd5b8101908080519060200190929190505050965060008714151515612646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f726f6f7420746f6b656e20646f65736e2774207365742070617944617465000081525060200191505060405180910390fd5b8787116126535787612655565b865b9750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0f812b08e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561271457600080fd5b505af1158015612728573d6000803e3d6000fd5b505050506040513d602081101561273e57600080fd5b810190808051906020019092919050505095508973ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614151561289257600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a339d34a876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561284357600080fd5b505af1158015612857573d6000803e3d6000fd5b505050506040513d602081101561286d57600080fd5b8101908080519060200190929190505050945087851161288d578761288f565b845b97505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a339d34a8e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561294f57600080fd5b505af1158015612963573d6000803e3d6000fd5b505050506040513d602081101561297957600080fd5b81019080805190602001909291905050509350878411151561299e5760009a50612a8d565b6129c6620151806129b88a87612b9990919063ffffffff16565b612bba90919063ffffffff16565b92506129d18d611d9a565b9150600082111515612a4b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616e27742066696e6420616e7920696e74657265737400000000000000000081525060200191505060405180910390fd5b612a876402540be400612a798b612a6b8787612be490919063ffffffff16565b612be490919063ffffffff16565b612bba90919063ffffffff16565b9050809a505b5050505050505050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612ad957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080838311151515612bab57600080fd5b82840390508091505092915050565b600080600083111515612bcc57600080fd5b8284811515612bd757fe5b0490508091505092915050565b6000806000841415612bf95760009150612c1b565b8284029050828482811515612c0a57fe5b04141515612c1757600080fd5b8091505b50929150505600a165627a7a7230582054a7386d8df90754116a3fdb6a5125138b66590bdcba52670e743857d2b317740029" 28 // ManageID is the ID of Manage 29 ManageID = "0000000000000011" 30 // ManageBinary is the binary code of Manage 31 ManageBinary = "6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a333600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3615af98061018d6000396000f300608060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063083b6b8a1461014e5780630987df0314610191578063121d8fdd1461021e5780632a7292d0146102515780632aed7f3f146102a85780632f745c59146102eb57806339a7c3d91461037857806342320732146103e55780634f6ccce71461041057806368c195d41461047d5780636b6af2d514610566578063715018a6146105d35780638da5cb5b146105ea5780638f32d59b146106415780639183bfde146106705780639db49153146106dd578063a22cb46514610708578063a91ee0dc14610757578063ba81d85a1461079a578063e4dc2aa4146107f1578063e985e9c514610848578063eb222d67146108c3578063f0bc1c2b146108f6578063f2fde38b14610939578063fc91a8971461097c575b600080fd5b34801561015a57600080fd5b5061018f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109d7565b005b34801561019d57600080fd5b5061021c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a97565b005b34801561022a57600080fd5b50610233610bbf565b60405180826000191660001916815260200191505060405180910390f35b34801561025d57600080fd5b506102a660048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610be3565b005b3480156102b457600080fd5b506102e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c0a565b005b3480156102f757600080fd5b50610336600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d43565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038457600080fd5b506103e3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e14565b005b3480156103f157600080fd5b506103fa610f3a565b6040518082815260200191505060405180910390f35b34801561041c57600080fd5b5061043b60048036038101908080359060200190929190505050610f44565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561048957600080fd5b50610564600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610f9c565b005b34801561057257600080fd5b5061059160048036038101908080359060200190929190505050611293565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105df57600080fd5b506105e86112d0565b005b3480156105f657600080fd5b506105ff61140d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561064d57600080fd5b50610656611437565b604051808215151515815260200191505060405180910390f35b34801561067c57600080fd5b506106db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061148f565b005b3480156106e957600080fd5b506106f26115b5565b6040518082815260200191505060405180910390f35b34801561071457600080fd5b50610755600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506115c2565b005b34801561076357600080fd5b50610798600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116fe565b005b3480156107a657600080fd5b506107db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117be565b6040518082815260200191505060405180910390f35b3480156107fd57600080fd5b50610832600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061180a565b6040518082815260200191505060405180910390f35b34801561085457600080fd5b506108a9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611853565b604051808215151515815260200191505060405180910390f35b3480156108cf57600080fd5b506108d861191d565b60405180826000191660001916815260200191505060405180910390f35b34801561090257600080fd5b50610937600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611941565b005b34801561094557600080fd5b5061097a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a01565b005b34801561098857600080fd5b506109bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a89565b604051808215151515815260200191505060405180910390f35b6109df611437565b1515610a53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015610b395750600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515610bad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f6f6e5472616e73666572207361666520636865636b206661696c65640000000081525060200191505060405180910390fd5b610bb984848484611adf565b50505050565b7f63616e4275726e0000000000000000000000000000000000000000000000000081565b6000610bf0848484611c2f565b610bf984611293565b9050610c0481612276565b50505050565b610c12611437565b1515610c86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b610caa61140d565b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610d2857600080fd5b505af1158015610d3c573d6000803e3d6000fd5b5050505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905082101515610d9557600080fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515610de157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015610eb65750600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515610f2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e4d696e74207361666520636865636b206661696c6564000000000000000081525060200191505060405180910390fd5b610f35838383612328565b505050565b6000600a54905090565b6000610f4e6115b5565b82101515610f5b57600080fd5b600c82815481101515610f6a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000808251845114151561103e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e636f6e73697374656e74206172726179206c656e6774682062657477656581526020017f6e2061726773000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141515156110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c696420726563697069656e7400000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148061112357506111228633611853565b5b151561112e57600080fd5b83519150600090505b8181101561128b57838181518110151561114d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff166323b872dd8787868581518110151561118257fe5b906020019060200201516040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561124457600080fd5b505af1158015611258573d6000803e3d6000fd5b505050506040513d602081101561126e57600080fd5b810190808051906020019092919050505050806001019050611137565b505050505050565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6112d8611437565b151561134c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156115315750600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15156115a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e4275726e207361666520636865636b206661696c6564000000000000000081525060200191505060405180910390fd5b6115b08383836123f2565b505050565b6000600c80549050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156115fd57600080fd5b80600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b611706611437565b151561177a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60003073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806119155750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b7f6f6e52656365697665640000000000000000000000000000000000000000000081565b611949611437565b15156119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a09611437565b1515611a7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b611a86816124bc565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611aeb848484846125b8565b611b3d81600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269190919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bd281600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b290919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c1f82856126d3565b611c2983856129b7565b50505050565b600080611c3a611437565b1515611cae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166003600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611d85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f54686520746f6b656e496420686173206265656e20757365642e00000000000081525060200191505060405180910390fd5b30611d8e612fbf565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015611de0573d6000803e3d6000fd5b509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611e88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6e6577207269736b455243323078206661696c65642e0000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663083b6b8a600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015611f4557600080fd5b505af1158015611f59573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663f0bc1c2b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561201a57600080fd5b505af115801561202e573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663a91ee0dc600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156120ef57600080fd5b505af1158015612103573d6000803e3d6000fd5b505050508190506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806003600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff166340c10f1985856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561225757600080fd5b505af115801561226b573d6000803e3d6000fd5b505050505050505050565b600c80549050600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c8190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b612333838383612e77565b61238581600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b290919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123dd81600a546126b290919063ffffffff16565b600a819055506123ed82846126d3565b505050565b6123fd838383612f1b565b61244f81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269190919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124a781600a5461269190919063ffffffff16565b600a819055506124b782846129b7565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156124f857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f2ec42c768b3caf0ba159df445d8ada8f640f9fd6e197ca0fee2ad6ead9c1fb0984848484604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390a150505050565b6000808383111515156126a357600080fd5b82840390508091505092915050565b60008082840190508381101515156126c957600080fd5b8091505092915050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011801561284257508073ffffffffffffffffffffffffffffffffffffffff16600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811015156127ff57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1561284c576129b3565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b5050565b6000806000808473ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015612a5857600080fd5b505af1158015612a6c573d6000803e3d6000fd5b505050506040513d6020811015612a8257600080fd5b81019080805190602001909291905050501115612a9e57612e70565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549250612b736001600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061269190919063ffffffff16565b9150600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515612bc157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481101515612c3b57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481101515612cd157fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480919060019003612d6b9190612fcf565b506000600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050505050565b7f18ce7231207dc2f2c03bdd7740e204a851e20ff0f78caef201fd048d565302af838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b7f4b33696053421bdd3effdcad46fd57bce93ed990c36bb143632cdb7654d75b91838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b604051612aad8061302183390190565b815481835581811115612ff657818360005260206000209182019101612ff59190612ffb565b5b505050565b61301d91905b80821115613019576000816000905550600101613001565b5090565b90560060806040526000600360006101000a81548160ff0219169083151502179055506000600360156101000a81548160ff02191690831515021790555034801561004657600080fd5b50604051602080612aad8339810180604052810190808051906020019092919050505080600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506129f3806100ba6000396000f3006080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063083b6b8a146100e0578063095ea7b31461012357806318160ddd1461018857806323b872dd146101b3578063242654a214610238578063313ce56714610267578063395093511461029257806340c10f19146102f757806342966c681461034457806370a0823114610371578063a457c2d7146103c8578063a9059cbb1461042d578063a91ee0dc14610492578063dd62ed3e146104d5578063f0bc1c2b1461054c575b600080fd5b3480156100ec57600080fd5b50610121600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061058f565b005b34801561012f57600080fd5b5061016e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610698565b604051808215151515815260200191505060405180910390f35b34801561019457600080fd5b5061019d6107c5565b6040518082815260200191505060405180910390f35b3480156101bf57600080fd5b5061021e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107cf565b604051808215151515815260200191505060405180910390f35b34801561024457600080fd5b5061024d6109e2565b604051808215151515815260200191505060405180910390f35b34801561027357600080fd5b5061027c6109f9565b6040518082815260200191505060405180910390f35b34801561029e57600080fd5b506102dd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a02565b604051808215151515815260200191505060405180910390f35b34801561030357600080fd5b50610342600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c39565b005b34801561035057600080fd5b5061036f60048036038101908080359060200190929190505050610dac565b005b34801561037d57600080fd5b506103b2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f55565b6040518082815260200191505060405180910390f35b3480156103d457600080fd5b50610413600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f9d565b604051808215151515815260200191505060405180910390f35b34801561043957600080fd5b50610478600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111d4565b604051808215151515815260200191505060405180910390f35b34801561049e57600080fd5b506104d3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111eb565b005b3480156104e157600080fd5b50610536600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112f4565b6040518082815260200191505060405180910390f35b34801561055857600080fd5b5061058d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611462565b005b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610654576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5f6d676e7420636865636b206572726f7200000000000000000000000000000081525060200191505060405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156106d557600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109335750600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e985e9c585336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050506040513d602081101561092157600080fd5b81019080805190602001909291905050505b1561094c5761094384848461156b565b600190506109db565b8161095785336112f4565b101515156109cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4e6f7420656e6f75676820616c6c6f77616e63652076616c756500000000000081525060200191505060405180910390fd5b6109d88484846118e1565b90505b9392505050565b6000600360159054906101000a900460ff16905090565b60006064905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610a3f57600080fd5b610ace82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9390919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cfe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5f6d676e7420636865636b206572726f7200000000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900460ff16151515610d83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6f6e63654d696e7420636865636b206572726f7200000000000000000000000081525060200191505060405180910390fd5b6001600360006101000a81548160ff021916908315150217905550610da88282611ab4565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637338c25c337f63616e4275726e000000000000000000000000000000000000000000000000006040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050602060405180830381600087803b158015610e9957600080fd5b505af1158015610ead573d6000803e3d6000fd5b505050506040513d6020811015610ec357600080fd5b81019080805190602001909291905050501515610f48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6d73672e73656e6465722063616e2774206275726e000000000000000000000081525060200191505060405180910390fd5b610f523382611bd3565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610fda57600080fd5b61106982600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf290919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60006111e133848461156b565b6001905092915050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5f6d676e7420636865636b206572726f7200000000000000000000000000000081525060200191505060405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e985e9c584846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156113e757600080fd5b505af11580156113fb573d6000803e3d6000fd5b505050506040513d602081101561141157600080fd5b81019080805190602001909291905050501561144f577f8000000000000000000000000000000000000000000000000000000000000000905061145c565b6114598383611d13565b90505b92915050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611527576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5f6d676e7420636865636b206572726f7200000000000000000000000000000081525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611573611d9a565b600360159054906101000a900460ff16806116b057508273ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166364fd522a306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561165d57600080fd5b505af1158015611671573d6000803e3d6000fd5b505050506040513d602081101561168757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16145b8061170857508173ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b151561177c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7269736b207472616e7366657220636865636b206661696c656400000000000081525060200191505060405180910390fd5b61178783838361212f565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637338c25c837f6f6e5265636569766564000000000000000000000000000000000000000000006040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050602060405180830381600087803b15801561187457600080fd5b505af1158015611888573d6000803e3d6000fd5b505050506040513d602081101561189e57600080fd5b8101908080519060200190929190505050156118dc576118d08383836020604051908101604052806000815250612284565b15156118db57600080fd5b5b505050565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561196e57600080fd5b6119fd82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf290919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a8884848461156b565b600190509392505050565b6000808284019050838110151515611aaa57600080fd5b8091505092915050565b611abe82826124d2565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166339a7c3d93084846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611bb757600080fd5b505af1158015611bcb573d6000803e3d6000fd5b505050505050565b611bdd8282612610565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639183bfde3084846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611cd657600080fd5b505af1158015611cea573d6000803e3d6000fd5b505050505050565b600080838311151515611d0457600080fd5b82840390508091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000600360159054906101000a900460ff1615611db95761212a565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638fa80547306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611e7657600080fd5b505af1158015611e8a573d6000803e3d6000fd5b505050506040513d6020811015611ea057600080fd5b810190808051906020019092919050505092506000831415611edc576001600360156101000a81548160ff02191690831515021790555061212a565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ab48cce306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611f9957600080fd5b505af1158015611fad573d6000803e3d6000fd5b505050506040513d6020811015611fc357600080fd5b81019080805190602001909291905050509150600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f7888aec30846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156120c757600080fd5b505af11580156120db573d6000803e3d6000fd5b505050506040513d60208110156120f157600080fd5b810190808051906020019092919050505090508281101515612129576001600360156101000a81548160ff0219169083151502179055505b5b505050565b61213a83838361279b565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630987df03308585856040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b15801561226757600080fd5b505af115801561227b573d6000803e3d6000fd5b50505050505050565b60006122a58473ffffffffffffffffffffffffffffffffffffffff166129b4565b15156122b457600190506124ca565b7f43460000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663c5072d0b33883088886040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561241c578082015181840152602081019050612401565b50505050905090810190601f1680156124495780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561246c57600080fd5b505af1158015612480573d6000803e3d6000fd5b505050506040513d602081101561249657600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161490505b949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff16141515156124f857600080fd5b61250d81600254611a9390919063ffffffff16565b600281905550612564816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008273ffffffffffffffffffffffffffffffffffffffff161415151561263657600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561268357600080fd5b61269881600254611cf290919063ffffffff16565b6002819055506126ef816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111515156127e857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561282457600080fd5b612875816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf290919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612908816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080823b9050600081119150509190505600a165627a7a723058208efb55e190dd0d42e4a30dd1da482d7205acd5514996bfc469c8456fab0348470029a165627a7a72305820d5d88e4adb8a34cd018b2bfef08db22bb1d8a50cb18c2ecda5e7fbac03779ca20029" 32 // ManageProxyID is the ID of ManageProxy 33 ManageProxyID = "0000000000000012" 34 // ManageProxyBinary is the binary code of ManageProxy 35 ManageProxyBinary = "6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a333600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36121768061018d6000396000f3006080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632aed7f3f146100d557806350aaf8b8146101185780635582e7701461015b57806360e5d255146101f0578063715018a61461024757806377eeafd11461025e5780638da5cb5b146102b55780638f32d59b1461030c578063b74b15a61461033b578063bb038e1514610388578063c254f696146103df578063d4a22bde14610422578063f2fde38b14610465578063f5f8644e146104a8575b600080fd5b3480156100e157600080fd5b50610116600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610533565b005b34801561012457600080fd5b50610159600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061066c565b005b34801561016757600080fd5b506101ee60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919050505061072c565b005b3480156101fc57600080fd5b506102056107ca565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025357600080fd5b5061025c6107f0565b005b34801561026a57600080fd5b5061027361092d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102c157600080fd5b506102ca610953565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561031857600080fd5b5061032161097d565b604051808215151515815260200191505060405180910390f35b34801561034757600080fd5b50610386600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109d5565b005b34801561039457600080fd5b5061039d610b32565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103eb57600080fd5b50610420600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b58565b005b34801561042e57600080fd5b50610463600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c18565b005b34801561047157600080fd5b506104a6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cd8565b005b3480156104b457600080fd5b50610531600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610d60565b005b61053b61097d565b15156105af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b6105d3610953565b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561065157600080fd5b505af1158015610665573d6000803e3d6000fd5b5050505050565b61067461097d565b15156106e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61073461097d565b15156107a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b6107b38787866119e2565b6107c1878787868686611acc565b50505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107f861097d565b151561086c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6109dd61097d565b1515610a51576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b74b15a683836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610b1657600080fd5b505af1158015610b2a573d6000803e3d6000fd5b505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b6061097d565b1515610bd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c2061097d565b1515610c94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ce061097d565b1515610d54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b610d5d8161204e565b50565b6000806000610d6d61097d565b1515610de1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a339d34a896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610e9e57600080fd5b505af1158015610eb2573d6000803e3d6000fd5b505050506040513d6020811015610ec857600080fd5b81019080805190602001909291905050508410151515610f50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6578706972794461746520746f6f206561726c6965720000000000000000000081525060200191505060405180910390fd5b8773ffffffffffffffffffffffffffffffffffffffff166323b872dd8a600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561104957600080fd5b505af115801561105d573d6000803e3d6000fd5b505050506040513d602081101561107357600080fd5b810190808051906020019092919050505050611090868a896119e2565b61128d86600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166364fd522a8b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561115157600080fd5b505af1158015611165573d6000803e3d6000fd5b505050506040513d602081101561117b57600080fd5b8101908080519060200190929190505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ab48cce8c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561124957600080fd5b505af115801561125d573d6000803e3d6000fd5b505050506040513d602081101561127357600080fd5b810190808051906020019092919050505060008989611acc565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b6af2d5876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561131e57600080fd5b505af1158015611332573d6000803e3d6000fd5b505050506040513d602081101561134857600080fd5b81019080805190602001909291905050509250600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d387f07d896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561141857600080fd5b505af115801561142c573d6000803e3d6000fd5b505050506040513d602081101561144257600080fd5b81019080805190602001909291905050509150879050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611492578190505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca09a4d784836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561158357600080fd5b505af1158015611597573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635902476e848a6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561168c57600080fd5b505af11580156116a0573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f970f96d89858a6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561179d57600080fd5b505af11580156117b1573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aba08b5533858a6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156118ae57600080fd5b505af11580156118c2573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aba08b558a858a6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156119bf57600080fd5b505af11580156119d3573d6000803e3d6000fd5b50505050505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632a7292d08484846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611aaf57600080fd5b505af1158015611ac3573d6000803e3d6000fd5b50505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b6af2d5886040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015611b5f57600080fd5b505af1158015611b73573d6000803e3d6000fd5b505050506040513d6020811015611b8957600080fd5b81019080805190602001909291905050509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d905fbb82846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611c6157600080fd5b505af1158015611c75573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631c24fffa82856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611d3e57600080fd5b505af1158015611d52573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663435dafc782866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611e1b57600080fd5b505af1158015611e2f573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aab859ba82876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b158015611f2457600080fd5b505af1158015611f38573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c6095a4d82886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561202d57600080fd5b505af1158015612041573d6000803e3d6000fd5b5050505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561208a57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820873668fa4696bb11a696ed1ab9980cd2ec5e9ac3d6d77d360b6866edbcff50c30029" 36 // EapStorageID is the ID of EapStorage 37 EapStorageID = "0000000000000013" 38 // EapStorageBinary is the binary code of EapStorage 39 EapStorageBinary = "6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a333600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361215a8061018d6000396000f300608060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630ff2d2121461015957806317a38cf0146102155780631c24fffa146102705780632aed7f3f146102bd5780632d905fbb146103005780633037c5ad1461034d578063435dafc7146103d65780634b0bddd2146104235780635902476e146104725780635b927403146104d557806364fd522a14610524578063715018a6146105a75780637ab48cce146105be5780638174bc65146106415780638da5cb5b146106985780638f32d59b146106ef5780638fa805471461071e5780639d8720e014610775578063a339d34a146107cc578063aab859ba14610823578063b74b15a614610886578063c6095a4d146108d3578063ca09a4d714610936578063d0f812b014610999578063d387f07d14610a1c578063f2fde38b14610a9f575b600080fd5b34801561016557600080fd5b5061019a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ae2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101da5780820151818401526020810190506101bf565b50505050905090810190601f1680156102075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022157600080fd5b50610256600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bfc565b604051808215151515815260200191505060405180910390f35b34801561027c57600080fd5b506102bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c8b565b005b3480156102c957600080fd5b506102fe600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d73565b005b34801561030c57600080fd5b5061034b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eac565b005b34801561035957600080fd5b506103d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610f94565b005b3480156103e257600080fd5b50610421600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061108c565b005b34801561042f57600080fd5b50610470600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611174565b005b34801561047e57600080fd5b506104d3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061124b565b005b3480156104e157600080fd5b50610522600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061136d565b005b34801561053057600080fd5b50610565600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611468565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105b357600080fd5b506105bc61150a565b005b3480156105ca57600080fd5b506105ff600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611647565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561064d57600080fd5b50610682600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116e9565b6040518082815260200191505060405180910390f35b3480156106a457600080fd5b506106ad61176b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106fb57600080fd5b50610704611795565b604051808215151515815260200191505060405180910390f35b34801561072a57600080fd5b5061075f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117ed565b6040518082815260200191505060405180910390f35b34801561078157600080fd5b506107b6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061186f565b6040518082815260200191505060405180910390f35b3480156107d857600080fd5b5061080d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118f1565b6040518082815260200191505060405180910390f35b34801561082f57600080fd5b50610884600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611973565b005b34801561089257600080fd5b506108d1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a95565b005b3480156108df57600080fd5b50610934600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b7d565b005b34801561094257600080fd5b50610997600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c9f565b005b3480156109a557600080fd5b506109da600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dc1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a2857600080fd5b50610a5d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e63565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aab57600080fd5b50610ae0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f05565b005b6060600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f616464726573735f6e616d650000000000000000000000000000000000000000600019166000191681526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bf05780601f10610bc557610100808354040283529160200191610bf0565b820191906000526020600020905b815481529060010190602001808311610bd357829003601f168201915b50505050509050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f72656465656d5f656e61626c65000000000000000000000000000000000000006000191660001916815260200190815260200160002060009054906101000a900460ff169050919050565b610c93611795565b80610ce75750600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515610cf257600080fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f6d696e745f64617465000000000000000000000000000000000000000000000060001916600019168152602001908152602001600020819055505050565b610d7b611795565b1515610def576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b610e1361176b565b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610e9157600080fd5b505af1158015610ea5573d6000803e3d6000fd5b5050505050565b610eb4611795565b80610f085750600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515610f1357600080fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f6578706972795f6461746500000000000000000000000000000000000000000060001916600019168152602001908152602001600020819055505050565b610f9c611795565b80610ff05750600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515610ffb57600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f616464726573735f6e616d650000000000000000000000000000000000000000600019166000191681526020019081526020016000209080519060200190611087929190612089565b505050565b611094611795565b806110e85750600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15156110f357600080fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f7269736b5f71747900000000000000000000000000000000000000000000000060001916600019168152602001908152602001600020819055505050565b61117c611795565b15156111f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611253611795565b806112a75750600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15156112b257600080fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f706172656e745f746f6b656e00000000000000000000000000000000000000006000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611375611795565b806113c95750600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15156113d457600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f72656465656d5f656e61626c65000000000000000000000000000000000000006000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f646562746f7200000000000000000000000000000000000000000000000000006000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b611512611795565b1515611586576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f6372656469746f720000000000000000000000000000000000000000000000006000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f7061795f6461746500000000000000000000000000000000000000000000000060001916600019168152602001908152602001600020549050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f7269736b5f71747900000000000000000000000000000000000000000000000060001916600019168152602001908152602001600020549050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f6d696e745f64617465000000000000000000000000000000000000000000000060001916600019168152602001908152602001600020549050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f6578706972795f6461746500000000000000000000000000000000000000000060001916600019168152602001908152602001600020549050919050565b61197b611795565b806119cf5750600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15156119da57600080fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f6372656469746f720000000000000000000000000000000000000000000000006000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611a9d611795565b80611af15750600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515611afc57600080fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f7061795f6461746500000000000000000000000000000000000000000000000060001916600019168152602001908152602001600020819055505050565b611b85611795565b80611bd95750600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515611be457600080fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f646562746f7200000000000000000000000000000000000000000000000000006000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611ca7611795565b80611cfb5750600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515611d0657600080fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f726f6f745f746f6b656e000000000000000000000000000000000000000000006000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f706172656e745f746f6b656e00000000000000000000000000000000000000006000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f726f6f745f746f6b656e000000000000000000000000000000000000000000006000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b611f0d611795565b1515611f81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f69734f776e657220636865636b206661696c656400000000000000000000000081525060200191505060405180910390fd5b611f8a81611f8d565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611fc957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120ca57805160ff19168380011785556120f8565b828001600101855582156120f8579182015b828111156120f75782518255916020019190600101906120dc565b5b5090506121059190612109565b5090565b61212b91905b8082111561212757600081600090555060010161210f565b5090565b905600a165627a7a72305820b5b0ee16c76ce73ca2a3cdc05c78dfd1ebd2debe48d02e678aa1a19b6a7bd6bc0029" 40 // TokenRiskLockID is the ID of TokenRiskLock 41 TokenRiskLockID = "0000000000000014" 42 // TokenRiskLockBinary is the binary code of TokenRiskLock 43 TokenRiskLockBinary = "6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3610e43806100cf6000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063191655871461009e57806350aaf8b8146100e157806360e5d25514610124578063715018a61461017b5780638da5cb5b146101925780638f32d59b146101e9578063c5072d0b14610218578063f2fde38b1461033d578063f7888aec14610380575b600080fd5b3480156100aa57600080fd5b506100df600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103f7565b005b3480156100ed57600080fd5b50610122600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610747565b005b34801561013057600080fd5b5061013961078b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561018757600080fd5b506101906107b1565b005b34801561019e57600080fd5b506101a7610883565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f557600080fd5b506101fe6108ac565b604051808215151515815260200191505060405180910390f35b34801561022457600080fd5b506102e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610903565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561034957600080fd5b5061037e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c56565b005b34801561038c57600080fd5b506103e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c75565b6040518082815260200191505060405180910390f35b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317a38cf0846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156104b757600080fd5b505af11580156104cb573d6000803e3d6000fd5b505050506040513d60208110156104e157600080fd5b810190808051906020019092919050505015156104fd57600080fd5b8291508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561059b57600080fd5b505af11580156105af573d6000803e3d6000fd5b505050506040513d60208110156105c557600080fd5b81019080805190602001909291905050509050600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811015151561066357600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561070657600080fd5b505af115801561071a573d6000803e3d6000fd5b505050506040513d602081101561073057600080fd5b810190808051906020019092919050505050505050565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107b96108ac565b15156107c457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f6d73672e73656e64657220213d205f746f6b656e2e616464726573730000000081525060200191505060405180910390fd5b828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610a4457600080fd5b505af1158015610a58573d6000803e3d6000fd5b505050506040513d6020811015610a6e57600080fd5b810190808051906020019092919050505010151515610b1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f62616c616e63654f662076616c7565206973206d696e207468616e207468697381526020017f2e76616c7565000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610baa83600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cfc90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f4346000000000000000000000000000000000000000000000000000000000000905095945050505050565b610c5e6108ac565b1515610c6957600080fd5b610c7281610d1d565b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000808284019050838110151515610d1357600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610d5957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820183b08b7d93bbe9635bc77b059683b744952e92abd6abec1e40b10823a7cc26f0029" 44 // StartFpTokenID is the ID of StartFpToken 45 StartFpTokenID = "00000000000000015" 46 ) 47 48 type ( 49 // FpToken is an interface for an fp token 50 FpToken interface { 51 Contract 52 CreateToken(string, string, string, int64, int64, int64, int64) (string, error) 53 CreateDeferredToken(string, string, string, string, int64, int64, int64) (string, error) 54 TokenAddress(string) (string, error) 55 Transfer(string, string, string, string, int64) (string, error) 56 RiskLock(string, string, string, int64) (string, error) 57 SetRate(string, int64) (string, error) 58 GetRate(string) (string, error) 59 SetPayDate(string, int64) (string, error) 60 GetPayDate(string) (string, error) 61 62 SetManagement(string) FpToken 63 SetManagementProxy(string) FpToken 64 SetEapStorage(string) FpToken 65 SetRiskLock(string) FpToken 66 SetRegistry(string) FpToken 67 SetCdpManager(string) FpToken 68 SetStableToken(string) FpToken 69 } 70 71 fpToken struct { 72 Contract 73 manage string // address of Management 74 manageProxy string // address of ManagementProxy 75 eapStorage string // address of EapStorage 76 riskLock string // address of TokenRiskLock 77 registry string // address of Registry 78 cdp string // address of CdpManager 79 stbToken string // address of stable token 80 } 81 ) 82 83 // NewFpToken creates a new FpToken 84 func NewFpToken(exp string) FpToken { 85 return &fpToken{Contract: NewContract(exp)} 86 } 87 88 func (f *fpToken) CreateToken(id, debtor, creditor string, total, risk, open, exp int64) (string, error) { 89 addrDebtor, err := address.FromString(debtor) 90 if err != nil { 91 return "", errors.Errorf("invalid debtor address = %s", debtor) 92 } 93 addrCreditor, err := address.FromString(creditor) 94 if err != nil { 95 return "", errors.Errorf("invalid creditor address = %s", creditor) 96 } 97 98 h, err := f.RunAsOwner(). 99 SetAddress(f.manageProxy). 100 Call("5582e770", 101 []byte(id), 102 addrDebtor.Bytes(), 103 addrCreditor.Bytes(), 104 big.NewInt(total).Bytes(), 105 big.NewInt(risk).Bytes(), 106 big.NewInt(open).Bytes(), 107 big.NewInt(exp).Bytes()) 108 if err != nil { 109 return h, errors.Wrapf(err, "call failed to create fp token %s", id) 110 } 111 112 if _, err := f.CheckCallResult(h); err != nil { 113 return h, errors.Wrapf(err, "check failed to create fp token %s", id) 114 } 115 return h, nil 116 } 117 118 func (f *fpToken) CreateDeferredToken(creditor, prvkey, source, deferred string, amount, open, exp int64) (string, error) { 119 addrCreditor, err := address.FromString(creditor) 120 if err != nil { 121 return "", errors.Errorf("invalid creditor address = %s", creditor) 122 } 123 srcToken, err := address.FromString(source) 124 if err != nil { 125 return "", errors.Errorf("invalid token address = %s", source) 126 } 127 addrProxy, _ := address.FromString(f.manageProxy) 128 129 h, err := f.SetExecutor(creditor). 130 SetPrvKey(prvkey). 131 SetAddress(f.manage). 132 Call("a22cb465", addrProxy.Bytes(), []byte{1}) 133 if err != nil { 134 return h, errors.Wrap(err, "creditor failed to set approve") 135 } 136 time.Sleep(time.Millisecond * 200) 137 138 h, err = f.RunAsOwner(). 139 SetAddress(f.manageProxy). 140 Call("f5f8644e", 141 addrCreditor.Bytes(), 142 srcToken.Bytes(), 143 big.NewInt(amount).Bytes(), 144 []byte(deferred), 145 big.NewInt(open).Bytes(), 146 big.NewInt(exp).Bytes()) 147 if err != nil { 148 return h, errors.Wrapf(err, "call failed to create deferred token %s", deferred) 149 } 150 151 if _, err := f.CheckCallResult(h); err != nil { 152 return h, errors.Wrapf(err, "check failed to create deferred token %s", deferred) 153 } 154 return h, nil 155 } 156 157 func (f *fpToken) TokenAddress(astid string) (string, error) { 158 // call Management.tokenById() to get the asset's ERC20 token address 159 res, err := f.RunAsOwner().SetAddress(f.manage).Read("6b6af2d5", []byte(astid)) 160 if err != nil { 161 return "", errors.Wrapf(err, "failed to get token address for asset %s", astid) 162 } 163 data, err := hex.DecodeString(res) 164 if err != nil { 165 return "", errors.Wrap(err, "invalid token address") 166 } 167 addr := hash.BytesToHash160(data) 168 if (hash.Hash160{} == addr) { 169 // tokenById() returns an all-zero address, sth must go wrong 170 return "", errors.Errorf("all-zero token address") 171 } 172 // tokenById() returns 20-byte EVM address, convert to iotex address 173 token, _ := address.FromBytes(addr[:]) 174 return token.String(), nil 175 } 176 177 func (f *fpToken) Transfer(token, sender, prvkey, receiver string, amount int64) (string, error) { 178 _, err := address.FromString(sender) 179 if err != nil { 180 return "", errors.Errorf("invalid account address = %s", sender) 181 } 182 addrReceiver, err := address.FromString(receiver) 183 if err != nil { 184 return "", errors.Errorf("invalid account address = %s", receiver) 185 } 186 // transfer to receiver 187 h, err := f.SetAddress(token). 188 SetExecutor(sender). 189 SetPrvKey(prvkey). 190 Call("a9059cbb", addrReceiver.Bytes(), big.NewInt(amount).Bytes()) 191 if err != nil { 192 return h, errors.Wrap(err, "call transfer failed") 193 } 194 195 if _, err := f.CheckCallResult(h); err != nil { 196 return h, errors.Wrap(err, "check transfer failed") 197 } 198 return h, nil 199 } 200 201 func (f *fpToken) RiskLock(token, sender, prvkey string, amount int64) (string, error) { 202 // lock is a special type of transfer with receiver == risk lock contract 203 return f.Transfer(token, sender, prvkey, f.riskLock, amount) 204 } 205 206 func (f *fpToken) SetRate(source string, amount int64) (string, error) { 207 tokenAddr := []byte{} 208 if source != StableTokenID { 209 token, err := address.FromString(source) 210 if err != nil { 211 return "", errors.Errorf("invalid token address = %s", source) 212 } 213 tokenAddr = token.Bytes() 214 } 215 h, err := f.RunAsOwner(). 216 SetAddress(f.cdp). 217 Call("9fb9c12c", tokenAddr, big.NewInt(amount).Bytes()) 218 if err != nil { 219 return h, errors.Wrap(err, "call set interest rate failed") 220 } 221 222 if _, err := f.CheckCallResult(h); err != nil { 223 return h, errors.Wrap(err, "check set interest rate failed") 224 } 225 return h, nil 226 } 227 228 func (f *fpToken) GetRate(token string) (string, error) { 229 return f.ReadAndParseToDecimal(f.cdp, "2e05d56f", token) 230 } 231 232 func (f *fpToken) SetPayDate(token string, pay int64) (string, error) { 233 tokenAddr, err := address.FromString(token) 234 if err != nil { 235 return "", errors.Errorf("invalid token address = %s", token) 236 } 237 h, err := f.RunAsOwner(). 238 SetAddress(f.eapStorage). 239 Call("b74b15a6", tokenAddr.Bytes(), big.NewInt(pay).Bytes()) 240 if err != nil { 241 return h, errors.Wrap(err, "call setPayDate failed") 242 } 243 244 if _, err := f.CheckCallResult(h); err != nil { 245 return h, errors.Wrap(err, "check setPayDate failed") 246 } 247 return h, nil 248 } 249 250 func (f *fpToken) GetPayDate(token string) (string, error) { 251 return f.ReadAndParseToDecimal(f.eapStorage, "8174bc65", token) 252 } 253 254 func (f *fpToken) Start() error { 255 addrManage, err := address.FromString(f.manage) 256 if err != nil { 257 return errors.Errorf("invalid management contract address = %s", f.manage) 258 } 259 addrProxy, err := address.FromString(f.manageProxy) 260 if err != nil { 261 return errors.Errorf("invalid management proxy contract address = %s", f.manageProxy) 262 } 263 addrEap, err := address.FromString(f.eapStorage) 264 if err != nil { 265 return errors.Errorf("invalid storage contract address = %s", f.eapStorage) 266 } 267 addrRiskLock, err := address.FromString(f.riskLock) 268 if err != nil { 269 return errors.Errorf("invalid risk lock contract address = %s", f.riskLock) 270 } 271 addrReg, err := address.FromString(f.registry) 272 if err != nil { 273 return errors.Errorf("invalid registry contract address = %s", f.registry) 274 } 275 addrCdp, err := address.FromString(f.cdp) 276 if err != nil { 277 return errors.Errorf("invalid cdp management contract address = %s", f.cdp) 278 } 279 admin, err := address.FromString(Producer) 280 if err != nil { 281 return errors.Errorf("invalid admin address = %s", Producer) 282 } 283 284 // set-up management 285 h, err := f.RunAsOwner().SetAddress(f.manage).Call("f0bc1c2b", addrEap.Bytes()) 286 if err != nil { 287 return errors.Wrap(err, "management contract failed to set storage") 288 } 289 time.Sleep(time.Millisecond * 100) 290 291 h1, err := f.Call("083b6b8a", addrRiskLock.Bytes()) 292 if err != nil { 293 return errors.Wrap(err, "management contract failed to set risk lock") 294 } 295 time.Sleep(time.Millisecond * 100) 296 297 h2, err := f.Call("a91ee0dc", addrReg.Bytes()) 298 if err != nil { 299 return errors.Wrap(err, "management contract failed to set registry") 300 } 301 time.Sleep(time.Millisecond * 100) 302 303 h3, err := f.Call("f2fde38b", addrProxy.Bytes()) 304 if err != nil { 305 return errors.Wrap(err, "management contract failed to transfer ownership") 306 } 307 time.Sleep(time.Millisecond * 100) 308 309 res, err := f.Read("121d8fdd", nil) 310 if err != nil { 311 return errors.Wrap(err, "management contract failed to get CAN_BURN()") 312 } 313 canBurn, err := hex.DecodeString(res) 314 if err != nil { 315 return errors.Wrapf(err, "invalid CAN_BURN bytes") 316 } 317 if len(canBurn) != 32 { 318 return errors.Errorf("invalid CAN_BURN bytes length = %d, expecting 32", len(canBurn)) 319 } 320 res, err = f.Read("eb222d67", nil) 321 if err != nil { 322 return errors.Wrap(err, "management contract failed to get ON_RECEIVED()") 323 } 324 onReceived, err := hex.DecodeString(res) 325 if err != nil { 326 return errors.Wrapf(err, "invalid ON_RECEIVED bytes") 327 } 328 if len(onReceived) != 32 { 329 return errors.Errorf("invalid ON_RECEIVED bytes length = %d, expecting 32", len(onReceived)) 330 } 331 332 // set-up risk lock 333 h4, err := f.SetAddress(f.riskLock).Call("50aaf8b8", addrEap.Bytes()) 334 if err != nil { 335 return errors.Wrap(err, "risk lock contract failed to set storage") 336 } 337 time.Sleep(time.Millisecond * 100) 338 339 // set-up storage 340 h5, err := f.SetAddress(f.eapStorage).Call("4b0bddd2", addrProxy.Bytes(), []byte{1}) 341 if err != nil { 342 return errors.Wrap(err, "storage contract failed to set admin") 343 } 344 time.Sleep(time.Millisecond * 100) 345 346 // set-up proxy 347 h6, err := f.SetAddress(f.manageProxy).Call("50aaf8b8", addrEap.Bytes()) 348 if err != nil { 349 return errors.Wrap(err, "proxy contract failed to set storage") 350 } 351 time.Sleep(time.Millisecond * 100) 352 353 h7, err := f.Call("d4a22bde", addrManage.Bytes()) 354 if err != nil { 355 return errors.Wrap(err, "proxy contract failed to set management") 356 } 357 time.Sleep(time.Millisecond * 100) 358 359 h8, err := f.Call("c254f696", addrCdp.Bytes()) 360 if err != nil { 361 return errors.Wrap(err, "proxy contract failed to set cdp management") 362 } 363 time.Sleep(time.Millisecond * 100) 364 365 // set up registry 366 h9, err := f.SetAddress(f.registry).Call("fdac9ff7", admin.Bytes(), canBurn, []byte{1}) 367 if err != nil { 368 return errors.Wrap(err, "registry failed to set CAN_BURN") 369 } 370 time.Sleep(time.Millisecond * 100) 371 372 h10, err := f.Call("fdac9ff7", addrRiskLock.Bytes(), onReceived, []byte{1}) 373 if err != nil { 374 return errors.Wrap(err, "registry failed to set ON_RECEIVED") 375 } 376 time.Sleep(time.Millisecond * 100) 377 378 // set-up cdp management 379 h11, err := f.SetAddress(f.cdp).Call("50aaf8b8", addrEap.Bytes()) 380 if err != nil { 381 return errors.Wrap(err, "cdp management contract failed to set storage") 382 } 383 time.Sleep(time.Millisecond * 100) 384 385 h12, err := f.Call("b5524206", addrProxy.Bytes()) 386 if err != nil { 387 return errors.Wrap(err, "cdp management contract failed to set proxy") 388 } 389 time.Sleep(time.Millisecond * 100) 390 391 h13, err := f.Call("deaa59df", admin.Bytes()) 392 if err != nil { 393 return errors.Wrap(err, "cdp management contract failed to set wallet") 394 } 395 time.Sleep(time.Millisecond * 100) 396 397 // set-up stable token approve 398 approve := hash.Hash256{} 399 for i := 0; i < len(approve); i++ { 400 approve[i] = 255 401 } 402 h14, err := f.SetAddress(f.stbToken).Call("095ea7b3", addrCdp.Bytes(), approve[:]) 403 if err != nil { 404 return errors.Wrap(err, "call stable token contract failed to set approve") 405 } 406 407 if _, err := f.CheckCallResult(h); err != nil { 408 return errors.Wrap(err, "check management contract failed to set storage") 409 } 410 if _, err := f.CheckCallResult(h1); err != nil { 411 return errors.Wrap(err, "check management contract failed to set risk lock") 412 } 413 if _, err := f.CheckCallResult(h2); err != nil { 414 return errors.Wrap(err, "check management contract failed to set registry") 415 } 416 if _, err := f.CheckCallResult(h3); err != nil { 417 return errors.Wrap(err, "check management contract failed to transfer ownership") 418 } 419 if _, err := f.CheckCallResult(h4); err != nil { 420 return errors.Wrap(err, "check risk lock contract failed to set storage") 421 } 422 if _, err := f.CheckCallResult(h5); err != nil { 423 return errors.Wrap(err, "storage contract failed to set admin") 424 } 425 if _, err := f.CheckCallResult(h6); err != nil { 426 return errors.Wrap(err, "check proxy contract failed to set storage") 427 } 428 if _, err := f.CheckCallResult(h7); err != nil { 429 return errors.Wrap(err, "check proxy contract failed to set management") 430 } 431 if _, err := f.CheckCallResult(h8); err != nil { 432 return errors.Wrap(err, "check proxy contract failed to set cdp management") 433 } 434 if _, err := f.CheckCallResult(h9); err != nil { 435 return errors.Wrap(err, "check registry contract failed to set CAN_BURN") 436 } 437 if _, err := f.CheckCallResult(h10); err != nil { 438 return errors.Wrap(err, "check registry contract failed to set ON_RECEIVED1") 439 } 440 if _, err := f.CheckCallResult(h11); err != nil { 441 return errors.Wrap(err, "check cdp management contract failed to set storage") 442 } 443 if _, err := f.CheckCallResult(h12); err != nil { 444 return errors.Wrap(err, "check cdp management contract failed to set proxy") 445 } 446 if _, err := f.CheckCallResult(h13); err != nil { 447 return errors.Wrap(err, "check cdp management contract failed to set wallet") 448 } 449 if _, err := f.CheckCallResult(h14); err != nil { 450 return errors.Wrap(err, "check stable token contract failed to set approve") 451 } 452 return nil 453 } 454 455 func (f *fpToken) SetManagement(manage string) FpToken { 456 f.manage = manage 457 return f 458 } 459 460 func (f *fpToken) SetManagementProxy(proxy string) FpToken { 461 f.manageProxy = proxy 462 return f 463 } 464 465 func (f *fpToken) SetEapStorage(eap string) FpToken { 466 f.eapStorage = eap 467 return f 468 } 469 470 func (f *fpToken) SetRiskLock(lock string) FpToken { 471 f.riskLock = lock 472 return f 473 } 474 475 func (f *fpToken) SetRegistry(reg string) FpToken { 476 f.registry = reg 477 return f 478 } 479 480 func (f *fpToken) SetCdpManager(cdp string) FpToken { 481 f.cdp = cdp 482 return f 483 } 484 485 func (f *fpToken) SetStableToken(stb string) FpToken { 486 f.stbToken = stb 487 return f 488 }