0x60806040526418727cda006013553480156200001a57600080fd5b506040516020806200239f83398101604081815291518282018352600982527f47657420546f6b656e000000000000000000000000000000000000000000000060208084019182528451808601909552600385527f4745540000000000000000000000000000000000000000000000000000000000908501528251919391601291620000aa9160059190620001e4565b508151620000c0906006906020850190620001e4565b506007805460ff191660ff929092169190911761010060a860020a0319166101003381029190911791829055604051600160a060020a0391909204169250600091507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600160a060020a03811615156200013d57600080fd5b600f8054600160a060020a031916600160a060020a03831617905561271060085562000193620001756401000000006200019d810204565b6008549060ff16600a0a64010000000062001b2f620001a782021704565b6008555062000286565b60075460ff165b90565b600080831515620001bc5760009150620001dd565b50828202828482811515620001cd57fe5b0414620001d957600080fd5b8091505b5092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200022757805160ff191683800117855562000257565b8280016001018555821562000257579182015b82811115620002575782518255916020019190600101906200023a565b506200026592915062000269565b5090565b620001a491905b8082111562000265576000815560010162000270565b61210980620002966000396000f3006080604052600436106101e25763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610247578063095bcdb6146102d15780631244e1b61461030c57806318160ddd146103375780631a42ce6e1461035e57806324954964146103735780632e1a7d4d14610388578063313ce567146103a25780633b6603fa146103b757806341d4a1ab146103cc5780634a3b68cc146103fd5780634c7a99011461041e57806352f1365c1461043f5780635576c37a146103b7578063585172e0146104575780635fb1e75d1461046c5780635fe8e7cc1461048157806370a08231146104e6578063711953ef14610507578063715018a61461052857806374a4f5ea1461053d57806378a1cff61461055257806383b4918b146105735780638da5cb5b1461058b5780638f32d59b146105a057806395d89b41146105b557806396772795146105ca578063a035b1fe146105df578063a168d873146105f4578063aeddbfbf1461030c578063d8806aa914610609578063ec8ac4d81461061e578063ed73721a14610632578063ed9772b614610659578063f2fde38b14610674578063f979fcf614610695578063fa7aaa6f146106b6578063fc96b182146106ce578063fe784eaa146106e3575b60008054600160a060020a0316331461024457601436141561023b576102386000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506106fb945050505050565b90505b61024481610702565b50005b34801561025357600080fd5b5061025c610892565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029657818101518382015260200161027e565b50505050905090810190601f1680156102c35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102dd57600080fd5b506102f8600160a060020a0360043516602435604435610929565b604080519115158252519081900360200190f35b34801561031857600080fd5b5061032161095c565b6040805160ff9092168252519081900360200190f35b34801561034357600080fd5b5061034c610961565b60408051918252519081900360200190f35b34801561036a57600080fd5b5061034c610967565b34801561037f57600080fd5b5061034c61096d565b34801561039457600080fd5b506103a0600435610976565b005b3480156103ae57600080fd5b50610321610a1e565b3480156103c357600080fd5b50610321610a27565b3480156103d857600080fd5b506103e1610a2c565b60408051600160a060020a039092168252519081900360200190f35b34801561040957600080fd5b506103e1600160a060020a0360043516610a3b565b34801561042a57600080fd5b5061034c600160a060020a0360043516610a56565b34801561044b57600080fd5b506103a0600435610a68565b34801561046357600080fd5b5061034c610b09565b34801561047857600080fd5b50610321610b16565b34801561048d57600080fd5b50610496610b1b565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104d25781810151838201526020016104ba565b505050509050019250505060405180910390f35b3480156104f257600080fd5b5061034c600160a060020a0360043516610b7c565b34801561051357600080fd5b506103a0600160a060020a0360043516610b97565b34801561053457600080fd5b506103a0610bd9565b34801561054957600080fd5b5061034c610c49565b34801561055e57600080fd5b5061034c600160a060020a0360043516610c4f565b34801561057f57600080fd5b506103a0600435610c61565b34801561059757600080fd5b506103e1610d23565b3480156105ac57600080fd5b506102f8610d37565b3480156105c157600080fd5b5061025c610d4d565b3480156105d657600080fd5b5061034c610dae565b3480156105eb57600080fd5b5061034c610db4565b34801561060057600080fd5b506103e1610dd4565b34801561061557600080fd5b50610321610de3565b6103a0600160a060020a0360043516610702565b34801561063e57600080fd5b506102f8600160a060020a0360043516602435604435610de8565b34801561066557600080fd5b506103a0600435602435610e94565b34801561068057600080fd5b506103a0600160a060020a0360043516610f97565b3480156106a157600080fd5b5061034c600160a060020a0360043516610fb6565b3480156106c257600080fd5b506103a0600435610fc8565b3480156106da57600080fd5b506103216112eb565b3480156106ef57600080fd5b506103a06004356112f0565b6014015190565b343360008061071183856114e9565b9094509150610726348563ffffffff61151a16565b90506107328382611538565b600160a060020a03831660009081526004602052604090205460ff1615156107f357600160a060020a0385161580159061077e575082600160a060020a031685600160a060020a031614155b156107bf57600160a060020a038381166000908152600c60205260409020805473ffffffffffffffffffffffffffffffffffffffff19169187169190911790555b6107cb83826001611680565b600160a060020a0383166000908152600460205260409020805460ff191660011790556107ff565b6107ff83826000611680565b600084111561084057604051600160a060020a0384169085156108fc029086906000818181858888f1935050505015801561083e573d6000803e3d6000fd5b505b604080518281526020810184905242818301529051600160a060020a038516917fbeae048c6d270d9469f86cf6e8fedda3c60ad770f16c24c9fc131c8e9a09101d919081900360600190a25050505050565b60058054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561091e5780601f106108f35761010080835404028352916020019161091e565b820191906000526020600020905b81548152906001019060200180831161090157829003601f168201915b505050505090505b90565b60008054600160a060020a0316331461094757610947338484611852565b6109523385856118de565b5060019392505050565b600581565b60025490565b60085481565b6402540be40081565b6000811161098357600080fd5b336000908152600b60205260409020546109a3908263ffffffff61151a16565b336000818152600b6020526040808220939093559151909183156108fc02918491818181858888f193505050501580156109e1573d6000803e3d6000fd5b5060408051828152426020820152815133927ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568928290030190a250565b60075460ff1690565b600a81565b600f54600160a060020a031681565b600c60205260009081526040902054600160a060020a031681565b600b6020526000908152604090205481565b600054600160a060020a03163314610af0576040805160e560020a62461bcd02815260206004820152602360248201527f5468652073656e646572206d75737420626520612067616d6520636f6e74726160448201527f63742e0000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600a54610b03908263ffffffff611af316565b600a5550565b6801158e460913d0000081565b600381565b6060600380548060200260200160405190810160405280929190818152602001828054801561091e57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610b55575050505050905090565b600160a060020a031660009081526001602052604090205490565b610b9f610d37565b1515610baa57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b610be1610d37565b1515610bec57600080fd5b6007546040516000916101009004600160a060020a0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36007805474ffffffffffffffffffffffffffffffffffffffff0019169055565b60095481565b600e6020526000908152604090205481565b336000908152600b6020526040812054610c81908363ffffffff61151a16565b336000818152600b6020526040902091909155610c9e90836114e9565b90925090506000821115610cdd57336000908152600b6020526040902054610ccc908363ffffffff611af316565b336000908152600b60205260409020555b60408051838152602081018390524281830152905133917f5a1f3c64a894cbcee558ea14f59dd807692703df44b42f0c036588f149c8f7ba919081900360600190a25050565b6007546101009004600160a060020a031690565b6007546101009004600160a060020a0316331490565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561091e5780601f106108f35761010080835404028352916020019161091e565b600a5481565b601354600090610dcf9064012a05f20063ffffffff611af316565b905090565b600054600160a060020a031681565b600781565b60008054600160a060020a03163314610e71576040805160e560020a62461bcd02815260206004820152602360248201527f5468652073656e646572206d75737420626520612067616d6520636f6e74726160448201527f63742e0000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610e7c848484611852565b600054610952908590600160a060020a0316856118de565b336000610ecc610ea2610a1e565b60ff16610ec0610eb0610a1e565b879060ff1663ffffffff611b0c16565b9063ffffffff611b2f16565b9350610ed9828585611b5d565b5050610f01610efc610ee9610a1e565b869060ff16600a0a63ffffffff611b0c16565b611b7d565b9050610f0c81611bf4565b604051909150600160a060020a0383169082156108fc029083906000818181858888f19350505050158015610f45573d6000803e3d6000fd5b50604080518281526020810186905242818301529051600160a060020a038416917f846c37eef631e0943682d87352ec117c20008eb7f425c9b85ac011a6d4774cc0919081900360600190a250505050565b610f9f610d37565b1515610faa57600080fd5b610fb381611c28565b50565b600d6020526000908152604090205481565b600080600080610fd6610d37565b1515610fe157600080fd5b6010541515610ff757600954601155600a546012555b601054600354869161100f919063ffffffff61151a16565b10156110315760105460035461102a9163ffffffff61151a16565b9350611035565b8493505b5060009150819050805b838110156112d257611075600360105481548110151561105b57fe5b600091825260209091200154600160a060020a0316610b7c565b92506801158e460913d0000083106112c057600060115411156111c2576110bd61109d610961565b6011546110b190869063ffffffff611b2f16565b9063ffffffff611b0c16565b6009549092506110d3908363ffffffff61151a16565b6009556010546003805490919081106110e857fe5b600091825260209182902001546040805185815242938101939093528051600160a060020a03909216927fef1e976166db53b30a787470328d9fa6af1e9f48d79ac68feffd5aee572907e5929081900390910190a261118782600b6000600360105481548110151561115657fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020549063ffffffff611af316565b600b6000600360105481548110151561119c57fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020555b600060125411156112c0576111ec6111d8610961565b6012546110b190869063ffffffff611b2f16565b600a54909250611202908363ffffffff61151a16565b600a5560105460038054909190811061121757fe5b600091825260209182902001546040805185815242938101939093528051600160a060020a03909216927f70a7d4f599a7990c82794b8874373b26a9261eb39f70a055cde8924e454d6948929081900390910190a261128582600b6000600360105481548110151561115657fe5b600b6000600360105481548110151561129a57fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020555b6010805460019081019091550161103f565b60035460105414156112e45760006010555b5050505050565b600281565b600061130382600a63ffffffff611b0c16565b600854909150611319908263ffffffff61151a16565b81111561132557600080fd5b600f54604080517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015290518492600160a060020a0316916370a082319160248083019260209291908290030181600087803b15801561138a57600080fd5b505af115801561139e573d6000803e3d6000fd5b505050506040513d60208110156113b457600080fd5b5051101561140c576040805160e560020a62461bcd02815260206004820152601860248201527f4e6f7420656e6f75676820626f6e757320746f6b656e732e0000000000000000604482015290519081900360640190fd5b600f54604080517fa114398d000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a039092169163a114398d9160448082019260009290919082900301818387803b15801561147857600080fd5b505af115801561148c573d6000803e3d6000fd5b50506008546114a4925090508263ffffffff61151a16565b6008556114ce6114bf826402540be40063ffffffff611b2f16565b6013549063ffffffff611af316565b6013556114db3382611cb1565b6114e53382611d4a565b5050565b6000806000806114f885611df6565b915091506115068683611cb1565b6115108683611d4a565b9590945092505050565b6000808383111561152a57600080fd5b5050808203805b5092915050565b600160a060020a0382166000908152600e6020526040902054620151804291909103111561157a57600160a060020a0382166000908152600d60205260408120555b600160a060020a0382166000908152600d6020526040902054674563918244f40000906115ad908363ffffffff611af316565b1115611629576040805160e560020a62461bcd02815260206004820152602760248201527f496e766573746d656e74206c696d697420657863656564656420666f7220323460448201527f20686f7572732e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0382166000908152600d6020526040902054611652908263ffffffff611af316565b600160a060020a039092166000908152600d6020908152604080832094909455600e90529190912042905550565b600160a060020a038084166000908152600c60205260408120549091169080808315611827576116bc60646110b188600363ffffffff611b2f16565b604080518281524260208201528151929450600160a060020a038716927f71bbadad6d2fcd4e7dd188111dc70697cc2f758af0a6b586ce10be9b1a6f9d1d929181900390910190a2600160a060020a0384166000908152600b602052604090205461172d908363ffffffff611af316565b600160a060020a0385166000908152600b602052604090205584156118095761176260646110b188600263ffffffff611b2f16565b604080518281524260208201528151929350600160a060020a038a16927f71bbadad6d2fcd4e7dd188111dc70697cc2f758af0a6b586ce10be9b1a6f9d1d929181900390910190a2600160a060020a0387166000908152600b60205260409020546117d3908263ffffffff611af316565b600160a060020a0388166000908152600b602052604090205561180260646110b188600563ffffffff611b2f16565b9250611822565b61181f60646110b188600763ffffffff611b2f16565b92505b611840565b61183d60646110b188600a63ffffffff611b2f16565b92505b61184983611eee565b50505050505050565b6801158e460913d0000061186584610b7c565b1015801561189357506801158e460913d000006118918361188586610b7c565b9063ffffffff61151a16565b105b156118d95782600160a060020a03166003828154811015156118b157fe5b600091825260209091200154600160a060020a0316146118d057600080fd5b6118d981611f07565b505050565b6000600160a060020a03831615156118f557600080fd5b600054600160a060020a038481169116148015906119215750600054600160a060020a03858116911614155b156119565761193782606463ffffffff611b0c16565b90506119438482611fc0565b611953828263ffffffff61151a16565b91505b600160a060020a03841660009081526001602052604090205461197f908363ffffffff61151a16565b600160a060020a0380861660009081526001602052604081209290925590548482169116148015906119d15750600160a060020a0383166000908152600160205260409020546801158e460913d00000115b8015611a0f5750600160a060020a0383166000908152600160205260409020546801158e460913d0000090611a0c908463ffffffff611af316565b10155b15611a6d57600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b600160a060020a038316600090815260016020526040902054611a96908363ffffffff611af316565b600160a060020a0380851660008181526001602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505050565b600082820183811015611b0557600080fd5b9392505050565b600080808311611b1b57600080fd5b8284811515611b2657fe5b04949350505050565b600080831515611b425760009150611531565b50828202828482811515611b5257fe5b0414611b0557600080fd5b600080611b6b858585611852565b611b758585611fc0565b935093915050565b600080808311611b8c57600080fd5b611bbe611bab633b9aca00610ec06002870a600563ffffffff611b2f16565b601354611885908663ffffffff611b2f16565b9050611be7611bd8846402540be40063ffffffff611b2f16565b6013549063ffffffff61151a16565b6013559050805b50919050565b600080611c0d60646110b185600563ffffffff611b2f16565b9050611c1881611eee565b611b05838263ffffffff61151a16565b600160a060020a0381161515611c3d57600080fd5b600754604051600160a060020a0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360078054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b6801158e460913d00000611cc483610b7c565b108015611cf257506801158e460913d00000611cef82611ce385610b7c565b9063ffffffff611af316565b10155b156114e557600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805473ffffffffffffffffffffffffffffffffffffffff1916331790555050565b600160a060020a0382161515611d5f57600080fd5b600254611d72908263ffffffff611af316565b600255600160a060020a038216600090815260016020526040902054611d9e908263ffffffff611af316565b600160a060020a03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b601354600090819083828080611e2f611e1f85610ec064012a05f200600463ffffffff611b2f16565b6002870a9063ffffffff611af316565b9250611e57611e4a64012a05f200600263ffffffff611b2f16565b6110b1876118858761206b565b915060008211611e6657600080fd5b611ea6611e99611e8184601354611b2f90919063ffffffff16565b611ce364012a05f2006002870a63ffffffff611b2f16565b899063ffffffff61151a16565b9050611ec06114bf836402540be40063ffffffff611b2f16565b601355611ee1611ece610a1e565b839060ff16600a0a63ffffffff611b2f16565b9890975095505050505050565b600954611f01908263ffffffff611af316565b60095550565b600380546000198101908110611f1957fe5b60009182526020909120015460038054600160a060020a039092169183908110611f3f57fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055600380546000198101908110611f8757fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560038054906114e59060001983016120a0565b600160a060020a0382161515611fd557600080fd5b600254611fe8908263ffffffff61151a16565b600255600160a060020a038216600090815260016020526040902054612014908263ffffffff61151a16565b600160a060020a0383166000818152600160209081526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b80600260018201045b81811015611bee57809150600281828581151561208d57fe5b040181151561209857fe5b049050612074565b8154818355818111156118d9576000838152602090206118d991810190830161092691905b808211156120d957600081556001016120c5565b50905600a165627a7a72305820fef5b507a7be15f3f4539ff4c2b85ecae4dc46a12b912fee7fb76abd943e40ff002900000000000000000000000031c643c416368c988f2b8894684e419e260b174a