60c060405268056bc75e2d631000006009556002600f55600260105560016011556001601255620000796011546200006560105462000051600f546012546200082260201b62001ce81790919060201c565b6200082260201b62001ce81790919060201c565b6200082260201b62001ce81790919060201c565b6013556006601455600360155560016016556002601755620000e4601654620000d0601554620000bc6014546017546200082260201b62001ce81790919060201c565b6200082260201b62001ce81790919060201c565b6200082260201b62001ce81790919060201c565b6018557364fba66d58442be0605d3f44b8680b566f667505601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c69da5a56a5c0e9d34d35c88e9619008ba5e5200601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601a60156101000a81548160ff021916908315150217905550683635c9adc5dea00000601b5569d3c21bcecceda1000000601c55348015620001d457600080fd5b506040518060400160405280600881526020017f4368726f6e6f6c790000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f43524e4f000000000000000000000000000000000000000000000000000000008152506012336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3826001908051906020019062000316929190620008b6565b5081600290805190602001906200032f929190620008b6565b5080600360006101000a81548160ff021916908360ff16021790555050505033601d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b033b2e3c9fd0803ce800000060088190555060085460046000601d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200046f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004959190620009d0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005239190620009d0565b6040518363ffffffff1660e01b81526004016200054292919062000a13565b6020604051808303816000875af115801562000562573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005889190620009d0565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160066000620006056200088560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007b2620008ae60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60085460405162000813919062000a5b565b60405180910390a35062000beb565b600080828462000833919062000aa7565b9050838110156200087b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008729062000b65565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600033905090565b828054620008c49062000bb6565b90600052602060002090601f016020900481019282620008e8576000855562000934565b82601f106200090357805160ff191683800117855562000934565b8280016001018555821562000934579182015b828111156200093357825182559160200191906001019062000916565b5b50905062000943919062000947565b5090565b5b808211156200096257600081600090555060010162000948565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000998826200096b565b9050919050565b620009aa816200098b565b8114620009b657600080fd5b50565b600081519050620009ca816200099f565b92915050565b600060208284031215620009e957620009e862000966565b5b6000620009f984828501620009b9565b91505092915050565b62000a0d816200098b565b82525050565b600060408201905062000a2a600083018562000a02565b62000a39602083018462000a02565b9392505050565b6000819050919050565b62000a558162000a40565b82525050565b600060208201905062000a72600083018462000a4a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ab48262000a40565b915062000ac18362000a40565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000af95762000af862000a78565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000b4d601b8362000b04565b915062000b5a8262000b15565b602082019050919050565b6000602082019050818103600083015262000b808162000b3e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bcf57607f821691505b60208210810362000be55762000be462000b87565b5b50919050565b60805160a0516141e762000c5e60003960008181610fc3015281816120f00152818161242101528181612478015281816124d90152818161255a0152612ba2015260008181610b9101528181612e3901528181612f1a01528181612f4101528181613160015261318701526141e76000f3fe60806040526004361061028c5760003560e01c80636ed705f81161015a578063b2bdfa7b116100c1578063dfbf53ae1161007a578063dfbf53ae146109d5578063e0f07e3a14610a00578063e745b25414610a2b578063ea2f0b3714610a56578063f2fde38b14610a7f578063fa716d1314610aa857610293565b8063b2bdfa7b146108c5578063b7e03264146108f0578063c49b9a801461091b578063c57a6c4414610944578063d12a76881461096d578063dd62ed3e1461099857610293565b80638cf57cb9116101135780638cf57cb9146107a15780638da5cb5b146107cc578063906e9dd0146107f757806395d89b4114610820578063a457c2d71461084b578063a9059cbb1461088857610293565b80636ed705f8146106a157806370a08231146106cc578063715018a61461070957806375e924e714610720578063889b408c1461074b5780638c0b5e221461077657610293565b806339509351116101fe57806350ccd796116101b757806350ccd796146105a55780635e00e679146105ce5780635eb04347146105f75780635ec01e4d1461062057806366b77e8a1461064b57806369d1d03a1461067657610293565b806339509351146104935780633b3dca76146104d0578063437823ec146104fb57806349bd5a5e146105245780634a74bb021461054f57806350a368bd1461057a57610293565b806318160ddd1161025057806318160ddd1461038157806318cefa36146103ac57806323b872dd146103e9578063313ce5671461042657806333759dfb1461045157806333a99e041461047c57610293565b8063043a28ee1461029857806306e8781a146102c357806306fdde03146102ee578063095ea7b3146103195780631694505e1461035657610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610ad3565b6040516102ba9190613254565b60405180910390f35b3480156102cf57600080fd5b506102d8610ad9565b6040516102e59190613254565b60405180910390f35b3480156102fa57600080fd5b50610303610adf565b6040516103109190613308565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b91906133b9565b610b71565b60405161034d9190613414565b60405180910390f35b34801561036257600080fd5b5061036b610b8f565b604051610378919061348e565b60405180910390f35b34801561038d57600080fd5b50610396610bb3565b6040516103a39190613254565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce91906134a9565b610bbd565b6040516103e091906134e5565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190613500565b610bfc565b60405161041d9190613414565b60405180910390f35b34801561043257600080fd5b5061043b610cd5565b604051610448919061356f565b60405180910390f35b34801561045d57600080fd5b50610466610cec565b6040516104739190613254565b60405180910390f35b34801561048857600080fd5b50610491610cf2565b005b34801561049f57600080fd5b506104ba60048036038101906104b591906133b9565b610e18565b6040516104c79190613414565b60405180910390f35b3480156104dc57600080fd5b506104e5610ecb565b6040516104f29190613254565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d919061358a565b610ed1565b005b34801561053057600080fd5b50610539610fc1565b60405161054691906134e5565b60405180910390f35b34801561055b57600080fd5b50610564610fe5565b6040516105719190613414565b60405180910390f35b34801561058657600080fd5b5061058f610ff8565b60405161059c9190613254565b60405180910390f35b3480156105b157600080fd5b506105cc60048036038101906105c791906134a9565b610ffe565b005b3480156105da57600080fd5b506105f560048036038101906105f091906135f5565b61109d565b005b34801561060357600080fd5b5061061e600480360381019061061991906134a9565b611176565b005b34801561062c57600080fd5b50610635611215565b6040516106429190613254565b60405180910390f35b34801561065757600080fd5b50610660611315565b60405161066d9190613254565b60405180910390f35b34801561068257600080fd5b5061068b61131b565b6040516106989190613254565b60405180910390f35b3480156106ad57600080fd5b506106b6611321565b6040516106c39190613254565b60405180910390f35b3480156106d857600080fd5b506106f360048036038101906106ee919061358a565b611327565b6040516107009190613254565b60405180910390f35b34801561071557600080fd5b5061071e611370565b005b34801561072c57600080fd5b506107356114c3565b6040516107429190613254565b60405180910390f35b34801561075757600080fd5b506107606114c9565b60405161076d9190613254565b60405180910390f35b34801561078257600080fd5b5061078b6114cf565b6040516107989190613254565b60405180910390f35b3480156107ad57600080fd5b506107b66114d5565b6040516107c39190613631565b60405180910390f35b3480156107d857600080fd5b506107e16114fb565b6040516107ee91906134e5565b60405180910390f35b34801561080357600080fd5b5061081e600480360381019061081991906135f5565b611524565b005b34801561082c57600080fd5b506108356115fd565b6040516108429190613308565b60405180910390f35b34801561085757600080fd5b50610872600480360381019061086d91906133b9565b61168f565b60405161087f9190613414565b60405180910390f35b34801561089457600080fd5b506108af60048036038101906108aa91906133b9565b61175c565b6040516108bc9190613414565b60405180910390f35b3480156108d157600080fd5b506108da61177a565b6040516108e791906134e5565b60405180910390f35b3480156108fc57600080fd5b506109056117a0565b60405161091291906134e5565b60405180910390f35b34801561092757600080fd5b50610942600480360381019061093d9190613678565b6117ca565b005b34801561095057600080fd5b5061096b600480360381019061096691906134a9565b6118b3565b005b34801561097957600080fd5b50610982611952565b60405161098f9190613254565b60405180910390f35b3480156109a457600080fd5b506109bf60048036038101906109ba91906136a5565b611958565b6040516109cc9190613254565b60405180910390f35b3480156109e157600080fd5b506109ea6119df565b6040516109f791906134e5565b60405180910390f35b348015610a0c57600080fd5b50610a15611a05565b604051610a229190613631565b60405180910390f35b348015610a3757600080fd5b50610a40611a2b565b604051610a4d9190613254565b60405180910390f35b348015610a6257600080fd5b50610a7d6004803603810190610a78919061358a565b611a31565b005b348015610a8b57600080fd5b50610aa66004803603810190610aa1919061358a565b611b21565b005b348015610ab457600080fd5b50610abd611ce2565b604051610aca9190613254565b60405180910390f35b60135481565b600f5481565b606060018054610aee90613714565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1a90613714565b8015610b675780601f10610b3c57610100808354040283529160200191610b67565b820191906000526020600020905b815481529060010190602001808311610b4a57829003601f168201915b5050505050905090565b6000610b85610b7e611d46565b8484611d4e565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600854905090565b60078181548110610bcd57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c09848484611f17565b610cca84610c15611d46565b610cc58560405180606001604052806028815260200161416560289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c7b611d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c729092919063ffffffff16565b611d4e565b600190509392505050565b6000600360009054906101000a900460ff16905090565b60185481565b610cfa611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e90613791565b60405180910390fd5b610d8f611215565b601e819055506007601e5481548110610dab57610daa6137b1565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610ec1610e25611d46565b84610ebc8560056000610e36611d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce890919063ffffffff16565b611d4e565b6001905092915050565b601e5481565b610ed9611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5d90613791565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601a60159054906101000a900460ff1681565b60105481565b611006611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108a90613791565b60405180910390fd5b8060098190555050565b6110a5611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112990613791565b60405180910390fd5b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61117e611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120290613791565b60405180910390fd5b80601c8190555050565b60008043423360405160200161122b9190613828565b6040516020818303038152906040528051906020012060001c61124e91906138a1565b45424160405160200161126191906138fb565b6040516020818303038152906040528051906020012060001c61128491906138a1565b44426112909190613916565b61129a9190613916565b6112a49190613916565b6112ae9190613916565b6112b89190613916565b6040516020016112c8919061398d565b6040516020818303038152906040528051906020012060001c9050600780549050600780549050826112fa91906138a1565b61130491906139a8565b8161130f9190613a02565b91505090565b60115481565b60155481565b60165481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611378611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fc90613791565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60095481565b60175481565b601c5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61152c611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b090613791565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606002805461160c90613714565b80601f016020809104026020016040519081016040528092919081815260200182805461163890613714565b80156116855780601f1061165a57610100808354040283529160200191611685565b820191906000526020600020905b81548152906001019060200180831161166857829003601f168201915b5050505050905090565b600061175261169c611d46565b8461174d8560405180606001604052806025815260200161418d60259139600560006116c6611d46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c729092919063ffffffff16565b611d4e565b6001905092915050565b6000611770611769611d46565b8484611f17565b6001905092915050565b601d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117d2611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461185f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185690613791565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516118a89190613414565b60405180910390a150565b6118bb611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f90613791565b60405180910390fd5b80601b8190555050565b601b5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b611a39611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abd90613791565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611b29611d46565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bad90613791565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1c90613aa8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b6000808284611cf79190613916565b905083811015611d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3390613b14565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db490613ba6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2390613c38565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f0a9190613254565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7d90613cca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fec90613d5c565b60405180910390fd5b611ffd6114fb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561206b575061203b6114fb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120b657601c548111156120b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ac90613dc8565b60405180910390fd5b5b60006120c130611327565b90506000601b5482101590508080156120e75750601d60009054906101000a900460ff16155b801561213f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121575750601a60159054906101000a900460ff165b1561235f576001601d60006101000a81548160ff02191690831515021790555060006121b66018546121a8612199601554601454611ce890919063ffffffff16565b86612cd690919063ffffffff16565b612d5090919063ffffffff16565b905060004790506121c682612d9a565b60006121db8247612fd790919063ffffffff16565b9050600061221c6121f9601454601554611ce890919063ffffffff16565b61220e60145485612cd690919063ffffffff16565b612d5090919063ffffffff16565b905060006122338284612fd790919063ffffffff16565b9050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561229d573d6000803e3d6000fd5b50601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612306573d6000803e3d6000fd5b5060006123326018546123246017548b612cd690919063ffffffff16565b612d5090919063ffffffff16565b905061233d81613021565b6000601d60006101000a81548160ff0219169083151502179055505050505050505b6000601d60009054906101000a900460ff16159050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124155750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561241f57600090505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156124c757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156124d157600090505b80156125da577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361255857600f54600a81905550601054600b81905550601254600d81905550601154600c81905550601354600e819055505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036125d957601454600a81905550601554600b81905550601754600d81905550601654600c81905550601854600e819055505b5b80156129f657600061260a60646125fc600e5488612cd690919063ffffffff16565b612d5090919063ffffffff16565b90506000612637600e54612629600c5485612cd690919063ffffffff16565b612d5090919063ffffffff16565b9050600061264e8388612fd790919063ffffffff16565b90506126bc8760405180606001604052806026815260200161413f60269139600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c729092919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061275181600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce890919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127e683600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce890919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061287b82600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce890919063ffffffff16565b600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161291b9190613254565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129809190613254565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129e69190613254565b60405180910390a3505050612ba0565b612a628460405180606001604052806026815260200161413f60269139600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c729092919063ffffffff16565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612af784600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce890919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612b979190613254565b60405180910390a35b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612c6a57600954612bff86611327565b1115612c69576007859080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b505050505050565b6000838311158290612cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb19190613308565b60405180910390fd5b5060008385612cc99190613a02565b9050809150509392505050565b6000808303612ce85760009050612d4a565b60008284612cf691906139a8565b9050828482612d0591906138a1565b14612d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3c90613e5a565b60405180910390fd5b809150505b92915050565b6000612d9283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506130f7565b905092915050565b6000600267ffffffffffffffff811115612db757612db6613e7a565b5b604051908082528060200260200182016040528015612de55781602001602082028036833780820191505090505b5090503081600081518110612dfd57612dfc6137b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ea2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec69190613ebe565b81600181518110612eda57612ed96137b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f3f307f000000000000000000000000000000000000000000000000000000000000000084611d4e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612fa1959493929190613fe4565b600060405180830381600087803b158015612fbb57600080fd5b505af1158015612fcf573d6000803e3d6000fd5b505050505050565b600061301983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c72565b905092915050565b6001601a60146101000a81548160ff0219169083151502179055506000613052600283612d5090919063ffffffff16565b905060006130698284612fd790919063ffffffff16565b9050600047905061307983612d9a565b600061308e8247612fd790919063ffffffff16565b905061309a838261315a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516130cd9392919061403e565b60405180910390a1505050506000601a60146101000a81548160ff02191690831515021790555050565b6000808311829061313e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131359190613308565b60405180910390fd5b506000838561314d91906138a1565b9050809150509392505050565b613185307f000000000000000000000000000000000000000000000000000000000000000084611d4e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806131cf6114fb565b426040518863ffffffff1660e01b81526004016131f196959493929190614075565b60606040518083038185885af115801561320f573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061323491906140eb565b5050505050565b6000819050919050565b61324e8161323b565b82525050565b60006020820190506132696000830184613245565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132a957808201518184015260208101905061328e565b838111156132b8576000848401525b50505050565b6000601f19601f8301169050919050565b60006132da8261326f565b6132e4818561327a565b93506132f481856020860161328b565b6132fd816132be565b840191505092915050565b6000602082019050818103600083015261332281846132cf565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061335a8261332f565b9050919050565b61336a8161334f565b811461337557600080fd5b50565b60008135905061338781613361565b92915050565b6133968161323b565b81146133a157600080fd5b50565b6000813590506133b38161338d565b92915050565b600080604083850312156133d0576133cf61332a565b5b60006133de85828601613378565b92505060206133ef858286016133a4565b9150509250929050565b60008115159050919050565b61340e816133f9565b82525050565b60006020820190506134296000830184613405565b92915050565b6000819050919050565b600061345461344f61344a8461332f565b61342f565b61332f565b9050919050565b600061346682613439565b9050919050565b60006134788261345b565b9050919050565b6134888161346d565b82525050565b60006020820190506134a3600083018461347f565b92915050565b6000602082840312156134bf576134be61332a565b5b60006134cd848285016133a4565b91505092915050565b6134df8161334f565b82525050565b60006020820190506134fa60008301846134d6565b92915050565b6000806000606084860312156135195761351861332a565b5b600061352786828701613378565b935050602061353886828701613378565b9250506040613549868287016133a4565b9150509250925092565b600060ff82169050919050565b61356981613553565b82525050565b60006020820190506135846000830184613560565b92915050565b6000602082840312156135a05761359f61332a565b5b60006135ae84828501613378565b91505092915050565b60006135c28261332f565b9050919050565b6135d2816135b7565b81146135dd57600080fd5b50565b6000813590506135ef816135c9565b92915050565b60006020828403121561360b5761360a61332a565b5b6000613619848285016135e0565b91505092915050565b61362b816135b7565b82525050565b60006020820190506136466000830184613622565b92915050565b613655816133f9565b811461366057600080fd5b50565b6000813590506136728161364c565b92915050565b60006020828403121561368e5761368d61332a565b5b600061369c84828501613663565b91505092915050565b600080604083850312156136bc576136bb61332a565b5b60006136ca85828601613378565b92505060206136db85828601613378565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061372c57607f821691505b60208210810361373f5761373e6136e5565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061377b60208361327a565b915061378682613745565b602082019050919050565b600060208201905081810360008301526137aa8161376e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008160601b9050919050565b60006137f8826137e0565b9050919050565b600061380a826137ed565b9050919050565b61382261381d8261334f565b6137ff565b82525050565b60006138348284613811565b60148201915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138ac8261323b565b91506138b78361323b565b9250826138c7576138c6613843565b5b828204905092915050565b60006138dd826137ed565b9050919050565b6138f56138f0826135b7565b6138d2565b82525050565b600061390782846138e4565b60148201915081905092915050565b60006139218261323b565b915061392c8361323b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561396157613960613872565b5b828201905092915050565b6000819050919050565b6139876139828261323b565b61396c565b82525050565b60006139998284613976565b60208201915081905092915050565b60006139b38261323b565b91506139be8361323b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139f7576139f6613872565b5b828202905092915050565b6000613a0d8261323b565b9150613a188361323b565b925082821015613a2b57613a2a613872565b5b828203905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a9260268361327a565b9150613a9d82613a36565b604082019050919050565b60006020820190508181036000830152613ac181613a85565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613afe601b8361327a565b9150613b0982613ac8565b602082019050919050565b60006020820190508181036000830152613b2d81613af1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b9060248361327a565b9150613b9b82613b34565b604082019050919050565b60006020820190508181036000830152613bbf81613b83565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c2260228361327a565b9150613c2d82613bc6565b604082019050919050565b60006020820190508181036000830152613c5181613c15565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613cb460258361327a565b9150613cbf82613c58565b604082019050919050565b60006020820190508181036000830152613ce381613ca7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613d4660238361327a565b9150613d5182613cea565b604082019050919050565b60006020820190508181036000830152613d7581613d39565b9050919050565b7f5472616e73616374696f6e2073697a65206c696d697420726561636865640000600082015250565b6000613db2601e8361327a565b9150613dbd82613d7c565b602082019050919050565b60006020820190508181036000830152613de181613da5565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e4460218361327a565b9150613e4f82613de8565b604082019050919050565b60006020820190508181036000830152613e7381613e37565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613eb881613361565b92915050565b600060208284031215613ed457613ed361332a565b5b6000613ee284828501613ea9565b91505092915050565b6000819050919050565b6000613f10613f0b613f0684613eeb565b61342f565b61323b565b9050919050565b613f2081613ef5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f5b8161334f565b82525050565b6000613f6d8383613f52565b60208301905092915050565b6000602082019050919050565b6000613f9182613f26565b613f9b8185613f31565b9350613fa683613f42565b8060005b83811015613fd7578151613fbe8882613f61565b9750613fc983613f79565b925050600181019050613faa565b5085935050505092915050565b600060a082019050613ff96000830188613245565b6140066020830187613f17565b81810360408301526140188186613f86565b905061402760608301856134d6565b6140346080830184613245565b9695505050505050565b60006060820190506140536000830186613245565b6140606020830185613245565b61406d6040830184613245565b949350505050565b600060c08201905061408a60008301896134d6565b6140976020830188613245565b6140a46040830187613f17565b6140b16060830186613f17565b6140be60808301856134d6565b6140cb60a0830184613245565b979650505050505050565b6000815190506140e58161338d565b92915050565b6000806000606084860312156141045761410361332a565b5b6000614112868287016140d6565b9350506020614123868287016140d6565b9250506040614134868287016140d6565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122041e839e0742fccf4649e6c79499784e1615583c94ec3351b62e1a96828e5c74764736f6c634300080d0033