60806040526000805460ff191690553480156200001b57600080fd5b5060008054610100330261010060a860020a03199182168117909116179055600180548101906200004d908262000054565b50620000a4565b8154818355818111156200007b576000838152602090206200007b91810190830162000080565b505050565b620000a191905b808211156200009d576000815560010162000087565b5090565b90565b611d9b80620000b46000396000f3006080604052600436106101a05763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a781146101a557806306fdde03146101db578063081812fc14610265578063095ea7b31461029957806318160ddd146102bf57806318ad052b146102e657806323b872dd1461030a5780632f745c591461033457806330efb8d3146103585780633a562b781461036d57806342842e0e146103de578063441deede146104085780634f6ccce7146104295780636352211e1461044157806364b094021461045957806367d0661d1461047a578063704b6c021461048f57806370a08231146104b057806381dedc92146104d157806395d89b41146104e95780639b263eca146104fe578063a22cb46514610513578063ac4ba3ea14610539578063aea1384414610554578063b187bd2614610578578063b88d4fde1461058d578063bfae2f0e146105c6578063c4fe2675146105db578063c87b56dd146105f3578063cae9ca511461060b578063cce0244d1461063c578063d63d4af014610662578063e985e9c51461071c575b600080fd5b3480156101b157600080fd5b506101c7600160e060020a031960043516610743565b604080519115158252519081900360200190f35b3480156101e757600080fd5b506101f06107f8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022a578181015183820152602001610212565b50505050905090810190601f1680156102575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027157600080fd5b5061027d600435610830565b60408051600160a060020a039092168252519081900360200190f35b3480156102a557600080fd5b506102bd600160a060020a0360043516602435610927565b005b3480156102cb57600080fd5b506102d4610a18565b60408051918252519081900360200190f35b3480156102f257600080fd5b506102bd600435600160a060020a0360243516610a22565b34801561031657600080fd5b506102bd600160a060020a0360043581169060243516604435610ad2565b34801561034057600080fd5b506102d4600160a060020a0360043516602435610dc5565b34801561036457600080fd5b506102bd610e37565b34801561037957600080fd5b5061038e600160a060020a0360043516610e70565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103ca5781810151838201526020016103b2565b505050509050019250505060405180910390f35b3480156103ea57600080fd5b506102bd600160a060020a0360043581169060243516604435610ef1565b34801561041457600080fd5b506101c7600160a060020a0360043516610f1d565b34801561043557600080fd5b506102d4600435610f59565b34801561044d57600080fd5b5061027d600435610f6e565b34801561046557600080fd5b506102bd600160a060020a0360043516610f89565b34801561048657600080fd5b506102bd610fd4565b34801561049b57600080fd5b506102bd600160a060020a036004351661100f565b3480156104bc57600080fd5b506102d4600160a060020a03600435166110b3565b3480156104dd57600080fd5b506102d4600435611131565b3480156104f557600080fd5b506101f0611150565b34801561050a57600080fd5b5061027d611187565b34801561051f57600080fd5b506102bd600160a060020a03600435166024351515611196565b34801561054557600080fd5b506102bd600435602435611214565b34801561056057600080fd5b506102bd600435600160a060020a0360243516611359565b34801561058457600080fd5b506101c76113ce565b34801561059957600080fd5b506102bd600160a060020a03600480358216916024803590911691604435916064359081019101356113d7565b3480156105d257600080fd5b5061027d61142a565b3480156105e757600080fd5b506102d460043561143e565b3480156105ff57600080fd5b506101f0600435611475565b34801561061757600080fd5b506101c760048035600160a060020a0316906024803591604435918201910135611593565b34801561064857600080fd5b506102bd600160a060020a0360043516602435151561166e565b34801561066e57600080fd5b50610683600160a060020a03600435166116b5565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106c75781810151838201526020016106af565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156107065781810151838201526020016106ee565b5050505090500194505050505060405180910390f35b34801561072857600080fd5b506101c7600160a060020a03600435811690602435166117c7565b60007f01ffc9a700000000000000000000000000000000000000000000000000000000600160e060020a0319831614806107a657507f80ac58cd00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b806107da57507f8153916a00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b80156107f05750600160e060020a031980831614155b90505b919050565b60408051808201909152601581527f546f6b656e205479636f6f6e204d616e6167657273000000000000000000000060208201525b90565b6000816001811015801561084657506001548111155b151561089c576040805160e560020a62461bcd02815260206004820152601460248201527f546f6b656e4964206f7574206f662072616e6765000000000000000000000000604482015290519081900360640190fd5b600081815260026020526040902054600160a060020a0316151561090a576040805160e560020a62461bcd02815260206004820152601360248201527f546f6b656e2068617665206e6f206f776e657200000000000000000000000000604482015290519081900360640190fd5b5050600090815260056020526040902054600160a060020a031690565b6000805460ff161561093857600080fd5b50600081815260026020526040902054600160a060020a031680151561095d57600080fd5b33600160a060020a03821614806109975750600160a060020a038116600090815260066020908152604080832033845290915290205460ff165b15156109a257600080fd5b600082815260056020908152604091829020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03878116918217909255835186815293519093918516927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a3505050565b6001546000190190565b6000805460ff1615610a3357600080fd5b3360009081526007602052604090205460ff161515610a5157600080fd5b60018310158015610a6457506001548311155b1515610a6f57600080fd5b50600082815260026020526040902054600160a060020a0316801515610a9457600080fd5b600160a060020a0382161515610aa957600080fd5b600160a060020a038181169083161415610ac257600080fd5b610acd8183856117f5565b505050565b6000805460ff1615610ae357600080fd5b8160018110158015610af757506001548111155b1515610b4d576040805160e560020a62461bcd02815260206004820152601460248201527f546f6b656e4964206f7574206f662072616e6765000000000000000000000000604482015290519081900360640190fd5b600081815260026020526040902054600160a060020a03161515610bbb576040805160e560020a62461bcd02815260206004820152601360248201527f546f6b656e2068617665206e6f206f776e657200000000000000000000000000604482015290519081900360640190fd5b6000838152600260205260409020548390600160a060020a031633811480610bf95750600082815260056020526040902054600160a060020a031633145b80610c275750600160a060020a038116600090815260066020908152604080832033845290915290205460ff165b1515610c7d576040805160e560020a62461bcd02815260206004820152601060248201527f43616e206e6f74207472616e7366657200000000000000000000000000000000604482015290519081900360640190fd5b600085815260026020526040902054600160a060020a03169350831515610cee576040805160e560020a62461bcd02815260206004820152600a60248201527f4f776e6572206973203000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0386161515610d4e576040805160e560020a62461bcd02815260206004820152601c60248201527f5472616e73666572207461726765742061646472657373206973203000000000604482015290519081900360640190fd5b600160a060020a0384811690881614610db1576040805160e560020a62461bcd02815260206004820152601060248201527f5472616e7366657220746f2073656c6600000000000000000000000000000000604482015290519081900360640190fd5b610dbc8787876117f5565b50505050505050565b6000600160a060020a0383161515610ddc57600080fd5b600160a060020a0383166000908152600360205260409020548210610e0057600080fd5b600160a060020a0383166000908152600360205260409020805483908110610e2457fe5b9060005260206000200154905092915050565b6000546101009004600160a060020a03163314610e5357600080fd5b60005460ff161515610e6457600080fd5b6000805460ff19169055565b6060600160a060020a0382161515610e8757600080fd5b600160a060020a03821660009081526003602090815260409182902080548351818402810184019094528084529091830182828015610ee557602002820191906000526020600020905b815481526020019060010190808311610ed1575b50505050509050919050565b60005460ff1615610f0157600080fd5b610acd83838360206040519081016040528060008152506119d3565b600080546101009004600160a060020a03163314610f3a57600080fd5b50600160a060020a031660009081526007602052604090205460ff1690565b6001546000908210610f6a57600080fd5b5090565b600090815260026020526040902054600160a060020a031690565b6000546101009004600160a060020a03163314610fa557600080fd5b6008805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000546101009004600160a060020a03163314610ff057600080fd5b60005460ff161561100057600080fd5b6000805460ff19166001179055565b6000546101009004600160a060020a0316331461102b57600080fd5b600160a060020a038116151561104057600080fd5b60008054604051600160a060020a038085169361010090930416917ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec691a360008054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b6000600160a060020a0382161515611115576040805160e560020a62461bcd02815260206004820152600a60248201527f4f776e6572206973203000000000000000000000000000000000000000000000604482015290519081900360640190fd5b50600160a060020a031660009081526003602052604090205490565b600180548290811061113f57fe5b600091825260209091200154905081565b60408051808201909152600381527f54544d0000000000000000000000000000000000000000000000000000000000602082015290565b600854600160a060020a031681565b60005460ff16156111a657600080fd5b336000818152600660209081526040808320600160a060020a03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b3360009081526007602052604081205481908190819060ff168061124757506000546101009004600160a060020a031633145b151561125257600080fd5b600086118015611263575060808511155b151561126e57600080fd5b503060008181526003602052604081209194509092505b84811015611351576001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf681018890556000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038b1690811790915588546004845282852081905595860189558884528284209095018490558051848152905193965091927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3600101611285565b505050505050565b60005460ff161561136957600080fd5b3360009081526007602052604090205460ff16151561138757600080fd5b600082815260026020526040902054600160a060020a031630146113aa57600080fd5b600160a060020a03811615156113bf57600080fd5b6113ca3082846117f5565b5050565b60005460ff1681565b60005460ff16156113e757600080fd5b61142385858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437506119d3945050505050565b5050505050565b6000546101009004600160a060020a031681565b60008082118015611450575060015482105b156107f357600180548390811061146357fe5b906000526020600020015490506107f3565b600854606090600160a060020a0316151561149f57506040805160208101909152600081526107f3565b600854604080517fc87b56dd000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a039092169163c87b56dd9160248082019260009290919082900301818387803b15801561150557600080fd5b505af1158015611519573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561154257600080fd5b81019080805164010000000081111561155a57600080fd5b8201602081018481111561156d57600080fd5b815164010000000081118282018710171561158757600080fd5b50909695505050505050565b60008054819060ff16156115a657600080fd5b50846115b28186610927565b6040517f8f4ffcb1000000000000000000000000000000000000000000000000000000008152336004820181815260248301889052306044840181905260806064850190815260848501889052600160a060020a03861694638f4ffcb194938b93928b928b92919060a40184848082843782019150509650505050505050600060405180830381600087803b15801561164a57600080fd5b505af115801561165e573d6000803e3d6000fd5b5060019998505050505050505050565b6000546101009004600160a060020a0316331461168a57600080fd5b600160a060020a03919091166000908152600760205260409020805460ff1916911515919091179055565b600160a060020a03811660009081526003602090815260408083208054825181815281850281019094019092526060938493919291828015611701578160200160208202803883390190505b5094508160405190808252806020026020018201604052801561172e578160200160208202803883390190505b509350600090505b818110156117bf57828181548110151561174c57fe5b9060005260206000200154858281518110151561176557fe5b60209081029091010152845160019086908390811061178057fe5b602090810290910101518154811061179457fe5b906000526020600020015484828151811015156117ad57fe5b60209081029091010152600101611736565b505050915091565b600160a060020a03918216600090815260066020908152604080832093909416825291909152205460ff1690565b60008080600160a060020a0386161561190d57600084815260046020908152604080832054600160a060020a038a168452600390925290912080549194509250849083908590811061184357fe5b906000526020600020015414151561185a57600080fd5b81546000190183146118b55781548290600019810190811061187857fe5b9060005260206000200154905080828481548110151561189457fe5b60009182526020808320909101929092558281526004909152604090208390555b8154600019016118c58382611d36565b50600084815260056020526040902054600160a060020a03161561190d576000848152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff191690555b6000848152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038a8116918217909255808552600384528285208054600181018255818752858720018a9055548986526004909452919093206000199092019091559087161515611989573061198b565b865b600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3505050505050565b600080600084600181101580156119ec57506001548111155b1515611a42576040805160e560020a62461bcd02815260206004820152601460248201527f546f6b656e4964206f7574206f662072616e6765000000000000000000000000604482015290519081900360640190fd5b600081815260026020526040902054600160a060020a03161515611ab0576040805160e560020a62461bcd02815260206004820152601360248201527f546f6b656e2068617665206e6f206f776e657200000000000000000000000000604482015290519081900360640190fd5b6000868152600260205260409020548690600160a060020a031633811480611aee5750600082815260056020526040902054600160a060020a031633145b80611b1c5750600160a060020a038116600090815260066020908152604080832033845290915290205460ff165b1515611b72576040805160e560020a62461bcd02815260206004820152601060248201527f43616e206e6f74207472616e7366657200000000000000000000000000000000604482015290519081900360640190fd5b600088815260026020526040902054600160a060020a03169550851515611b9857600080fd5b600160a060020a0389161515611bad57600080fd5b600160a060020a03868116908b1614611bc557600080fd5b611bd08a8a8a6117f5565b883b9450841515611be057611d2a565b88600160a060020a031663f0b9e5ba8b8a8a6040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611c78578181015183820152602001611c60565b50505050905090810190601f168015611ca55780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015611cc657600080fd5b505af1158015611cda573d6000803e3d6000fd5b505050506040513d6020811015611cf057600080fd5b505193507ff0b9e5ba00000000000000000000000000000000000000000000000000000000600160e060020a0319851614611d2a57600080fd5b50505050505050505050565b815481835581811115610acd57600083815260209020610acd91810190830161082d91905b80821115610f6a5760008155600101611d5b5600a165627a7a72305820fe8bc05b7b38cecfc05f1bc983f3f43a47c9b0a519e56c980626ec63bc23a00a0029