60806040523480156200001157600080fd5b5060405162003fc738038062003fc78339810160408190526200003491620006c7565b6200003e6200031d565b60018286866040518060400160405280601381526020017f477261696c7320563a204d696e742050617373000000000000000000000000008152506040518060400160405280600681526020016547355041535360d01b815250886101f483838160029081620000af91906200086b565b506003620000be82826200086b565b506000805550506001600a55620001057fe0fb75b40f2731fce9fd08fd8e51c7db44b9ffb2e43369a2734fc1a121a6b30760008051602062003f87833981519152620003f5565b6200012060008051602062003fa783398151915280620003f5565b6200015b7f44ac9762eec3a11893fefb11d028bb3102560094137c3ed4518712475b2577cc60008051602062003f87833981519152620003f5565b6200017660008051602062003fa783398151915280620003f5565b600b805460ff191690556200018c828262000440565b6200019960008762000545565b620001b460008051602062003f878339815191528662000545565b505050505050620001cb816200057060201b60201c565b506daaeb6d7670e522a718067333cd4e3b15620003115780156200025f57604051633e9f1edf60e11b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e90637d3e3dbe906044015b600060405180830381600087803b1580156200024057600080fd5b505af115801562000255573d6000803e3d6000fd5b5050505062000311565b6001600160a01b03821615620002b05760405163a0af290360e01b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e9063a0af29039060440162000225565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e48690602401600060405180830381600087803b158015620002f757600080fd5b505af11580156200030c573d6000803e3d6000fd5b505050505b50505050505062000962565b60006daaeb6d7670e522a718067333cd4e3b15801590620003bd575060405163c3c5a54760e01b8152739dc5ee2d52d014f8b81d662fa8f4ca525f27cd6b60048201526daaeb6d7670e522a718067333cd4e9063c3c5a54790602401602060405180830381865afa15801562000397573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bd919062000937565b15620003dc5750739dc5ee2d52d014f8b81d662fa8f4ca525f27cd6b90565b50733cc6cdda760b79bafa08df41ecfa224f810dceb690565b600082815260086020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6127106001600160601b0382161115620004b45760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084015b60405180910390fd5b6001600160a01b0382166200050c5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401620004ab565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600c55565b62000551828262000582565b60008281526009602052604090206200056b908262000626565b505050565b600e6200057e82826200086b565b5050565b60008281526008602090815260408083206001600160a01b038516845290915290205460ff166200057e5760008281526008602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620005e23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006200063d836001600160a01b03841662000646565b90505b92915050565b60008181526001830160205260408120546200068f5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000640565b50600062000640565b6001600160a01b0381168114620006ae57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215620006de57600080fd5b8451620006eb8162000698565b80945050602080860151620007008162000698565b6040870151909450620007138162000698565b60608701519093506001600160401b03808211156200073157600080fd5b818801915088601f8301126200074657600080fd5b8151818111156200075b576200075b620006b1565b604051601f8201601f19908116603f01168101908382118183101715620007865762000786620006b1565b816040528281528b868487010111156200079f57600080fd5b600093505b82841015620007c35784840186015181850187015292850192620007a4565b600086848301015280965050505050505092959194509250565b600181811c90821680620007f257607f821691505b6020821081036200081357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200056b57600081815260208120601f850160051c81016020861015620008425750805b601f850160051c820191505b8181101562000863578281556001016200084e565b505050505050565b81516001600160401b03811115620008875762000887620006b1565b6200089f81620008988454620007dd565b8462000819565b602080601f831160018114620008d75760008415620008be5750858301515b600019600386901b1c1916600185901b17855562000863565b600085815260208120601f198616915b828110156200090857888601518255948401946001909101908401620008e7565b5085821015620009275787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200094a57600080fd5b815180151581146200095b57600080fd5b9392505050565b61361580620009726000396000f3fe6080604052600436106102d15760003560e01c806342842e0e1161017957806391d14854116100d6578063c16272971161008a578063d547741f11610064578063d547741f146107eb578063d547cfb71461080b578063e985e9c51461082057600080fd5b8063c162729714610796578063c87b56dd146107ab578063ca15c873146107cb57600080fd5b8063a217fddf116100bb578063a217fddf1461074e578063a22cb46514610763578063b88d4fde1461078357600080fd5b806391d14854146106f357806395d89b411461073957600080fd5b806370a082311161012d5780638222b7d7116101125780638222b7d7146106a95780638456cb59146106be5780639010d07c146106d357600080fd5b806370a08231146106555780637fa46ab41461067557600080fd5b80635ada5c551161015e5780635ada5c551461060a5780635c975abb1461061d5780636352211e1461063557600080fd5b806342842e0e146105d7578063461d338c146105ea57600080fd5b80631e9a69501161023257806330176e13116101e65780633dcc23a0116101c05780633dcc23a0146105805780633f4ba83a146105a057806341f43434146105b557600080fd5b806330176e131461050c57806331c23d201461052c57806336568abe1461056057600080fd5b8063248a9ca311610217578063248a9ca31461047d5780632a55205a146104ad5780632f2ff15d146104ec57600080fd5b80631e9a69501461044a57806323b872dd1461046a57600080fd5b80630dc3b9091161028957806318160ddd1161026e57806318160ddd146103fc5780631b38388e146104155780631d23354a1461043557600080fd5b80630dc3b9091461039a578063117ad57a146103dc57600080fd5b806306fdde03116102ba57806306fdde031461032d578063081812fc1461034f578063095ea7b31461038757600080fd5b806301ffc9a7146102d657806304634d8d1461030b575b600080fd5b3480156102e257600080fd5b506102f66102f1366004612d0d565b610869565b60405190151581526020015b60405180910390f35b34801561031757600080fd5b5061032b610326366004612d46565b610898565b005b34801561033957600080fd5b506103426108d1565b6040516103029190612dde565b34801561035b57600080fd5b5061036f61036a366004612df1565b610963565b6040516001600160a01b039091168152602001610302565b61032b610395366004612e0a565b6109c0565b3480156103a657600080fd5b506103ce7fe0fb75b40f2731fce9fd08fd8e51c7db44b9ffb2e43369a2734fc1a121a6b30781565b604051908152602001610302565b3480156103e857600080fd5b5061032b6103f7366004612e34565b6109ce565b34801561040857600080fd5b50600154600054036103ce565b34801561042157600080fd5b5061032b610430366004612e34565b610a43565b34801561044157600080fd5b5061032b610b0d565b34801561045657600080fd5b5061032b610465366004612e0a565b610b42565b61032b610478366004612e55565b610bc8565b34801561048957600080fd5b506103ce610498366004612df1565b60009081526008602052604090206001015490565b3480156104b957600080fd5b506104cd6104c8366004612e91565b610bd3565b604080516001600160a01b039093168352602083019190915201610302565b3480156104f857600080fd5b5061032b610507366004612eb3565b610cb2565b34801561051857600080fd5b5061032b610527366004612f84565b610cd7565b34801561053857600080fd5b506103ce7f1e4c11efbd6a865b1cba79eea33d1b33c1394d834190605ed6a14c71c480bf7681565b34801561056c57600080fd5b5061032b61057b366004612eb3565b610d0a565b34801561058c57600080fd5b5061034261059b36600461300f565b610d92565b3480156105ac57600080fd5b5061032b610e16565b3480156105c157600080fd5b5061036f6daaeb6d7670e522a718067333cd4e81565b61032b6105e5366004612e55565b610e48565b3480156105f657600080fd5b50600f5460ff166040516103029190613080565b61032b6106183660046130c1565b610e53565b34801561062957600080fd5b50600b5460ff166102f6565b34801561064157600080fd5b5061036f610650366004612df1565b610ea2565b34801561066157600080fd5b506103ce61067036600461312d565b610ead565b34801561068157600080fd5b506103ce7f44ac9762eec3a11893fefb11d028bb3102560094137c3ed4518712475b2577cc81565b3480156106b557600080fd5b5061032b610f15565b3480156106ca57600080fd5b5061032b610f56565b3480156106df57600080fd5b5061036f6106ee366004612e91565b610f88565b3480156106ff57600080fd5b506102f661070e366004612eb3565b60009182526008602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561074557600080fd5b50610342610fa7565b34801561075a57600080fd5b506103ce600081565b34801561076f57600080fd5b5061032b61077e366004613156565b610fb6565b61032b610791366004613182565b610fc0565b3480156107a257600080fd5b5061032b610fd2565b3480156107b757600080fd5b506103426107c6366004612df1565b611004565b3480156107d757600080fd5b506103ce6107e6366004612df1565b6110a0565b3480156107f757600080fd5b5061032b610806366004612eb3565b6110b7565b34801561081757600080fd5b506103426110dc565b34801561082c57600080fd5b506102f661083b3660046131fe565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b6000610874826110eb565b806108835750610883826110f6565b806108925750610892826110f6565b92915050565b7f1e4c11efbd6a865b1cba79eea33d1b33c1394d834190605ed6a14c71c480bf766108c281611110565b6108cc838361111a565b505050565b6060600280546108e090613228565b80601f016020809104026020016040519081016040528092919081815260200182805461090c90613228565b80156109595780601f1061092e57610100808354040283529160200191610959565b820191906000526020600020905b81548152906001019060200180831161093c57829003601f168201915b5050505050905090565b600061096e82611245565b6109a4576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b6109ca8282611285565b5050565b7f1e4c11efbd6a865b1cba79eea33d1b33c1394d834190605ed6a14c71c480bf766109f881611110565b600f54610100900460ff1615610a3a576040517fc5dbcbf100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109ca82611299565b7f1e4c11efbd6a865b1cba79eea33d1b33c1394d834190605ed6a14c71c480bf76610a6d81611110565b600f5460ff166003811115610a8457610a84613051565b826003811115610a9657610a96613051565b14610add57600f546040517f6e7074f2000000000000000000000000000000000000000000000000000000008152610ad49160ff1690600401613080565b60405180910390fd5b5050600f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b7f1e4c11efbd6a865b1cba79eea33d1b33c1394d834190605ed6a14c71c480bf76610b3781611110565b610b3f6112c0565b50565b7f44ac9762eec3a11893fefb11d028bb3102560094137c3ed4518712475b2577cc610b6c81611110565b610b76838361130c565b610bbe576040517f262f0dbe0000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101839052604401610ad4565b6108cc838361138b565b6108cc838383611394565b6000828152600d602090815260408083208151808301909252546001600160a01b038116808352740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16928201929092528291610c74575060408051808201909152600c546001600160a01b03811682527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1660208201525b602081015160009061271090610c98906bffffffffffffffffffffffff16876132aa565b610ca291906132c1565b91519350909150505b9250929050565b600082815260086020526040902060010154610ccd81611110565b6108cc83836113b9565b7f1e4c11efbd6a865b1cba79eea33d1b33c1394d834190605ed6a14c71c480bf76610d0181611110565b6109ca826113db565b6001600160a01b0381163314610d885760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610ad4565b6109ca82826113e7565b60607f1e4c11efbd6a865b1cba79eea33d1b33c1394d834190605ed6a14c71c480bf76610dbe81611110565b610e0e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506daaeb6d7670e522a718067333cd4e939250506114099050565b949350505050565b7f1e4c11efbd6a865b1cba79eea33d1b33c1394d834190605ed6a14c71c480bf76610e4081611110565b610b3f61144d565b6108cc83838361149f565b7fe0fb75b40f2731fce9fd08fd8e51c7db44b9ffb2e43369a2734fc1a121a6b307610e7d81611110565b610e856114c4565b610e918585858561151d565b610e9b6001600a55565b5050505050565b600061089282611531565b60006001600160a01b038216610eef576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b7f1e4c11efbd6a865b1cba79eea33d1b33c1394d834190605ed6a14c71c480bf76610f3f81611110565b610b3f6000610f516001546000540390565b6115ca565b7f1e4c11efbd6a865b1cba79eea33d1b33c1394d834190605ed6a14c71c480bf76610f8081611110565b610b3f611607565b6000828152600960205260408120610fa09083611644565b9392505050565b6060600380546108e090613228565b6109ca8282611650565b610fcc84848484611664565b50505050565b7f1e4c11efbd6a865b1cba79eea33d1b33c1394d834190605ed6a14c71c480bf76610ffc81611110565b610b3f61168a565b606061100f82611245565b611045576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061104f6116d4565b9050805160000361106f5760405180602001604052806000815250610fa0565b80611079846116e3565b60405160200161108a9291906132fc565b6040516020818303038152906040529392505050565b600081815260096020526040812061089290611727565b6000828152600860205260409020600101546110d281611110565b6108cc83836113e7565b6060600e80546108e090613228565b600061089282611731565b600061110182611747565b8061089257506108928261177f565b610b3f813361178a565b6127106bffffffffffffffffffffffff821611156111a05760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c2065786365656460448201527f2073616c655072696365000000000000000000000000000000000000000000006064820152608401610ad4565b6001600160a01b0382166111f65760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610ad4565b604080518082019091526001600160a01b039092168083526bffffffffffffffffffffffff90911660209092018290527401000000000000000000000000000000000000000090910217600c55565b60008054821080156108925750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b8161128f816117ff565b6108cc83836118ea565b600f805482919060ff191660018360038111156112b8576112b8613051565b021790555050565b61130a7fe0fb75b40f2731fce9fd08fd8e51c7db44b9ffb2e43369a2734fc1a121a6b3077fd83ac62169e315c6fc3ecdb2c5b6ae75284053b2c2f2fb9fc715ba380283e9426119bb565b565b60008061131883610ea2565b9050806001600160a01b0316846001600160a01b0316148061135f57506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b80610e0e575061136e83610963565b6001600160a01b0316846001600160a01b03161491505092915050565b6109ca81611a06565b826001600160a01b03811633146113ae576113ae336117ff565b610fcc848484611a11565b6113c38282611c3f565b60008281526009602052604090206108cc9082611ce1565b600e6109ca8282613371565b6113f18282611cf6565b60008281526009602052604090206108cc9082611d79565b6060610fa0838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250611d8e565b611455611e80565b600b805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b826001600160a01b03811633146114b9576114b9336117ff565b610fcc848484611ed2565b6002600a54036115165760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ad4565b6002600a55565b610fcc848467ffffffffffffffff16611eed565b60008160005481101561159857600081815260046020526040812054907c010000000000000000000000000000000000000000000000000000000082169003611596575b80600003610fa0575060001901600081815260046020526040902054611575565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051838152602081018390527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c910160405180910390a15050565b61160f61202b565b600b805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586114823390565b6000610fa0838361207e565b8161165a816117ff565b6108cc83836120a8565b836001600160a01b038116331461167e5761167e336117ff565b610e9b85858585612114565b61130a7f44ac9762eec3a11893fefb11d028bb3102560094137c3ed4518712475b2577cc7fd83ac62169e315c6fc3ecdb2c5b6ae75284053b2c2f2fb9fc715ba380283e9426119bb565b60606116de612171565b905090565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a9004806116fd5750819003601f19909101908152919050565b6000610892825490565b600061173c8261217b565b806108925750610892825b6000611752826121d1565b806117615750611761826122b2565b8061177057506117708261177f565b80610892575061089282612308565b60006108928261239f565b60008281526008602090815260408083206001600160a01b038516845290915290205460ff166109ca576117bd816123f5565b6117c8836020612407565b6040516020016117d9929190613431565b60408051601f198184030181529082905262461bcd60e51b8252610ad491600401612dde565b6daaeb6d7670e522a718067333cd4e3b15610b3f576040517fc61711340000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a991906134b2565b610b3f576040517fede71dcc0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610ad4565b60006118f582610ea2565b9050336001600160a01b0382161461194757611911813361083b565b611947576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600082815260086020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b610b3f816000612630565b6000611a1c82611531565b9050836001600160a01b0316816001600160a01b031614611a69576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604090208054611a958187335b6001600160a01b039081169116811491141790565b611ad957611aa3863361083b565b611ad9576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516611b19576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2686868660016127d3565b8015611b3157600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600460205260408120919091557c020000000000000000000000000000000000000000000000000000000084169003611bf557600184016000818152600460205260408120549003611bf3576000548114611bf35760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b60008281526008602090815260408083206001600160a01b038516845290915290205460ff166109ca5760008281526008602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611c9d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610fa0836001600160a01b0384166127df565b60008281526008602090815260408083206001600160a01b038516845290915290205460ff16156109ca5760008281526008602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610fa0836001600160a01b03841661282e565b606082471015611e065760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610ad4565b600080866001600160a01b03168587604051611e2291906134cf565b60006040518083038185875af1925050503d8060008114611e5f576040519150601f19603f3d011682016040523d82523d6000602084013e611e64565b606091505b5091509150611e7587838387612921565b979650505050505050565b600b5460ff1661130a5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610ad4565b6108cc83838360405180602001604052806000815250610fc0565b6000805490829003611f2b576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f3860008483856127d3565b6001600160a01b03831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b818114611fe757808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101611faf565b5081600003612022576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005550505050565b600b5460ff161561130a5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610ad4565b6000826000018281548110612095576120956134eb565b9060005260206000200154905092915050565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61211f848484610bc8565b6001600160a01b0383163b15610fcc5761213b8484848461299a565b610fcc576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606116de6110dc565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1e9a695000000000000000000000000000000000000000000000000000000000148061089257506108928261177f565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061226457507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806108925750507fffffffff00000000000000000000000000000000000000000000000000000000167f5b5e139f000000000000000000000000000000000000000000000000000000001490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a00000000000000000000000000000000000000000000000000000000148061089257506108928261217b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4906490600000000000000000000000000000000000000000000000000000000148061089257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610892565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f000000000000000000000000000000000000000000000000000000001480610892575061089282612ae5565b60606108926001600160a01b03831660145b606060006124168360026132aa565b61242190600261351a565b67ffffffffffffffff81111561243957612439612edf565b6040519080825280601f01601f191660200182016040528015612463576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061249a5761249a6134eb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106124fd576124fd6134eb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006125398460026132aa565b61254490600161351a565b90505b60018111156125e1577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612585576125856134eb565b1a60f81b82828151811061259b5761259b6134eb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936125da8161352d565b9050612547565b508315610fa05760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610ad4565b600061263b83611531565b90508060008061265986600090815260066020526040902080549091565b9150915084156126b25761266e818433611a80565b6126b25761267c833361083b565b6126b2576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126c08360008860016127d3565b80156126cb57600082555b6001600160a01b038316600081815260056020526040902080546fffffffffffffffffffffffffffffffff0190554260a01b177c0300000000000000000000000000000000000000000000000000000000176000878152600460205260408120919091557c02000000000000000000000000000000000000000000000000000000008516900361278b576001860160008181526004602052604081205490036127895760005481146127895760008181526004602052604090208590555b505b60405186906000906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050600180548101905550505050565b610fcc84848484612b7c565b600081815260018301602052604081205461282657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610892565b506000610892565b60008181526001830160205260408120548015612917576000612852600183613544565b855490915060009061286690600190613544565b90508181146128cb576000866000018281548110612886576128866134eb565b90600052602060002001549050808760000184815481106128a9576128a96134eb565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806128dc576128dc613557565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610892565b6000915050610892565b60608315612990578251600003612989576001600160a01b0385163b6129895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ad4565b5081610e0e565b610e0e8383612b88565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081526000906001600160a01b0385169063150b7a02906129e8903390899088908890600401613586565b6020604051808303816000875af1925050508015612a23575060408051601f3d908101601f19168201909252612a20918101906135c2565b60015b612a9a573d808015612a51576040519150601f19603f3d011682016040523d82523d6000602084013e612a56565b606091505b508051600003612a92576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610e0e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061089257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610892565b610fcc84848484612bb2565b815115612b985781518083602001fd5b8060405162461bcd60e51b8152600401610ad49190612dde565b612bbe84848484612c87565b6000612bcc600f5460ff1690565b90506000816003811115612be257612be2613051565b03612bed5750610fcc565b6001816003811115612c0157612c01613051565b148015612c1557506001600160a01b038516155b15612c205750610fcc565b6002816003811115612c3457612c34613051565b148015612c4857506001600160a01b038416155b15612c535750610fcc565b806040517ffc40c881000000000000000000000000000000000000000000000000000000008152600401610ad49190613080565b600b5460ff1615612cda5760405162461bcd60e51b815260206004820152601560248201527f45524337323141436f6d6d6f6e3a2070617573656400000000000000000000006044820152606401610ad4565b610fcc565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610b3f57600080fd5b600060208284031215612d1f57600080fd5b8135610fa081612cdf565b80356001600160a01b0381168114612d4157600080fd5b919050565b60008060408385031215612d5957600080fd5b612d6283612d2a565b915060208301356bffffffffffffffffffffffff81168114612d8357600080fd5b809150509250929050565b60005b83811015612da9578181015183820152602001612d91565b50506000910152565b60008151808452612dca816020860160208601612d8e565b601f01601f19169290920160200192915050565b602081526000610fa06020830184612db2565b600060208284031215612e0357600080fd5b5035919050565b60008060408385031215612e1d57600080fd5b612e2683612d2a565b946020939093013593505050565b600060208284031215612e4657600080fd5b813560048110610fa057600080fd5b600080600060608486031215612e6a57600080fd5b612e7384612d2a565b9250612e8160208501612d2a565b9150604084013590509250925092565b60008060408385031215612ea457600080fd5b50508035926020909101359150565b60008060408385031215612ec657600080fd5b82359150612ed660208401612d2a565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115612f2957612f29612edf565b604051601f8501601f19908116603f01168101908282118183101715612f5157612f51612edf565b81604052809350858152868686011115612f6a57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215612f9657600080fd5b813567ffffffffffffffff811115612fad57600080fd5b8201601f81018413612fbe57600080fd5b610e0e84823560208401612f0e565b60008083601f840112612fdf57600080fd5b50813567ffffffffffffffff811115612ff757600080fd5b602083019150836020828501011115610cab57600080fd5b6000806020838503121561302257600080fd5b823567ffffffffffffffff81111561303957600080fd5b61304585828601612fcd565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600483106130bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600080600080606085870312156130d757600080fd5b6130e085612d2a565b9350602085013567ffffffffffffffff80821682146130fe57600080fd5b9093506040860135908082111561311457600080fd5b5061312187828801612fcd565b95989497509550505050565b60006020828403121561313f57600080fd5b610fa082612d2a565b8015158114610b3f57600080fd5b6000806040838503121561316957600080fd5b61317283612d2a565b91506020830135612d8381613148565b6000806000806080858703121561319857600080fd5b6131a185612d2a565b93506131af60208601612d2a565b925060408501359150606085013567ffffffffffffffff8111156131d257600080fd5b8501601f810187136131e357600080fd5b6131f287823560208401612f0e565b91505092959194509250565b6000806040838503121561321157600080fd5b61321a83612d2a565b9150612ed660208401612d2a565b600181811c9082168061323c57607f821691505b602082108103613275577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108925761089261327b565b6000826132f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000835161330e818460208801612d8e565b835190830190613322818360208801612d8e565b01949350505050565b601f8211156108cc57600081815260208120601f850160051c810160208610156133525750805b601f850160051c820191505b81811015611c375782815560010161335e565b815167ffffffffffffffff81111561338b5761338b612edf565b61339f816133998454613228565b8461332b565b602080601f8311600181146133d457600084156133bc5750858301515b600019600386901b1c1916600185901b178555611c37565b600085815260208120601f198616915b82811015613403578886015182559484019460019091019084016133e4565b50858210156134215787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613469816017850160208801612d8e565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516134a6816028840160208801612d8e565b01602801949350505050565b6000602082840312156134c457600080fd5b8151610fa081613148565b600082516134e1818460208701612d8e565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808201808211156108925761089261327b565b60008161353c5761353c61327b565b506000190190565b818103818111156108925761089261327b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006001600160a01b038087168352808616602084015250836040830152608060608301526135b86080830184612db2565b9695505050505050565b6000602082840312156135d457600080fd5b8151610fa081612cdf56fea264697066735822122093cc3c19656da14ba945d57e08c78b4f2f4f74e9c2c088b6293f97da552ab57364736f6c634300081500331e4c11efbd6a865b1cba79eea33d1b33c1394d834190605ed6a14c71c480bf76d83ac62169e315c6fc3ecdb2c5b6ae75284053b2c2f2fb9fc715ba380283e94200000000000000000000000070c71b539bdcb5b59edd42a500fd95bdec96265000000000000000000000000032220f07dbcd18149f619f28cd09fd911cc0372d0000000000000000000000005e6210c459200cf57f9f621c36ff80102cdfb8980000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004e68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f636f6c6c656374696f6e2d6173736574732d7075626c69632f677261696c732f736561736f6e2d30352f706173732f000000000000000000000000000000000000