60806040523480156200001157600080fd5b5060405162003f8a38038062003f8a833981810160405260c08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190805190602001909291908051906020019092919080519060200190929190505050828282828282600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200028a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4f776e657220616464726573732063616e6e6f7420626520300000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf3681604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050508560139080519060200190620003b8929190620003e5565b508460149080519060200190620003d1929190620003e5565b50836012819055505050505050506200048b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200042857805160ff191683800117855562000459565b8280016001018555821562000459579182015b82811115620004585782518255916020019190600101906200043b565b5b5090506200046891906200046c565b5090565b5b80821115620004875760008160009055506001016200046d565b5090565b613aef806200049b6000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c806358d6bc1511610125578063a9059cbb116100ad578063cd3daf9d1161007c578063cd3daf9d14610999578063d1af0c7d146109c5578063dd62ed3e146109f9578063e3c5729d14610a71578063f0f6a9d414610ac95761021c565b8063a9059cbb14610867578063ba43265f146108cb578063baa3f7ee146108e9578063be79a0cb146109415761021c565b806372f702f3116100f457806372f702f31461074457806379ba5097146107785780638da5cb5b1461078257806395d89b41146107b6578063a694fc3a146108395761021c565b806358d6bc151461066257806366666aa9146106b05780636b0c341b146106ce57806370a08231146106ec5761021c565b80632e1a7d4d116101a8578063379607f511610177578063379607f5146105245780633ba1356c1461055257806353a47bb7146105aa57806354aea127146105de578063574c7e9d146105fc5761021c565b80632e1a7d4d146104b0578063313ce567146104de57806333a8545f146104fc578063376d771a1461051a5761021c565b806318160ddd116101ef57806318160ddd1461036a5780631d62ebd91461038857806323895555146103e057806323b872dd146103fe5780632e17de78146104825761021c565b806306fdde0314610221578063095ea7b3146102a45780630a5c6786146103085780631627540c14610326575b600080fd5b610229610ae7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561026957808201518184015260208101905061024e565b50505050905090810190601f1680156102965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102f0600480360360408110156102ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b85565b60405180821515815260200191505060405180910390f35b610310610c77565b6040518082815260200191505060405180910390f35b6103686004803603602081101561033c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c81565b005b610372610db7565b6040518082815260200191505060405180910390f35b6103ca6004803603602081101561039e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dc1565b6040518082815260200191505060405180910390f35b6103e8610e0a565b6040518082815260200191505060405180910390f35b61046a6004803603606081101561041457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e11565b60405180821515815260200191505060405180910390f35b6104ae6004803603602081101561049857600080fd5b8101908080359060200190929190505050611103565b005b6104dc600480360360208110156104c657600080fd5b8101908080359060200190929190505050611246565b005b6104e661143c565b6040518082815260200191505060405180910390f35b610504611442565b6040518082815260200191505060405180910390f35b61052261144c565b005b6105506004803603602081101561053a57600080fd5b8101908080359060200190929190505050611457565b005b6105946004803603602081101561056857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061160c565b6040518082815260200191505060405180910390f35b6105b26117e9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105e661180d565b6040518082815260200191505060405180910390f35b61063e6004803603602081101561061257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611817565b60405180848152602001838152602001828152602001935050505060405180910390f35b6106986004803603604081101561067857600080fd5b810190808035906020019092919080359060200190929190505050611873565b60405180821515815260200191505060405180910390f35b6106b8611a33565b6040518082815260200191505060405180910390f35b6106d6611a3d565b6040518082815260200191505060405180910390f35b61072e6004803603602081101561070257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a47565b6040518082815260200191505060405180910390f35b61074c611a90565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610780611aba565b005b61078a611c71565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107be611c97565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fe5780820151818401526020810190506107e3565b50505050905090810190601f16801561082b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108656004803603602081101561084f57600080fd5b8101908080359060200190929190505050611d35565b005b6108b36004803603604081101561087d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e17565b60405180821515815260200191505060405180910390f35b6108d3611f24565b6040518082815260200191505060405180910390f35b61092b600480360360208110156108ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f2f565b6040518082815260200191505060405180910390f35b6109816004803603606081101561095757600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611f78565b60405180821515815260200191505060405180910390f35b6109a1612145565b60405180848152602001838152602001828152602001935050505060405180910390f35b6109cd612165565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a5b60048036036040811015610a0f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061218f565b6040518082815260200191505060405180910390f35b610ab360048036036020811015610a8757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612216565b6040518082815260200191505060405180910390f35b610ad161222e565b6040518082815260200191505060405180910390f35b60138054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b7d5780601f10610b5257610100808354040283529160200191610b7d565b820191906000526020600020905b815481529060010190602001808311610b6057829003601f168201915b505050505081565b600081601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600e54905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806139b9602f913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2281604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000600454905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6276a70081565b60008160008111610e8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416d6f756e74206973206e6f7420706f7369746976650000000000000000000081525060200191505060405180910390fd5b82601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610f5f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806139246021913960400191505060405180910390fd5b82610f6986611a47565b1015610fdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5472616e7366657220616d6f756e7420657863656564732062616c616e63650081525060200191505060405180910390fd5b610fe8858585612238565b61107783601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122ad90919063ffffffff16565b601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019150509392505050565b806000811161117a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416d6f756e74206973206e6f7420706f7369746976650000000000000000000081525060200191505060405180910390fd5b600033905061118881611a47565b8311156111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806138fd6027913960400191505060405180910390fd5b6111e981612330565b6111f38184612417565b8073ffffffffffffffffffffffffffffffffffffffff167f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75846040518082815260200191505060405180910390a2505050565b80600081116112bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416d6f756e74206973206e6f7420706f7369746976650000000000000000000081525060200191505060405180910390fd5b6000339050600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461130a612522565b101561137e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f526577617264206e6f7420756e6c6f636b65642079657400000000000000000081525060200191505060405180910390fd5b61138781611f2f565b8311156113df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613a66602a913960400191505060405180910390fd5b6113e9818461252a565b8073ffffffffffffffffffffffffffffffffffffffff167f6cca423c6ffc06e62a0acc433965e074b11c28479b0449250ce3ff65ac9e39fe846040518082815260200191505060405180910390a2505050565b60125481565b6000600c54905090565b61145533612330565b565b80600081116114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416d6f756e74206973206e6f7420706f7369746976650000000000000000000081525060200191505060405180910390fd5b60003390506114dc81612330565b6114e581610dc1565b83111561153d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806139456028913960400191505060405180910390fd5b600061156061154a611f24565b611552612522565b61261090919063ffffffff16565b905080600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115b08285612698565b8173ffffffffffffffffffffffffffffffffffffffff167f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a8583604051808381526020018281526020019250505060405180910390a250505050565b600061161661386c565b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160405180602001604052908160008201548152505081526020016001820160009054906101000a900460ff1615151515815250509050600e546116a6612522565b1115806116b557508060200151155b156116c45760009150506117e4565b6116cc61388e565b6116d46127e1565b90506116de61388e565b6000600f600001541161170e576117096117046001600e5461261090919063ffffffff16565b61284b565b611726565b600f6040518060200160405290816000820154815250505b905061173061388e565b61174782856000015161291a90919063ffffffff16565b611755578360000151611757565b815b9050600061176487611a47565b9050600081141561177d576000955050505050506117e4565b611790828561291a90919063ffffffff16565b156117a3576000955050505050506117e4565b6117ab61388e565b6117be838661293090919063ffffffff16565b90506117db6117d6838361296990919063ffffffff16565b61299e565b96505050505050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b6000806000601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160000154600a60129250925092509193909250565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461191b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806139b9602f913960400191505060405180910390fd5b6000611925612522565b90506000600e5411611982576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613a456021913960400191505060405180910390fd5b600e548110156119dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806138d76026913960400191505060405180910390fd5b6119e9818286866129c2565b7fbc1de98124926348fe8e6959ee37194f931c09201dda22e160a9943ca1b66db98484604051808381526020018281526020019250505060405180910390a1600191505092915050565b6000600254905090565b6000600354905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806138a26035913960400191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf36600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60148054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d2d5780601f10611d0257610100808354040283529160200191611d2d565b820191906000526020600020905b815481529060010190602001808311611d1057829003601f168201915b505050505081565b8060008111611dac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416d6f756e74206973206e6f7420706f7369746976650000000000000000000081525060200191505060405180910390fd5b6000339050611dba81612330565b611dc48184612bcb565b8073ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d846040518082815260200191505060405180910390a2505050565b60008160008111611e90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416d6f756e74206973206e6f7420706f7369746976650000000000000000000081525060200191505060405180910390fd5b82611e9a33611a47565b1015611f0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5472616e7366657220616d6f756e7420657863656564732062616c616e63650081525060200191505060405180910390fd5b611f19338585612238565b600191505092915050565b6000620a8c00905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806139b9602f913960400191505060405180910390fd5b600061202a612522565b90506000600e5414612087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061396d6026913960400191505060405180910390fd5b8481106120df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c815260200180613a09603c913960400191505060405180910390fd5b84600e819055506120f2818686866129c2565b7fa0bb26644c5db4dbb27b45959ef4533e48a805c4767e6c9ef123bd98e3c63ce085858560405180848152602001838152602001828152602001935050505060405180910390a160019150509392505050565b60008060006121526127e1565b60000151600a6012925092509250909192565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a6020528060005260406000206000915090505481565b6000600d54905090565b612243838383612cd8565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600082821115612325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b600061233a612522565b905061234581612cfa565b60006123508361160c565b90506000811115612366576123658382612d84565b5b6010601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082015481600001559050506001601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550505050565b6124648282600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612e389092919063ffffffff16565b6124b681600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122ad90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061250e816004546122ad90919063ffffffff16565b60048190555061251e8282612eda565b5050565b600042905090565b6125778282600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612e389092919063ffffffff16565b6125c981600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122ad90919063ffffffff16565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60008082840190508381101561268e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6126ea81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122ad90919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612742816003546122ad90919063ffffffff16565b60038190555061279a81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261090919063ffffffff16565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6127e961388e565b60006128116127f6612522565b61280c6001600d5461261090919063ffffffff16565b612f44565b9050600b54811161283b576010604051806020016040529081600082015481525050915050612848565b6128448161284b565b9150505b90565b61285361388e565b81600e541061287357604051806020016040528060008152509050612915565b600061287d610db7565b9050600081141561289a576128926000612f5d565b915050612915565b60006128d0600c546128c26128b3600b54600e54612f91565b876122ad90919063ffffffff16565b612fab90919063ffffffff16565b90506128da61388e565b6128e48284613031565b905061290f81601060405180602001604052908160008201548152505061307890919063ffffffff16565b93505050505b919050565b6000816000015183600001511115905092915050565b61293861388e565b604051806020016040528061295e846000015186600001516122ad90919063ffffffff16565b815250905092915050565b61297161388e565b6040518060200160405280612993848660000151612fab90919063ffffffff16565b815250905092915050565b60006129bb6012600a0a83600001516130b190919063ffffffff16565b9050919050565b60008111612a38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4475726174696f6e206973207a65726f0000000000000000000000000000000081525060200191505060405180910390fd5b6276a700811115612ab1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f446973747269627574696f6e206475726174696f6e20746f6f206c6f6e67000081525060200191505060405180910390fd5b612aba84612cfa565b6000612acf8284612fab90919063ffffffff16565b9050600085600d541115612b0b57612b06600c54612af888600d546122ad90919063ffffffff16565b612fab90919063ffffffff16565b612b0e565b60005b905080821115612b5b57612b56600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612b5183856122ad90919063ffffffff16565b61313a565b612ba3565b80821015612ba257612ba1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612b9c84846122ad90919063ffffffff16565b6131c3565b5b5b83600c81905550612bbd838661261090919063ffffffff16565b600d81905550505050505050565b612c1a823083600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661324a909392919063ffffffff16565b612c6c81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261090919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cc48160045461261090919063ffffffff16565b600481905550612cd4828261330b565b5050565b612ce183612330565b612cea82612330565b612cf5838383613375565b505050565b6000612d04610db7565b905081600e5411158015612d1d57506000600f60000154145b8015612d295750600081115b15612d4a57612d3a600c5482613031565b600f600082015181600001559050505b6000600c54118015612d5e5750600d548210155b15612d7757612d6e600d546134a4565b6000600c819055505b612d80826134a4565b5050565b612dd681600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261090919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e2e816002546122ad90919063ffffffff16565b6002819055505050565b612ed58363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506134c6565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000818310612f535781612f55565b825b905092915050565b612f6561388e565b6040518060200160405280612f876012600a0a85612fab90919063ffffffff16565b8152509050919050565b600081831015612fa15781612fa3565b825b905092915050565b600080831415612fbe576000905061302b565b6000828402905082848281612fcf57fe5b0414613026576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806139e86021913960400191505060405180910390fd5b809150505b92915050565b61303961388e565b604051806020016040528061306d8461305f6012600a0a88612fab90919063ffffffff16565b6130b190919063ffffffff16565b815250905092915050565b61308061388e565b60405180602001604052806130a68460000151866000015161261090919063ffffffff16565b815250905092915050565b6000808211613128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838161313157fe5b04905092915050565b613189823083600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661324a909392919063ffffffff16565b61319e8160035461261090919063ffffffff16565b6003819055506131b98160025461261090919063ffffffff16565b6002819055505050565b6132108282600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612e389092919063ffffffff16565b613225816003546122ad90919063ffffffff16565b600381905550613240816002546122ad90919063ffffffff16565b6002819055505050565b613305846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506134c6565b50505050565b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6133c781600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122ad90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061345c81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261090919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6134ad8161284b565b60106000820151816000015590505080600b8190555050565b6060613528826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166135b59092919063ffffffff16565b90506000815111156135b05780806020019051602081101561354957600080fd5b81019080805190602001909291905050506135af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613a90602a913960400191505060405180910390fd5b5b505050565b60606135c484846000856135cd565b90509392505050565b6060823073ffffffffffffffffffffffffffffffffffffffff1631101561363f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806139936026913960400191505060405180910390fd5b6136488561378d565b6136ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061370a57805182526020820191506020810190506020830392506136e7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461376c576040519150601f19603f3d011682016040523d82523d6000602084013e613771565b606091505b50915091506137818282866137a0565b92505050949350505050565b600080823b905060008111915050919050565b606083156137b057829050613865565b6000835111156137c35782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561382a57808201518184015260208101905061380f565b50505050905090810190601f1680156138575780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b9392505050565b604051806040016040528061387f61388e565b81526020016000151581525090565b604051806020016040528060008152509056fe596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869705761697420666f7220696e697469616c20726577617264207374726174656779207374617274556e7374616b696e6720616d6f756e742065786365656473207374616b65642062616c616e63655472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436c61696d696e6720616d6f756e7420657863656564732072656365697665642072657761726473496e697469616c2072657761726420737472617465677920616c726561647920736574746564416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77496e697469616c20726577617264207374726174656779207374617274696e672074696d657374616d70206c657373207468616e2063757272656e7453657420696e697469616c207265776172642073747261746567792066697273745769746864726177696e6720616d6f756e74206578636565647320636c61696d65642062616c616e63655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212204a789ab1ced5e7d807d5ca9c0fc00c2b3682f1811180c755d7e5720a36fc452864736f6c634300060c003300000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000080000000000000000000000003593d125a4f7849a1b059e64f4517a86dd60c95d000000000000000000000000ab576bcbb0c3303c9e680fbfdeca67e062eae59c000000000000000000000000d4eee3d50588d7dee8dcc42635e50093e0aa8cc000000000000000000000000000000000000000000000000000000000000000137a656e555354205374616b696e6720506f6f6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d5374616b65642d7a656e55535400000000000000000000000000000000000000