0x60806040526418727cda006014553480156200001a57600080fd5b50604051602080620025ad83398101604081815291518282018352600982527f47657420546f6b656e000000000000000000000000000000000000000000000060208084019182528451808601909552600385527f4745540000000000000000000000000000000000000000000000000000000000908501528251919391601291620000aa9160069190620001e4565b508151620000c0906007906020850190620001e4565b506008805460ff191660ff929092169190911761010060a860020a0319166101003381029190911791829055604051600160a060020a0391909204169250600091507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600160a060020a03811615156200013d57600080fd5b60108054600160a060020a031916600160a060020a03831617905561271060095562000193620001756401000000006200019d810204565b6009549060ff16600a0a64010000000062001da9620001a782021704565b6009555062000286565b60085460ff165b90565b600080831515620001bc5760009150620001dd565b50828202828482811515620001cd57fe5b0414620001d957600080fd5b8091505b5092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200022757805160ff191683800117855562000257565b8280016001018555821562000257579182015b82811115620002575782518255916020019190600101906200023a565b506200026592915062000269565b5090565b620001a491905b8082111562000265576000815560010162000270565b61231780620002966000396000f3006080604052600436106102195763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610280578063095ea7b31461030a5780631244e1b61461034257806318160ddd1461036d5780631a42ce6e1461039457806323b872dd146103a957806324954964146103d35780632e1a7d4d146103e8578063313ce5671461040257806339509351146104175780633b6603fa1461043b57806341d4a1ab146104505780634a3b68cc146104815780634c7a9901146104a257806352f1365c146104c35780635576c37a1461043b578063585172e0146104db5780635fb1e75d146104f05780635fe8e7cc146105055780636c11bcd31461056a57806370a0823114610582578063711953ef146105a3578063715018a6146105c457806374a4f5ea146105d957806378a1cff6146105ee57806383b4918b1461060f5780638da5cb5b146106275780638f32d59b1461063c57806395d89b41146106515780639677279514610666578063a035b1fe1461067b578063a168d87314610690578063a457c2d7146106a5578063a9059cbb146106c9578063aeddbfbf14610342578063beb03eeb146106ed578063d8806aa914610711578063dd62ed3e14610726578063ec8ac4d81461074d578063f2fde38b14610761578063f979fcf614610782578063fa7aaa6f146107a3578063fc96b182146107bb578063fe784eaa146107d0575b600354600090600160a060020a0316331461027d576014361415610274576102716000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506107e8945050505050565b90505b61027d816107ef565b50005b34801561028c57600080fd5b506102956109f0565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102cf5781810151838201526020016102b7565b50505050905090810190601f1680156102fc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031657600080fd5b5061032e600160a060020a0360043516602435610a87565b604080519115158252519081900360200190f35b34801561034e57600080fd5b50610357610b05565b6040805160ff9092168252519081900360200190f35b34801561037957600080fd5b50610382610b0a565b60408051918252519081900360200190f35b3480156103a057600080fd5b50610382610b10565b3480156103b557600080fd5b5061032e600160a060020a0360043581169060243516604435610b16565b3480156103df57600080fd5b50610382610bdf565b3480156103f457600080fd5b50610400600435610be8565b005b34801561040e57600080fd5b50610357610c90565b34801561042357600080fd5b5061032e600160a060020a0360043516602435610c99565b34801561044757600080fd5b50610357610d49565b34801561045c57600080fd5b50610465610d4e565b60408051600160a060020a039092168252519081900360200190f35b34801561048d57600080fd5b50610465600160a060020a0360043516610d5d565b3480156104ae57600080fd5b50610382600160a060020a0360043516610d78565b3480156104cf57600080fd5b50610400600435610d8a565b3480156104e757600080fd5b50610382610e2b565b3480156104fc57600080fd5b50610357610e38565b34801561051157600080fd5b5061051a610e3d565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561055657818101518382015260200161053e565b505050509050019250505060405180910390f35b34801561057657600080fd5b50610400600435610e9e565b34801561058e57600080fd5b50610382600160a060020a0360043516610f66565b3480156105af57600080fd5b50610400600160a060020a0360043516610f81565b3480156105d057600080fd5b50610400610fc3565b3480156105e557600080fd5b50610382611033565b3480156105fa57600080fd5b50610382600160a060020a0360043516611039565b34801561061b57600080fd5b5061040060043561104b565b34801561063357600080fd5b5061046561110d565b34801561064857600080fd5b5061032e611121565b34801561065d57600080fd5b50610295611137565b34801561067257600080fd5b50610382611198565b34801561068757600080fd5b5061038261119e565b34801561069c57600080fd5b506104656111be565b3480156106b157600080fd5b5061032e600160a060020a03600435166024356111cd565b3480156106d557600080fd5b5061032e600160a060020a0360043516602435611218565b3480156106f957600080fd5b5061032e600160a060020a036004351660243561122e565b34801561071d57600080fd5b506103576112d1565b34801561073257600080fd5b50610382600160a060020a03600435811690602435166112d6565b610400600160a060020a03600435166107ef565b34801561076d57600080fd5b50610400600160a060020a0360043516611301565b34801561078e57600080fd5b50610382600160a060020a0360043516611320565b3480156107af57600080fd5b50610400600435611332565b3480156107c757600080fd5b50610357611665565b3480156107dc57600080fd5b5061040060043561166a565b6014015190565b34336000806107fe8385611859565b9094509150610813348563ffffffff61188016565b905061081f838261189e565b600160a060020a03831660009081526005602052604090205460ff1615156108e057600160a060020a0385161580159061086b575082600160a060020a031685600160a060020a031614155b156108ac57600160a060020a038381166000908152600d60205260409020805473ffffffffffffffffffffffffffffffffffffffff19169187169190911790555b6108b8838260016119e6565b600160a060020a0383166000908152600560205260409020805460ff191660011790556108ec565b6108ec838260006119e6565b600084111561092d57604051600160a060020a0384169085156108fc029086906000818181858888f1935050505015801561092b573d6000803e3d6000fd5b505b6801158e460913d0000061094084610f66565b1061099e57600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b604080518281526020810184905242818301529051600160a060020a038516917fbeae048c6d270d9469f86cf6e8fedda3c60ad770f16c24c9fc131c8e9a09101d919081900360600190a25050505050565b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a7c5780601f10610a5157610100808354040283529160200191610a7c565b820191906000526020600020905b815481529060010190602001808311610a5f57829003601f168201915b505050505090505b90565b6000600160a060020a0383161515610a9e57600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600581565b60025490565b60095481565b600160a060020a0383166000908152600160209081526040808320338452909152812054610b4a908363ffffffff61188016565b600160a060020a0385166000908152600160209081526040808320338452909152902055610b79848484611bb8565b600160a060020a0384166000818152600160209081526040808320338085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6402540be40081565b60008111610bf557600080fd5b336000908152600c6020526040902054610c15908263ffffffff61188016565b336000818152600c6020526040808220939093559151909183156108fc02918491818181858888f19350505050158015610c53573d6000803e3d6000fd5b5060408051828152426020820152815133927ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568928290030190a250565b60085460ff1690565b6000600160a060020a0383161515610cb057600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610ce4908363ffffffff611d9016565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600a81565b601054600160a060020a031681565b600d60205260009081526040902054600160a060020a031681565b600c6020526000908152604090205481565b600354600160a060020a03163314610e12576040805160e560020a62461bcd02815260206004820152602360248201527f5468652073656e646572206d75737420626520612067616d6520636f6e74726160448201527f63742e0000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600b54610e25908263ffffffff611d9016565b600b5550565b6801158e460913d0000081565b600381565b60606004805480602002602001604051908101604052809291908181526020018280548015610a7c57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610e77575050505050905090565b336000610ec882610ec3610eb0610c90565b869060ff16600a0a63ffffffff611da916565b611dd7565b610ed183611e80565b9050610edc81611f0f565b604051909150600160a060020a0383169082156108fc029083906000818181858888f19350505050158015610f15573d6000803e3d6000fd5b50604080518281526020810185905242818301529051600160a060020a038416917f846c37eef631e0943682d87352ec117c20008eb7f425c9b85ac011a6d4774cc0919081900360600190a2505050565b600160a060020a031660009081526020819052604090205490565b610f89611121565b1515610f9457600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b610fcb611121565b1515610fd657600080fd5b6008546040516000916101009004600160a060020a0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36008805474ffffffffffffffffffffffffffffffffffffffff0019169055565b600a5481565b600f6020526000908152604090205481565b336000908152600c602052604081205461106b908363ffffffff61188016565b336000818152600c60205260409020919091556110889083611859565b909250905060008211156110c757336000908152600c60205260409020546110b6908363ffffffff611d9016565b336000908152600c60205260409020555b60408051838152602081018390524281830152905133917f5a1f3c64a894cbcee558ea14f59dd807692703df44b42f0c036588f149c8f7ba919081900360600190a25050565b6008546101009004600160a060020a031690565b6008546101009004600160a060020a0316331490565b60078054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a7c5780601f10610a5157610100808354040283529160200191610a7c565b600b5481565b6014546000906111b99064012a05f20063ffffffff611d9016565b905090565b600354600160a060020a031681565b6000600160a060020a03831615156111e457600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610ce4908363ffffffff61188016565b6000611225338484611bb8565b50600192915050565b600354600090600160a060020a031633146112b9576040805160e560020a62461bcd02815260206004820152602360248201527f5468652073656e646572206d75737420626520612067616d6520636f6e74726160448201527f63742e0000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600354611225908490600160a060020a031684611bb8565b600781565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b611309611121565b151561131457600080fd5b61131d81611f43565b50565b600e6020526000908152604090205481565b600080600080611340611121565b151561134b57600080fd5b601154151561136157600a54601255600b546013555b6011546004548691611379919063ffffffff61188016565b101561139b576011546004546113949163ffffffff61188016565b935061139f565b8493505b5060009150819050805b8381101561164c576113df60046011548154811015156113c557fe5b600091825260209091200154600160a060020a0316610f66565b92506801158e460913d00000831061162f576000601254111561152c57611427611407610b0a565b60125461141b90869063ffffffff611da916565b9063ffffffff611fcc16565b600a5490925061143d908363ffffffff61188016565b600a5560115460048054909190811061145257fe5b600091825260209182902001546040805185815242938101939093528051600160a060020a03909216927fef1e976166db53b30a787470328d9fa6af1e9f48d79ac68feffd5aee572907e5929081900390910190a26114f182600c600060046011548154811015156114c057fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020549063ffffffff611d9016565b600c6000600460115481548110151561150657fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020555b6000601354111561162a57611556611542610b0a565b60135461141b90869063ffffffff611da916565b600b5490925061156c908363ffffffff61188016565b600b5560115460048054909190811061158157fe5b600091825260209182902001546040805185815242938101939093528051600160a060020a03909216927f70a7d4f599a7990c82794b8874373b26a9261eb39f70a055cde8924e454d6948929081900390910190a26115ef82600c600060046011548154811015156114c057fe5b600c6000600460115481548110151561160457fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020555b61163a565b61163a601154611fef565b601180546001908101909155016113a9565b600454601154141561165e5760006011555b5050505050565b600281565b600061167d82600a63ffffffff611fcc16565b600954909150611693908263ffffffff61188016565b81111561169f57600080fd5b601054604080517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015290518492600160a060020a0316916370a082319160248083019260209291908290030181600087803b15801561170457600080fd5b505af1158015611718573d6000803e3d6000fd5b505050506040513d602081101561172e57600080fd5b50511015611786576040805160e560020a62461bcd02815260206004820152601860248201527f4e6f7420656e6f75676820626f6e757320746f6b656e732e0000000000000000604482015290519081900360640190fd5b601054604080517fa114398d000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a039092169163a114398d9160448082019260009290919082900301818387803b1580156117f257600080fd5b505af1158015611806573d6000803e3d6000fd5b505060095461181e925090508263ffffffff61188016565b600955611848611839826402540be40063ffffffff611da916565b6014549063ffffffff611d9016565b60145561185533826120a8565b5050565b60008060008061186885612152565b9150915061187686836120a8565b9590945092505050565b6000808383111561189057600080fd5b5050808203805b5092915050565b600160a060020a0382166000908152600f602052604090205462015180429190910311156118e057600160a060020a0382166000908152600e60205260408120555b600160a060020a0382166000908152600e6020526040902054674563918244f4000090611913908363ffffffff611d9016565b111561198f576040805160e560020a62461bcd02815260206004820152602760248201527f496e766573746d656e74206c696d697420657863656564656420666f7220323460448201527f20686f7572732e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0382166000908152600e60205260409020546119b8908263ffffffff611d9016565b600160a060020a039092166000908152600e6020908152604080832094909455600f90529190912042905550565b600160a060020a038084166000908152600d60205260408120549091169080808315611b8d57611a22606461141b88600363ffffffff611da916565b604080518281524260208201528151929450600160a060020a038716927f71bbadad6d2fcd4e7dd188111dc70697cc2f758af0a6b586ce10be9b1a6f9d1d929181900390910190a2600160a060020a0384166000908152600c6020526040902054611a93908363ffffffff611d9016565b600160a060020a0385166000908152600c60205260409020558415611b6f57611ac8606461141b88600263ffffffff611da916565b604080518281524260208201528151929350600160a060020a038a16927f71bbadad6d2fcd4e7dd188111dc70697cc2f758af0a6b586ce10be9b1a6f9d1d929181900390910190a2600160a060020a0387166000908152600c6020526040902054611b39908263ffffffff611d9016565b600160a060020a0388166000908152600c6020526040902055611b68606461141b88600563ffffffff611da916565b9250611b88565b611b85606461141b88600763ffffffff611da916565b92505b611ba6565b611ba3606461141b88600a63ffffffff611da916565b92505b611baf83612256565b50505050505050565b6000600160a060020a0383161515611bcf57600080fd5b600354600160a060020a03848116911614801590611bfb5750600354600160a060020a03858116911614155b15611c3057611c1182606463ffffffff611fcc16565b9050611c1d8482611dd7565b611c2d828263ffffffff61188016565b91505b600354600160a060020a03848116911614801590611c645750600160a060020a038316600090815260208190526040902054155b8015611c7957506801158e460913d000008210155b15611cd757600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b600160a060020a038416600090815260208190526040902054611d00908363ffffffff61188016565b600160a060020a038086166000908152602081905260408082209390935590851681522054611d35908363ffffffff611d9016565b600160a060020a038085166000818152602081815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505050565b600082820183811015611da257600080fd5b9392505050565b600080831515611dbc5760009150611897565b50828202828482811515611dcc57fe5b0414611da257600080fd5b600160a060020a0382161515611dec57600080fd5b600254611dff908263ffffffff61188016565b600255600160a060020a038216600090815260208190526040902054611e2b908263ffffffff61188016565b600160a060020a038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b600080808311611e8f57600080fd5b611ed9611eba633b9aca00611eae6002870a600563ffffffff611da916565b9063ffffffff611da916565b601454611ecd908663ffffffff611da916565b9063ffffffff61188016565b9050611f02611ef3846402540be40063ffffffff611da916565b6014549063ffffffff61188016565b6014559050805b50919050565b600080611f28606461141b85600563ffffffff611da916565b9050611f3381612256565b611da2838263ffffffff61188016565b600160a060020a0381161515611f5857600080fd5b600854604051600160a060020a0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360088054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b600080808311611fdb57600080fd5b8284811515611fe657fe5b04949350505050565b60048054600019810190811061200157fe5b60009182526020909120015460048054600160a060020a03909216918390811061202757fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905560048054600019810190811061206f57fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560048054906118559060001983016122a4565b600160a060020a03821615156120bd57600080fd5b6002546120d0908263ffffffff611d9016565b600255600160a060020a0382166000908152602081905260409020546120fc908263ffffffff611d9016565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60145460009081908382808061218b61217b85611eae64012a05f200600463ffffffff611da916565b6002870a9063ffffffff611d9016565b92506121b36121a664012a05f200600263ffffffff611da916565b61141b87611ecd8761226f565b9150600082116121c257600080fd5b61220e6122016121dd84601454611da990919063ffffffff16565b6121f564012a05f2006002870a63ffffffff611da916565b9063ffffffff611d9016565b899063ffffffff61188016565b9050612228611839836402540be40063ffffffff611da916565b601455612249612236610c90565b839060ff16600a0a63ffffffff611da916565b9890975095505050505050565b600a54612269908263ffffffff611d9016565b600a5550565b80600260018201045b81811015611f0957809150600281828581151561229157fe5b040181151561229c57fe5b049050612278565b8154818355818111156122c8576000838152602090206122c89181019083016122cd565b505050565b610a8491905b808211156122e757600081556001016122d3565b50905600a165627a7a723058204b08bbae90c9c696bc2ffeaee73ca2358b71bd9eda2431aeaa5b9a0fd8d98181002900000000000000000000000031c643c416368c988f2b8894684e419e260b174a