60c060405234801562000010575f80fd5b506040516200480e3803806200480e8339818101604052810190620000369190620002bc565b6040518060400160405280600581526020017f42414c4c530000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f42414c4c5300000000000000000000000000000000000000000000000000000081525060126103e884805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200010f576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508460019081620001ba919062000550565b508360029081620001cc919062000550565b508260ff1660808160ff1681525050608051600a620001ec9190620007bd565b82620001f991906200080d565b60a081815250505050505050683635c9adc5dea0000060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505062000857565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000286826200025b565b9050919050565b62000298816200027a565b8114620002a3575f80fd5b50565b5f81519050620002b6816200028d565b92915050565b5f60208284031215620002d457620002d362000257565b5b5f620002e384828501620002a6565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200036857607f821691505b6020821081036200037e576200037d62000323565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620003e27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003a5565b620003ee8683620003a5565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000438620004326200042c8462000406565b6200040f565b62000406565b9050919050565b5f819050919050565b620004538362000418565b6200046b62000462826200043f565b848454620003b1565b825550505050565b5f90565b6200048162000473565b6200048e81848462000448565b505050565b5b81811015620004b557620004a95f8262000477565b60018101905062000494565b5050565b601f8211156200050457620004ce8162000384565b620004d98462000396565b81016020851015620004e9578190505b62000501620004f88562000396565b83018262000493565b50505b505050565b5f82821c905092915050565b5f620005265f198460080262000509565b1980831691505092915050565b5f62000540838362000515565b9150826002028217905092915050565b6200055b82620002ec565b67ffffffffffffffff811115620005775762000576620002f6565b5b62000583825462000350565b62000590828285620004b9565b5f60209050601f831160018114620005c6575f8415620005b1578287015190505b620005bd858262000533565b8655506200062c565b601f198416620005d68662000384565b5f5b82811015620005ff57848901518255600182019150602085019450602081019050620005d8565b868310156200061f57848901516200061b601f89168262000515565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620006be5780860481111562000696576200069562000634565b5b6001851615620006a65780820291505b8081029050620006b68562000661565b945062000676565b94509492505050565b5f82620006d85760019050620007aa565b81620006e7575f9050620007aa565b81600181146200070057600281146200070b5762000741565b6001915050620007aa565b60ff84111562000720576200071f62000634565b5b8360020a9150848211156200073a576200073962000634565b5b50620007aa565b5060208310610133831016604e8410600b84101617156200077b5782820a90508381111562000775576200077462000634565b5b620007aa565b6200078a84848460016200066d565b92509050818404811115620007a457620007a362000634565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620007c98262000406565b9150620007d683620007b1565b9250620008057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006c7565b905092915050565b5f620008198262000406565b9150620008268362000406565b9250828202620008368162000406565b9150828204841483151762000850576200084f62000634565b5b5092915050565b60805160a051613f8e620008805f395f6108f601525f81816112c701526124a70152613f8e5ff3fe608060405234801561000f575f80fd5b50600436106101a7575f3560e01c806370a08231116100f7578063c87b56dd11610095578063e0df5b6f1161006f578063e0df5b6f146104cb578063e985e9c5146104e7578063f28ca1dd14610517578063f2fde38b14610535576101a7565b8063c87b56dd1461044d578063d547cfb71461047d578063dd62ed3e1461049b576101a7565b80639b19251a116100d15780639b19251a146103b5578063a22cb465146103e5578063a9059cbb14610401578063b88d4fde14610431576101a7565b806370a08231146103495780638da5cb5b1461037957806395d89b4114610397576101a7565b80632b968958116101645780634f02c4201161013e5780634f02c420146102c3578063504334c2146102e157806353d6fd59146102fd5780636352211e14610319576101a7565b80632b9689581461027f578063313ce5671461028957806342842e0e146102a7576101a7565b806306fdde03146101ab578063081812fc146101c9578063095ea7b3146101f957806318160ddd1461022957806318d217c31461024757806323b872dd14610263575b5f80fd5b6101b3610551565b6040516101c09190612fab565b60405180910390f35b6101e360048036038101906101de919061300f565b6105dd565b6040516101f09190613079565b60405180910390f35b610213600480360381019061020e91906130bc565b61060d565b6040516102209190613114565b60405180910390f35b6102316108f4565b60405161023e919061313c565b60405180910390f35b610261600480360381019061025c9190613281565b610918565b005b61027d600480360381019061027891906132c8565b6109af565b005b6102876111a6565b005b6102916112c5565b60405161029e9190613333565b60405180910390f35b6102c160048036038101906102bc91906132c8565b6112e9565b005b6102cb611418565b6040516102d8919061313c565b60405180910390f35b6102fb60048036038101906102f6919061334c565b61141e565b005b610317600480360381019061031291906133ec565b6114b0565b005b610333600480360381019061032e919061300f565b61158c565b6040516103409190613079565b60405180910390f35b610363600480360381019061035e919061342a565b61162a565b604051610370919061313c565b60405180910390f35b61038161163f565b60405161038e9190613079565b60405180910390f35b61039f611662565b6040516103ac9190612fab565b60405180910390f35b6103cf60048036038101906103ca919061342a565b6116ee565b6040516103dc9190613114565b60405180910390f35b6103ff60048036038101906103fa91906133ec565b61170b565b005b61041b600480360381019061041691906130bc565b611803565b6040516104289190613114565b60405180910390f35b61044b600480360381019061044691906134b2565b611817565b005b6104676004803603810190610462919061300f565b61194c565b6040516104749190612fab565b60405180910390f35b610485612126565b6040516104929190612fab565b60405180910390f35b6104b560048036038101906104b09190613536565b6121b2565b6040516104c2919061313c565b60405180910390f35b6104e560048036038101906104e09190613281565b6121d2565b005b61050160048036038101906104fc9190613536565b612269565b60405161050e9190613114565b60405180910390f35b61051f612293565b60405161052c9190612fab565b60405180910390f35b61054f600480360381019061054a919061342a565b61231f565b005b6001805461055e906135a1565b80601f016020809104026020016040519081016040528092919081815260200182805461058a906135a1565b80156105d55780601f106105ac576101008083540402835291602001916105d5565b820191905f5260205f20905b8154815290600101906020018083116105b857829003601f168201915b505050505081565b6006602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600354821115801561061f57505f82115b15610807575f60085f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610716575060075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561074d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360065f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516107f9919061313c565b60405180910390a3506108ea565b8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108e1919061313c565b60405180910390a35b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600c90816109ab919061376e565b5050565b60035481116110675760085f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610a4d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ab2576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610b70575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610bd8575060065f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610c0f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c176124a4565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c62919061386a565b92505081905550610c716124a4565b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160085f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600160095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610dc7919061386a565b81548110610dd857610dd761389d565b5b905f5260205f20015490508060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600a5f8581526020019081526020015f205481548110610e4457610e4361389d565b5b905f5260205f20018190555060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480610e9d57610e9c6138ca565b5b600190038181905f5260205f20015f90559055600a5f8381526020019081526020015f2054600a5f8381526020019081526020015f208190555060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2082908060018154018082558091505060019003905f5260205f20015f9091909190915055600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610f85919061386a565b600a5f8481526020019081526020015f2081905550818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e03148761104c6124a4565b604051611059919061313c565b60405180910390a3506111a1565b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611193578181611116919061386a565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b61119e8484846124d7565b50505b505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461122a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b7f000000000000000000000000000000000000000000000000000000000000000081565b6112f48383836109af565b5f8273ffffffffffffffffffffffffffffffffffffffff163b141580156113dc575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b815260040161137a9392919061392a565b6020604051808303815f875af1158015611396573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ba91906139c7565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611413576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60035481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114a2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114ac828261281b565b5050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611534576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60085f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611625576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6004602052805f5260405f205f915090505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002805461166f906135a1565b80601f016020809104026020016040519081016040528092919081815260200182805461169b906135a1565b80156116e65780601f106116bd576101008083540402835291602001916116e6565b820191905f5260205f20905b8154815290600101906020018083116116c957829003601f168201915b505050505081565b600b602052805f5260405f205f915054906101000a900460ff1681565b8060075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117f79190613114565b60405180910390a35050565b5f61180f3384846124d7565b905092915050565b6118228585856109af565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1415801561190e575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b81526004016118ac959493929190613a1e565b6020604051808303815f875af11580156118c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118ec91906139c7565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611945576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b60605f600d805461195c906135a1565b9050111561199657600d61196f8361283f565b604051602001611980929190613b24565b6040516020818303038152906040529050612121565b5f826040516020016119a89190613b67565b6040516020818303038152906040528051906020012060f81c9050606080600b8360ff1611611a46576040518060400160405280600581526020017f312e706e6700000000000000000000000000000000000000000000000000000081525091506040518060400160405280600f81526020017f666972652d656e67696e652d72656400000000000000000000000000000000008152509050611fcd565b60138360ff1611611ac6576040518060400160405280600581526020017f322e706e6700000000000000000000000000000000000000000000000000000081525091506040518060400160405280601081526020017f68616c6c6f7765656e2d6f72616e6765000000000000000000000000000000008152509050611fcc565b60448360ff1611611b46576040518060400160405280600581526020017f332e706e6700000000000000000000000000000000000000000000000000000081525091506040518060400160405280600d81526020017f636172726f742d6f72616e6765000000000000000000000000000000000000008152509050611fcb565b60478360ff1611611bc6576040518060400160405280600581526020017f342e706e6700000000000000000000000000000000000000000000000000000081525091506040518060400160405280600481526020017f62656572000000000000000000000000000000000000000000000000000000008152509050611fca565b604f8360ff1611611c46576040518060400160405280600581526020017f352e706e6700000000000000000000000000000000000000000000000000000081525091506040518060400160405280600d81526020017f62616e616e612d79656c6c6f77000000000000000000000000000000000000008152509050611fc9565b60568360ff1611611cc6576040518060400160405280600581526020017f362e706e6700000000000000000000000000000000000000000000000000000081525091506040518060400160405280600d81526020017f616e64726f69642d677265656e000000000000000000000000000000000000008152509050611fc8565b60608360ff1611611d46576040518060400160405280600581526020017f372e706e6700000000000000000000000000000000000000000000000000000081525091506040518060400160405280600e81526020017f7368616d726f636b2d677265656e0000000000000000000000000000000000008152509050611fc7565b606b8360ff1611611dc6576040518060400160405280600581526020017f382e706e6700000000000000000000000000000000000000000000000000000081525091506040518060400160405280600981526020017f76657264696772697300000000000000000000000000000000000000000000008152509050611fc6565b60988360ff1611611e46576040518060400160405280600581526020017f392e706e6700000000000000000000000000000000000000000000000000000081525091506040518060400160405280600d81526020017f636572756c65616e2d626c7565000000000000000000000000000000000000008152509050611fc5565b60a38360ff1611611ec6576040518060400160405280600681526020017f31302e706e67000000000000000000000000000000000000000000000000000081525091506040518060400160405280600981526020017f626c7565626572727900000000000000000000000000000000000000000000008152509050611fc4565b60a08360ff1611611f46576040518060400160405280600681526020017f31312e706e67000000000000000000000000000000000000000000000000000081525091506040518060400160405280600d81526020017f6461726b2d6c6176656e646572000000000000000000000000000000000000008152509050611fc3565b60ff8360ff1611611fc2576040518060400160405280600681526020017f31322e706e67000000000000000000000000000000000000000000000000000081525091506040518060400160405280601381526020017f6461726b2d6361726e6174696f6e2d70696e6b0000000000000000000000000081525090505b5b5b5b5b5b5b5b5b5b5b5b5f611fd78661283f565b604051602001611fe79190613ba7565b6040516020818303038152906040526040516020016120069190613c62565b604051602081830303815290604052600c84604051602001612029929190613b24565b604051602081830303815290604052604051602001612049929190613c83565b60405160208183030381529060405290505f8260405160200161206c9190613d16565b60405160208183030381529060405290505f6040518060400160405280600481526020017f227d5d7d00000000000000000000000000000000000000000000000000000000815250905082826040516020016120c9929190613c83565b604051602081830303815290604052816040516020016120ea929190613c83565b6040516020818303038152906040526040516020016121099190613d5d565b60405160208183030381529060405296505050505050505b919050565b600d8054612133906135a1565b80601f016020809104026020016040519081016040528092919081815260200182805461215f906135a1565b80156121aa5780601f10612181576101008083540402835291602001916121aa565b820191905f5260205f20905b81548152906001019060200180831161218d57829003601f168201915b505050505081565b6005602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612256576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600d9081612265919061376e565b5050565b6007602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b600c80546122a0906135a1565b80601f01602080910402602001604051908101604052809291908181526020018280546122cc906135a1565b80156123175780601f106122ee57610100808354040283529160200191612317565b820191905f5260205f20905b8154815290600101906020018083116122fa57829003601f168201915b505050505081565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123a3576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612408576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b5f7f0000000000000000000000000000000000000000000000000000000000000000600a6124d29190613eb1565b905090565b5f806124e16124a4565b90505f60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508460045f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546125b1919061386a565b925050819055508460045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540192505081905550600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166126d5575f8360045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461269a9190613f28565b84846126a69190613f28565b6126b0919061386a565b90505f5b818110156126d2576126c589612909565b80806001019150506126b4565b50505b600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166127a8575f83826127309190613f28565b8460045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127799190613f28565b612783919061386a565b90505f5b818110156127a55761279888612b4e565b8080600101915050612787565b50505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e03148787604051612805919061313c565b60405180910390a3600193505050509392505050565b816001908161282a919061376e565b50806002908161283a919061376e565b505050565b60605f600161284d84612dd0565b0190505f8167ffffffffffffffff81111561286b5761286a61315d565b5b6040519080825280601f01601f19166020018201604052801561289d5781602001600182028036833780820191505090505b5090505f82602001820190505b6001156128fe578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816128f3576128f2613efb565b5b0494505f85036128aa575b819350505050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361296e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506129f9919061386a565b81548110612a0a57612a0961389d565b5b905f5260205f200154905060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480612a6257612a616138ca565b5b600190038181905f5260205f20015f90559055600a5f8281526020019081526020015f205f905560085f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560065f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612bb3576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035f81548092919060010191905055505f60035490505f73ffffffffffffffffffffffffffffffffffffffff1660085f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c5f576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160085f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f20015f9091909190915055600160095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050612d5c919061386a565b600a5f8381526020019081526020015f2081905550808273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612e2c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612e2257612e21613efb565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612e69576d04ee2d6d415b85acef81000000008381612e5f57612e5e613efb565b5b0492506020810190505b662386f26fc100008310612e9857662386f26fc100008381612e8e57612e8d613efb565b5b0492506010810190505b6305f5e1008310612ec1576305f5e1008381612eb757612eb6613efb565b5b0492506008810190505b6127108310612ee6576127108381612edc57612edb613efb565b5b0492506004810190505b60648310612f095760648381612eff57612efe613efb565b5b0492506002810190505b600a8310612f18576001810190505b80915050919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612f58578082015181840152602081019050612f3d565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612f7d82612f21565b612f878185612f2b565b9350612f97818560208601612f3b565b612fa081612f63565b840191505092915050565b5f6020820190508181035f830152612fc38184612f73565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b612fee81612fdc565b8114612ff8575f80fd5b50565b5f8135905061300981612fe5565b92915050565b5f6020828403121561302457613023612fd4565b5b5f61303184828501612ffb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6130638261303a565b9050919050565b61307381613059565b82525050565b5f60208201905061308c5f83018461306a565b92915050565b61309b81613059565b81146130a5575f80fd5b50565b5f813590506130b681613092565b92915050565b5f80604083850312156130d2576130d1612fd4565b5b5f6130df858286016130a8565b92505060206130f085828601612ffb565b9150509250929050565b5f8115159050919050565b61310e816130fa565b82525050565b5f6020820190506131275f830184613105565b92915050565b61313681612fdc565b82525050565b5f60208201905061314f5f83018461312d565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61319382612f63565b810181811067ffffffffffffffff821117156131b2576131b161315d565b5b80604052505050565b5f6131c4612fcb565b90506131d0828261318a565b919050565b5f67ffffffffffffffff8211156131ef576131ee61315d565b5b6131f882612f63565b9050602081019050919050565b828183375f83830152505050565b5f613225613220846131d5565b6131bb565b90508281526020810184848401111561324157613240613159565b5b61324c848285613205565b509392505050565b5f82601f83011261326857613267613155565b5b8135613278848260208601613213565b91505092915050565b5f6020828403121561329657613295612fd4565b5b5f82013567ffffffffffffffff8111156132b3576132b2612fd8565b5b6132bf84828501613254565b91505092915050565b5f805f606084860312156132df576132de612fd4565b5b5f6132ec868287016130a8565b93505060206132fd868287016130a8565b925050604061330e86828701612ffb565b9150509250925092565b5f60ff82169050919050565b61332d81613318565b82525050565b5f6020820190506133465f830184613324565b92915050565b5f806040838503121561336257613361612fd4565b5b5f83013567ffffffffffffffff81111561337f5761337e612fd8565b5b61338b85828601613254565b925050602083013567ffffffffffffffff8111156133ac576133ab612fd8565b5b6133b885828601613254565b9150509250929050565b6133cb816130fa565b81146133d5575f80fd5b50565b5f813590506133e6816133c2565b92915050565b5f806040838503121561340257613401612fd4565b5b5f61340f858286016130a8565b9250506020613420858286016133d8565b9150509250929050565b5f6020828403121561343f5761343e612fd4565b5b5f61344c848285016130a8565b91505092915050565b5f80fd5b5f80fd5b5f8083601f84011261347257613471613155565b5b8235905067ffffffffffffffff81111561348f5761348e613455565b5b6020830191508360018202830111156134ab576134aa613459565b5b9250929050565b5f805f805f608086880312156134cb576134ca612fd4565b5b5f6134d8888289016130a8565b95505060206134e9888289016130a8565b94505060406134fa88828901612ffb565b935050606086013567ffffffffffffffff81111561351b5761351a612fd8565b5b6135278882890161345d565b92509250509295509295909350565b5f806040838503121561354c5761354b612fd4565b5b5f613559858286016130a8565b925050602061356a858286016130a8565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806135b857607f821691505b6020821081036135cb576135ca613574565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261362d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826135f2565b61363786836135f2565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61367261366d61366884612fdc565b61364f565b612fdc565b9050919050565b5f819050919050565b61368b83613658565b61369f61369782613679565b8484546135fe565b825550505050565b5f90565b6136b36136a7565b6136be818484613682565b505050565b5b818110156136e1576136d65f826136ab565b6001810190506136c4565b5050565b601f821115613726576136f7816135d1565b613700846135e3565b8101602085101561370f578190505b61372361371b856135e3565b8301826136c3565b50505b505050565b5f82821c905092915050565b5f6137465f198460080261372b565b1980831691505092915050565b5f61375e8383613737565b9150826002028217905092915050565b61377782612f21565b67ffffffffffffffff8111156137905761378f61315d565b5b61379a82546135a1565b6137a58282856136e5565b5f60209050601f8311600181146137d6575f84156137c4578287015190505b6137ce8582613753565b865550613835565b601f1984166137e4866135d1565b5f5b8281101561380b578489015182556001820191506020850194506020810190506137e6565b868310156138285784890151613824601f891682613737565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61387482612fdc565b915061387f83612fdc565b92508282039050818111156138975761389661383d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f82825260208201905092915050565b50565b5f6139155f836138f7565b915061392082613907565b5f82019050919050565b5f60808201905061393d5f83018661306a565b61394a602083018561306a565b613957604083018461312d565b81810360608301526139688161390a565b9050949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6139a681613972565b81146139b0575f80fd5b50565b5f815190506139c18161399d565b92915050565b5f602082840312156139dc576139db612fd4565b5b5f6139e9848285016139b3565b91505092915050565b5f6139fd83856138f7565b9350613a0a838584613205565b613a1383612f63565b840190509392505050565b5f608082019050613a315f83018861306a565b613a3e602083018761306a565b613a4b604083018661312d565b8181036060830152613a5e8184866139f2565b90509695505050505050565b5f81905092915050565b5f8154613a80816135a1565b613a8a8186613a6a565b9450600182165f8114613aa45760018114613ab957613aeb565b60ff1983168652811515820286019350613aeb565b613ac2856135d1565b5f5b83811015613ae357815481890152600182019150602081019050613ac4565b838801955050505b50505092915050565b5f613afe82612f21565b613b088185613a6a565b9350613b18818560208601612f3b565b80840191505092915050565b5f613b2f8285613a74565b9150613b3b8284613af4565b91508190509392505050565b5f819050919050565b613b61613b5c82612fdc565b613b47565b82525050565b5f613b728284613b50565b60208201915081905092915050565b7f7b226e616d65223a202242414c4c202300000000000000000000000000000000815250565b5f613bb182613b81565b601082019150613bc18284613af4565b915081905092915050565b7f222c226465736372697074696f6e223a224120636f6c6c656374696f6e206f665f8201527f20313030302042414c4c53206275696c74206f6e204552433430342e222c226560208201527f787465726e616c5f75726c223a22222c22696d616765223a2200000000000000604082015250565b5f613c4c605983613a6a565b9150613c5782613bcc565b605982019050919050565b5f613c6d8284613af4565b9150613c7882613c40565b915081905092915050565b5f613c8e8285613af4565b9150613c9a8284613af4565b91508190509392505050565b7f222c2261747472696275746573223a5b7b2274726169745f74797065223a22435f8201527f6f6c6f72222c2276616c7565223a220000000000000000000000000000000000602082015250565b5f613d00602f83613a6a565b9150613d0b82613ca6565b602f82019050919050565b5f613d2082613cf4565b9150613d2c8284613af4565b915081905092915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b757466382c0000000000815250565b5f613d6782613d37565b601b82019150613d778284613af4565b915081905092915050565b5f8160011c9050919050565b5f808291508390505b6001851115613dd757808604811115613db357613db261383d565b5b6001851615613dc25780820291505b8081029050613dd085613d82565b9450613d97565b94509492505050565b5f82613def5760019050613eaa565b81613dfc575f9050613eaa565b8160018114613e125760028114613e1c57613e4b565b6001915050613eaa565b60ff841115613e2e57613e2d61383d565b5b8360020a915084821115613e4557613e4461383d565b5b50613eaa565b5060208310610133831016604e8410600b8410161715613e805782820a905083811115613e7b57613e7a61383d565b5b613eaa565b613e8d8484846001613d8e565b92509050818404811115613ea457613ea361383d565b5b81810290505b9392505050565b5f613ebb82612fdc565b9150613ec683613318565b9250613ef37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613de0565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613f3282612fdc565b9150613f3d83612fdc565b925082613f4d57613f4c613efb565b5b82820490509291505056fea2646970667358221220843e5a586c3511d2541b5ef5ededf382b343827290ca0a1b0092f601ec6d41c864736f6c634300081800330000000000000000000000005f4c28fffbf07c3887b078ee244cb47d9067dee3