6080604052612710600c556007600d556032600e556701118f178fb48000600f556000601260006101000a81548160ff0219169083151502179055506000601260016101000a81548160ff0219169083151502179055503480156200006357600080fd5b506040516200576b3803806200576b833981810160405281019062000089919062000432565b6040518060400160405280601081526020017f54686520436865657461682047616e67000000000000000000000000000000008152506040518060400160405280600b81526020017f4348454554414847414e4700000000000000000000000000000000000000000081525081600090805190602001906200010d92919062000304565b5080600190805190602001906200012692919062000304565b505050620001496200013d6200016160201b60201c565b6200016960201b60201c565b6200015a816200022f60201b60201c565b506200068a565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200023f6200016160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000265620002da60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002b590620004aa565b60405180910390fd5b8060109080519060200190620002d692919062000304565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620003129062000572565b90600052602060002090601f01602090048101928262000336576000855562000382565b82601f106200035157805160ff191683800117855562000382565b8280016001018555821562000382579182015b828111156200038157825182559160200191906001019062000364565b5b50905062000391919062000395565b5090565b5b80821115620003b057600081600090555060010162000396565b5090565b6000620003cb620003c584620004f5565b620004cc565b905082815260208101848484011115620003ea57620003e962000641565b5b620003f78482856200053c565b509392505050565b600082601f8301126200041757620004166200063c565b5b815162000429848260208601620003b4565b91505092915050565b6000602082840312156200044b576200044a6200064b565b5b600082015167ffffffffffffffff8111156200046c576200046b62000646565b5b6200047a84828501620003ff565b91505092915050565b6000620004926020836200052b565b91506200049f8262000661565b602082019050919050565b60006020820190508181036000830152620004c58162000483565b9050919050565b6000620004d8620004eb565b9050620004e68282620005a8565b919050565b6000604051905090565b600067ffffffffffffffff8211156200051357620005126200060d565b5b6200051e8262000650565b9050602081019050919050565b600082825260208201905092915050565b60005b838110156200055c5780820151818401526020810190506200053f565b838111156200056c576000848401525b50505050565b600060028204905060018216806200058b57607f821691505b60208210811415620005a257620005a1620005de565b5b50919050565b620005b38262000650565b810181811067ffffffffffffffff82111715620005d557620005d46200060d565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6150d1806200069a6000396000f3fe60806040526004361061023b5760003560e01c8063729ad39e1161012e578063aef6ee1f116100ab578063e0f888ef1161006f578063e0f888ef14610816578063e985e9c514610841578063ec6dd0361461087e578063f2fde38b146108a7578063f46015ed146108d05761023b565b8063aef6ee1f14610745578063b88d4fde1461076e578063bb33d72914610797578063bee6348a146107ae578063c87b56dd146107d95761023b565b806395d89b41116100f257806395d89b411461067057806399288dbb1461069b5780639a6a6237146106c6578063a035b1fe146106f1578063a22cb4651461071c5761023b565b8063729ad39e146105c0578063853828b6146105e95780638da5cb5b1461060057806391b7f5ed1461062b57806392642744146106545761023b565b806342842e0e116101bc57806355367ba91161018057806355367ba9146104ef57806355f804b3146105065780636352211e1461052f57806370a082311461056c578063715018a6146105a95761023b565b806342842e0e1461041e57806342d1e8f9146104475780634357da581461045e578063438b6300146104755780634f6ccce7146104b25761023b565b806318160ddd1161020357806318160ddd14610325578063191f65ac1461035057806323b872dd1461038d5780632f745c59146103b6578063420db8cf146103f35761023b565b806301ffc9a71461024057806306fdde031461027d578063081812fc146102a8578063095ea7b3146102e557806311abe0181461030e575b600080fd5b34801561024c57600080fd5b506102676004803603810190610262919061387d565b6108f9565b6040516102749190613f7e565b60405180910390f35b34801561028957600080fd5b50610292610973565b60405161029f9190613f99565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190613920565b610a05565b6040516102dc9190613ef5565b60405180910390f35b3480156102f157600080fd5b5061030c600480360381019061030791906137f0565b610a8a565b005b34801561031a57600080fd5b50610323610ba2565b005b34801561033157600080fd5b5061033a610bfc565b604051610347919061435b565b60405180910390f35b34801561035c57600080fd5b506103776004803603810190610372919061366d565b610c09565b6040516103849190613f7e565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af91906136da565b610c5f565b005b3480156103c257600080fd5b506103dd60048036038101906103d891906137f0565b610cbf565b6040516103ea919061435b565b60405180910390f35b3480156103ff57600080fd5b50610408610d64565b604051610415919061435b565b60405180910390f35b34801561042a57600080fd5b50610445600480360381019061044091906136da565b610d6a565b005b34801561045357600080fd5b5061045c610d8a565b005b34801561046a57600080fd5b50610473610e23565b005b34801561048157600080fd5b5061049c6004803603810190610497919061366d565b610ebc565b6040516104a99190613f5c565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d49190613920565b610f6a565b6040516104e6919061435b565b60405180910390f35b3480156104fb57600080fd5b50610504610fdb565b005b34801561051257600080fd5b5061052d600480360381019061052891906138d7565b611074565b005b34801561053b57600080fd5b5061055660048036038101906105519190613920565b61110a565b6040516105639190613ef5565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e919061366d565b6111bc565b6040516105a0919061435b565b60405180910390f35b3480156105b557600080fd5b506105be611274565b005b3480156105cc57600080fd5b506105e760048036038101906105e29190613830565b6112fc565b005b3480156105f557600080fd5b506105fe611513565b005b34801561060c57600080fd5b5061061561163e565b6040516106229190613ef5565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190613920565b611668565b005b61066e60048036038101906106699190613920565b6116ee565b005b34801561067c57600080fd5b50610685611a95565b6040516106929190613f99565b60405180910390f35b3480156106a757600080fd5b506106b0611b27565b6040516106bd9190613f7e565b60405180910390f35b3480156106d257600080fd5b506106db611b3a565b6040516106e8919061435b565b60405180910390f35b3480156106fd57600080fd5b50610706611b40565b604051610713919061435b565b60405180910390f35b34801561072857600080fd5b50610743600480360381019061073e91906137b0565b611b46565b005b34801561075157600080fd5b5061076c60048036038101906107679190613830565b611cc7565b005b34801561077a57600080fd5b506107956004803603810190610790919061372d565b611e7f565b005b3480156107a357600080fd5b506107ac611ee1565b005b3480156107ba57600080fd5b506107c3611f7a565b6040516107d09190613f7e565b60405180910390f35b3480156107e557600080fd5b5061080060048036038101906107fb9190613920565b611f8d565b60405161080d9190613f99565b60405180910390f35b34801561082257600080fd5b5061082b612034565b604051610838919061435b565b60405180910390f35b34801561084d57600080fd5b506108686004803603810190610863919061369a565b61203a565b6040516108759190613f7e565b60405180910390f35b34801561088a57600080fd5b506108a560048036038101906108a09190613920565b6120ce565b005b3480156108b357600080fd5b506108ce60048036038101906108c9919061366d565b612154565b005b3480156108dc57600080fd5b506108f760048036038101906108f29190613920565b61224c565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061096c575061096b826122d2565b5b9050919050565b60606000805461098290614679565b80601f01602080910402602001604051908101604052809291908181526020018280546109ae90614679565b80156109fb5780601f106109d0576101008083540402835291602001916109fb565b820191906000526020600020905b8154815290600101906020018083116109de57829003601f168201915b5050505050905090565b6000610a10826123b4565b610a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a46906141fb565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a958261110a565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afd9061429b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b25612420565b73ffffffffffffffffffffffffffffffffffffffff161480610b545750610b5381610b4e612420565b61203a565b5b610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a9061415b565b60405180910390fd5b610b9d8383612428565b505050565b6001601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550565b6000600880549050905090565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610c70610c6a612420565b826124e1565b610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca69061431b565b60405180910390fd5b610cba8383836125bf565b505050565b6000610cca836111bc565b8210610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0290613ffb565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600e5481565b610d8583838360405180602001604052806000815250611e7f565b505050565b610d92612420565b73ffffffffffffffffffffffffffffffffffffffff16610db061163e565b73ffffffffffffffffffffffffffffffffffffffff1614610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd9061423b565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550565b610e2b612420565b73ffffffffffffffffffffffffffffffffffffffff16610e4961163e565b73ffffffffffffffffffffffffffffffffffffffff1614610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e969061423b565b60405180910390fd5b6000601260016101000a81548160ff021916908315150217905550565b60606000610ec9836111bc565b905060008167ffffffffffffffff811115610ee757610ee6614841565b5b604051908082528060200260200182016040528015610f155781602001602082028036833780820191505090505b50905060005b82811015610f5f57610f2d8582610cbf565b828281518110610f4057610f3f614812565b5b6020026020010181815250508080610f57906146dc565b915050610f1b565b508092505050919050565b6000610f74610bfc565b8210610fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fac9061433b565b60405180910390fd5b60088281548110610fc957610fc8614812565b5b90600052602060002001549050919050565b610fe3612420565b73ffffffffffffffffffffffffffffffffffffffff1661100161163e565b73ffffffffffffffffffffffffffffffffffffffff1614611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e9061423b565b60405180910390fd5b6000601260006101000a81548160ff021916908315150217905550565b61107c612420565b73ffffffffffffffffffffffffffffffffffffffff1661109a61163e565b73ffffffffffffffffffffffffffffffffffffffff16146110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e79061423b565b60405180910390fd5b806010908051906020019061110692919061342b565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111aa906141bb565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561122d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112249061419b565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61127c612420565b73ffffffffffffffffffffffffffffffffffffffff1661129a61163e565b73ffffffffffffffffffffffffffffffffffffffff16146112f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e79061423b565b60405180910390fd5b6112fa600061281b565b565b611304612420565b73ffffffffffffffffffffffffffffffffffffffff1661132261163e565b73ffffffffffffffffffffffffffffffffffffffff1614611378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136f9061423b565b60405180910390fd5b600e54600c546113889190614565565b82829050611394610bfc565b61139e9190614484565b11156113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d69061417b565b60405180910390fd5b6000828290501415611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141d90613fbb565b60405180910390fd5b60005b8282905081101561150e57600073ffffffffffffffffffffffffffffffffffffffff1683838381811061145f5761145e614812565b5b9050602002016020810190611474919061366d565b73ffffffffffffffffffffffffffffffffffffffff1614156114cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c29061401b565b60405180910390fd5b6114fb8383838181106114e1576114e0614812565b5b90506020020160208101906114f6919061366d565b6128e1565b8080611506906146dc565b915050611429565b505050565b61151b612420565b73ffffffffffffffffffffffffffffffffffffffff1661153961163e565b73ffffffffffffffffffffffffffffffffffffffff161461158f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115869061423b565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516115b590613ee0565b60006040518083038185875af1925050503d80600081146115f2576040519150601f19603f3d011682016040523d82523d6000602084013e6115f7565b606091505b505090508061163b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611632906142db565b60405180910390fd5b50565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611670612420565b73ffffffffffffffffffffffffffffffffffffffff1661168e61163e565b73ffffffffffffffffffffffffffffffffffffffff16146116e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116db9061423b565b60405180910390fd5b80600f8190555050565b6116f661163e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118285760011515601260009054906101000a900460ff161515148061175d575060011515601260019054906101000a900460ff161515145b61179c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117939061409b565b60405180910390fd5b60011515601260019054906101000a900460ff1615151480156117d2575060001515601260009054906101000a900460ff161515145b1561182757600115156117e433610c09565b151514611826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181d906142fb565b60405180910390fd5b5b5b60008111801561183a5750600d548111155b611879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187090613fdb565b60405180910390fd5b600d54611885336111bc565b106118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc906140bb565b60405180910390fd5b6118cd61163e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461196857600e54600c5461190f9190614565565b81611918610bfc565b6119229190614484565b1115611963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195a9061413b565b60405180910390fd5b6119c0565b600c5481611974610bfc565b61197e9190614484565b11156119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b69061413b565b60405180910390fd5b5b80600f546119ce919061450b565b341015611a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a079061421b565b60405180910390fd5b600033905060005b82811015611a9057611a29826128e1565b611a3161163e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611a7d57600e6000815480929190611a779061464f565b91905055505b8080611a88906146dc565b915050611a18565b505050565b606060018054611aa490614679565b80601f0160208091040260200160405190810160405280929190818152602001828054611ad090614679565b8015611b1d5780601f10611af257610100808354040283529160200191611b1d565b820191906000526020600020905b815481529060010190602001808311611b0057829003601f168201915b5050505050905090565b601260009054906101000a900460ff1681565b600d5481565b600f5481565b611b4e612420565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb3906140fb565b60405180910390fd5b8060056000611bc9612420565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611c76612420565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611cbb9190613f7e565b60405180910390a35050565b611ccf612420565b73ffffffffffffffffffffffffffffffffffffffff16611ced61163e565b73ffffffffffffffffffffffffffffffffffffffff1614611d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3a9061423b565b60405180910390fd5b60005b82829050811015611e7a57600073ffffffffffffffffffffffffffffffffffffffff16838383818110611d7c57611d7b614812565b5b9050602002016020810190611d91919061366d565b73ffffffffffffffffffffffffffffffffffffffff161415611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf906142bb565b60405180910390fd5b600160116000858585818110611e0157611e00614812565b5b9050602002016020810190611e16919061366d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611e72906146dc565b915050611d46565b505050565b611e90611e8a612420565b836124e1565b611ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec69061431b565b60405180910390fd5b611edb8484848461293e565b50505050565b611ee9612420565b73ffffffffffffffffffffffffffffffffffffffff16611f0761163e565b73ffffffffffffffffffffffffffffffffffffffff1614611f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f549061423b565b60405180910390fd5b6001601260006101000a81548160ff021916908315150217905550565b601260019054906101000a900460ff1681565b6060611f98826123b4565b611fd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fce9061427b565b60405180910390fd5b6000611fe161299a565b90506000815111612001576040518060200160405280600081525061202c565b8061200b84612a2c565b60405160200161201c929190613ebc565b6040516020818303038152906040525b915050919050565b600c5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6120d6612420565b73ffffffffffffffffffffffffffffffffffffffff166120f461163e565b73ffffffffffffffffffffffffffffffffffffffff161461214a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121419061423b565b60405180910390fd5b80600e8190555050565b61215c612420565b73ffffffffffffffffffffffffffffffffffffffff1661217a61163e565b73ffffffffffffffffffffffffffffffffffffffff16146121d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c79061423b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612240576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122379061405b565b60405180910390fd5b6122498161281b565b50565b612254612420565b73ffffffffffffffffffffffffffffffffffffffff1661227261163e565b73ffffffffffffffffffffffffffffffffffffffff16146122c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bf9061423b565b60405180910390fd5b80600d8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061239d57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806123ad57506123ac82612b8d565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661249b8361110a565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006124ec826123b4565b61252b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125229061411b565b60405180910390fd5b60006125368361110a565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806125a557508373ffffffffffffffffffffffffffffffffffffffff1661258d84610a05565b73ffffffffffffffffffffffffffffffffffffffff16145b806125b657506125b5818561203a565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166125df8261110a565b73ffffffffffffffffffffffffffffffffffffffff1614612635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262c9061425b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269c906140db565b60405180910390fd5b6126b0838383612bf7565b6126bb600082612428565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461270b9190614565565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127629190614484565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6128eb600b612d0b565b60006128f7600b612d21565b90506129038282612d2f565b7fd9dc24857f317ed9abbbb42e920ede0104231eb1d3d70236a74887ffaf15986881604051612932919061435b565b60405180910390a15050565b6129498484846125bf565b61295584848484612d4d565b612994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298b9061403b565b60405180910390fd5b50505050565b6060601080546129a990614679565b80601f01602080910402602001604051908101604052809291908181526020018280546129d590614679565b8015612a225780601f106129f757610100808354040283529160200191612a22565b820191906000526020600020905b815481529060010190602001808311612a0557829003601f168201915b5050505050905090565b60606000821415612a74576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612b88565b600082905060005b60008214612aa6578080612a8f906146dc565b915050600a82612a9f91906144da565b9150612a7c565b60008167ffffffffffffffff811115612ac257612ac1614841565b5b6040519080825280601f01601f191660200182016040528015612af45781602001600182028036833780820191505090505b5090505b60008514612b8157600182612b0d9190614565565b9150600a85612b1c9190614725565b6030612b289190614484565b60f81b818381518110612b3e57612b3d614812565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612b7a91906144da565b9450612af8565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612c02838383612ee4565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c4557612c4081612ee9565b612c84565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612c8357612c828382612f32565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cc757612cc28161309f565b612d06565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612d0557612d048282613170565b5b5b505050565b6001816000016000828254019250508190555050565b600081600001549050919050565b612d498282604051806020016040528060008152506131ef565b5050565b6000612d6e8473ffffffffffffffffffffffffffffffffffffffff1661324a565b15612ed7578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d97612420565b8786866040518563ffffffff1660e01b8152600401612db99493929190613f10565b602060405180830381600087803b158015612dd357600080fd5b505af1925050508015612e0457506040513d601f19601f82011682018060405250810190612e0191906138aa565b60015b612e87573d8060008114612e34576040519150601f19603f3d011682016040523d82523d6000602084013e612e39565b606091505b50600081511415612e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e769061403b565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612edc565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001612f3f846111bc565b612f499190614565565b905060006007600084815260200190815260200160002054905081811461302e576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506130b39190614565565b90506000600960008481526020019081526020016000205490506000600883815481106130e3576130e2614812565b5b90600052602060002001549050806008838154811061310557613104614812565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480613154576131536147e3565b5b6001900381819060005260206000200160009055905550505050565b600061317b836111bc565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6131f9838361325d565b6132066000848484612d4d565b613245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323c9061403b565b60405180910390fd5b505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156132cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c4906141db565b60405180910390fd5b6132d6816123b4565b15613316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330d9061407b565b60405180910390fd5b61332260008383612bf7565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133729190614484565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b82805461343790614679565b90600052602060002090601f01602090048101928261345957600085556134a0565b82601f1061347257805160ff19168380011785556134a0565b828001600101855582156134a0579182015b8281111561349f578251825591602001919060010190613484565b5b5090506134ad91906134b1565b5090565b5b808211156134ca5760008160009055506001016134b2565b5090565b60006134e16134dc8461439b565b614376565b9050828152602081018484840111156134fd576134fc61487f565b5b61350884828561460d565b509392505050565b600061352361351e846143cc565b614376565b90508281526020810184848401111561353f5761353e61487f565b5b61354a84828561460d565b509392505050565b6000813590506135618161503f565b92915050565b60008083601f84011261357d5761357c614875565b5b8235905067ffffffffffffffff81111561359a57613599614870565b5b6020830191508360208202830111156135b6576135b561487a565b5b9250929050565b6000813590506135cc81615056565b92915050565b6000813590506135e18161506d565b92915050565b6000815190506135f68161506d565b92915050565b600082601f83011261361157613610614875565b5b81356136218482602086016134ce565b91505092915050565b600082601f83011261363f5761363e614875565b5b813561364f848260208601613510565b91505092915050565b60008135905061366781615084565b92915050565b60006020828403121561368357613682614889565b5b600061369184828501613552565b91505092915050565b600080604083850312156136b1576136b0614889565b5b60006136bf85828601613552565b92505060206136d085828601613552565b9150509250929050565b6000806000606084860312156136f3576136f2614889565b5b600061370186828701613552565b935050602061371286828701613552565b925050604061372386828701613658565b9150509250925092565b6000806000806080858703121561374757613746614889565b5b600061375587828801613552565b945050602061376687828801613552565b935050604061377787828801613658565b925050606085013567ffffffffffffffff81111561379857613797614884565b5b6137a4878288016135fc565b91505092959194509250565b600080604083850312156137c7576137c6614889565b5b60006137d585828601613552565b92505060206137e6858286016135bd565b9150509250929050565b6000806040838503121561380757613806614889565b5b600061381585828601613552565b925050602061382685828601613658565b9150509250929050565b6000806020838503121561384757613846614889565b5b600083013567ffffffffffffffff81111561386557613864614884565b5b61387185828601613567565b92509250509250929050565b60006020828403121561389357613892614889565b5b60006138a1848285016135d2565b91505092915050565b6000602082840312156138c0576138bf614889565b5b60006138ce848285016135e7565b91505092915050565b6000602082840312156138ed576138ec614889565b5b600082013567ffffffffffffffff81111561390b5761390a614884565b5b6139178482850161362a565b91505092915050565b60006020828403121561393657613935614889565b5b600061394484828501613658565b91505092915050565b60006139598383613e9e565b60208301905092915050565b61396e81614599565b82525050565b600061397f8261440d565b613989818561443b565b9350613994836143fd565b8060005b838110156139c55781516139ac888261394d565b97506139b78361442e565b925050600181019050613998565b5085935050505092915050565b6139db816145ab565b82525050565b60006139ec82614418565b6139f6818561444c565b9350613a0681856020860161461c565b613a0f8161488e565b840191505092915050565b6000613a2582614423565b613a2f8185614468565b9350613a3f81856020860161461c565b613a488161488e565b840191505092915050565b6000613a5e82614423565b613a688185614479565b9350613a7881856020860161461c565b80840191505092915050565b6000613a91601d83614468565b9150613a9c8261489f565b602082019050919050565b6000613ab4602a83614468565b9150613abf826148c8565b604082019050919050565b6000613ad7602b83614468565b9150613ae282614917565b604082019050919050565b6000613afa601783614468565b9150613b0582614966565b602082019050919050565b6000613b1d603283614468565b9150613b288261498f565b604082019050919050565b6000613b40602683614468565b9150613b4b826149de565b604082019050919050565b6000613b63601c83614468565b9150613b6e82614a2d565b602082019050919050565b6000613b86602f83614468565b9150613b9182614a56565b604082019050919050565b6000613ba9602383614468565b9150613bb482614aa5565b604082019050919050565b6000613bcc602483614468565b9150613bd782614af4565b604082019050919050565b6000613bef601983614468565b9150613bfa82614b43565b602082019050919050565b6000613c12602c83614468565b9150613c1d82614b6c565b604082019050919050565b6000613c35600d83614468565b9150613c4082614bbb565b602082019050919050565b6000613c58603883614468565b9150613c6382614be4565b604082019050919050565b6000613c7b602a83614468565b9150613c8682614c33565b604082019050919050565b6000613c9e602a83614468565b9150613ca982614c82565b604082019050919050565b6000613cc1602983614468565b9150613ccc82614cd1565b604082019050919050565b6000613ce4602083614468565b9150613cef82614d20565b602082019050919050565b6000613d07602c83614468565b9150613d1282614d49565b604082019050919050565b6000613d2a602f83614468565b9150613d3582614d98565b604082019050919050565b6000613d4d602083614468565b9150613d5882614de7565b602082019050919050565b6000613d70602983614468565b9150613d7b82614e10565b604082019050919050565b6000613d93602f83614468565b9150613d9e82614e5f565b604082019050919050565b6000613db6602183614468565b9150613dc182614eae565b604082019050919050565b6000613dd960008361445d565b9150613de482614efd565b600082019050919050565b6000613dfc601783614468565b9150613e0782614f00565b602082019050919050565b6000613e1f601083614468565b9150613e2a82614f29565b602082019050919050565b6000613e42602183614468565b9150613e4d82614f52565b604082019050919050565b6000613e65603183614468565b9150613e7082614fa1565b604082019050919050565b6000613e88602c83614468565b9150613e9382614ff0565b604082019050919050565b613ea781614603565b82525050565b613eb681614603565b82525050565b6000613ec88285613a53565b9150613ed48284613a53565b91508190509392505050565b6000613eeb82613dcc565b9150819050919050565b6000602082019050613f0a6000830184613965565b92915050565b6000608082019050613f256000830187613965565b613f326020830186613965565b613f3f6040830185613ead565b8181036060830152613f5181846139e1565b905095945050505050565b60006020820190508181036000830152613f768184613974565b905092915050565b6000602082019050613f9360008301846139d2565b92915050565b60006020820190508181036000830152613fb38184613a1a565b905092915050565b60006020820190508181036000830152613fd481613a84565b9050919050565b60006020820190508181036000830152613ff481613aa7565b9050919050565b6000602082019050818103600083015261401481613aca565b9050919050565b6000602082019050818103600083015261403481613aed565b9050919050565b6000602082019050818103600083015261405481613b10565b9050919050565b6000602082019050818103600083015261407481613b33565b9050919050565b6000602082019050818103600083015261409481613b56565b9050919050565b600060208201905081810360008301526140b481613b79565b9050919050565b600060208201905081810360008301526140d481613b9c565b9050919050565b600060208201905081810360008301526140f481613bbf565b9050919050565b6000602082019050818103600083015261411481613be2565b9050919050565b6000602082019050818103600083015261413481613c05565b9050919050565b6000602082019050818103600083015261415481613c28565b9050919050565b6000602082019050818103600083015261417481613c4b565b9050919050565b6000602082019050818103600083015261419481613c6e565b9050919050565b600060208201905081810360008301526141b481613c91565b9050919050565b600060208201905081810360008301526141d481613cb4565b9050919050565b600060208201905081810360008301526141f481613cd7565b9050919050565b6000602082019050818103600083015261421481613cfa565b9050919050565b6000602082019050818103600083015261423481613d1d565b9050919050565b6000602082019050818103600083015261425481613d40565b9050919050565b6000602082019050818103600083015261427481613d63565b9050919050565b6000602082019050818103600083015261429481613d86565b9050919050565b600060208201905081810360008301526142b481613da9565b9050919050565b600060208201905081810360008301526142d481613def565b9050919050565b600060208201905081810360008301526142f481613e12565b9050919050565b6000602082019050818103600083015261431481613e35565b9050919050565b6000602082019050818103600083015261433481613e58565b9050919050565b6000602082019050818103600083015261435481613e7b565b9050919050565b60006020820190506143706000830184613ead565b92915050565b6000614380614391565b905061438c82826146ab565b919050565b6000604051905090565b600067ffffffffffffffff8211156143b6576143b5614841565b5b6143bf8261488e565b9050602081019050919050565b600067ffffffffffffffff8211156143e7576143e6614841565b5b6143f08261488e565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061448f82614603565b915061449a83614603565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144cf576144ce614756565b5b828201905092915050565b60006144e582614603565b91506144f083614603565b925082614500576144ff614785565b5b828204905092915050565b600061451682614603565b915061452183614603565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561455a57614559614756565b5b828202905092915050565b600061457082614603565b915061457b83614603565b92508282101561458e5761458d614756565b5b828203905092915050565b60006145a4826145e3565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561463a57808201518184015260208101905061461f565b83811115614649576000848401525b50505050565b600061465a82614603565b9150600082141561466e5761466d614756565b5b600182039050919050565b6000600282049050600182168061469157607f821691505b602082108114156146a5576146a46147b4565b5b50919050565b6146b48261488e565b810181811067ffffffffffffffff821117156146d3576146d2614841565b5b80604052505050565b60006146e782614603565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561471a57614719614756565b5b600182019050919050565b600061473082614603565b915061473b83614603565b92508261474b5761474a614785565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f41646472657373206e6f7420666f756e6420666f72206d696e74696e67000000600082015250565b7f4f757473696465204e465473206d696e74696e67206d696e74696e6720616c6c60008201527f6f7765642072616e676500000000000000000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4d696e74696e6720746f204e756c6c2061646472657373000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f50726573616c652f53616c65206973206e6f74206f70656e20706c656173652060008201527f74727920616761696e206c617465720000000000000000000000000000000000602082015250565b7f596f7520616c7265616479206d696e746564206d617820616c6c6f776564204e60008201527f4654730000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f416c6c204e46547320736f6c6400000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f41697264726f70206d696e74696e672077696c6c20657863656564206d61786960008201527f6d756d20737570706c7900000000000000000000000000000000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f45746865722073656e7420776974682074686973207472616e73616374696f6e60008201527f206973206e6f7420636f72726563740000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f43616e6e6f7420616464206e756c6c2061646472657373000000000000000000600082015250565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f596f7520617265206e6f7420656c69676962616c6520666f722050726573616c60008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b61504881614599565b811461505357600080fd5b50565b61505f816145ab565b811461506a57600080fd5b50565b615076816145b7565b811461508157600080fd5b50565b61508d81614603565b811461509857600080fd5b5056fea264697066735822122060e68090a953ec59659294e9470b8b74c5a0673cbeecdf38a561d6f198b4467064736f6c634300080700330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004468747470733a2f2f697066732e696f2f697066732f516d587743624e61796f3241554c454d475766424269634a574157586d313141513931507a714a72665177324e322f00000000000000000000000000000000000000000000000000000000